# Authentication
Source: https://docs.salesbricks.com/api-reference/getting-started/authentication



To interact with the Salesbricks API, include the `X-SALESBRICKS-KEY` attribute in your request headers. The value for this attribute should be your unique **Public API Token**.

Obtain your Public API Token conveniently under **Settings** -> **Integrations** -> **Public API**.

<Card title="Take me there" icon="rocket-launch" href="https://app.salesbricks.com/admin/settings/integrations/public-api">
  [https://app.salesbricks.com/admin/settings/integrations/public-api](https://app.salesbricks.com/admin/settings/integrations/public-api)
</Card>

## Endpoint URLs

Our API is structured with two distinct endpoints:

### GraphQL API Endpoint

`https://api.salesbricks.com/api/v1/graphql`

### Usage API Endpoint

`https://api.salesbricks.com/api/v2/usage`

In most scenarios, you will primarily interact with the **GraphQL API Endpoint**.


# Idempotent Requests
Source: https://docs.salesbricks.com/api-reference/getting-started/idempotent-requests



To ensure idempotent requests, include the `X-SALESBRICKS-IDEMPOTENT-OPERATION-KEY` header in your requests to Salesbricks.

<Note>
  This key is crucial for identifying and de-duplicating specific requests, safeguarding against unintended duplication.
</Note>

## Header Key

The header key should be `X-SALESBRICKS-IDEMPOTENT-OPERATION-KEY`.

## Header Value

An idempotency key is a **unique-to-you** value generated by you, the client, which the server uses to identify **a specific request** and de-duplicate it from subsequent retries of the same request.

<Tip>
  How you create unique keys is up to you, but we suggest including UUIDs or other unique IDs as part of the value to avoid collisions.
</Tip>

Idempotency keys can be up to 255 characters long.

The key should be used to identify the request, not just the data being sent (as even failure requests are saved).

We recommend generating and storing a key per-request-to-Salesbricks (see example below).

## Handling of Duplicate Idempotency Keys

### Subsequent Requests with the same idempotency and same payload

Salesbricks saves the response of the first request made for any given idempotency key, regardless of whether it succeeded or failed.

Subsequent requests with the same key return the same result.

This means if you received an error response on a request made with an idempotency key, a following request using that same key will return that same error response.

This is true for any error response, including 500 errors, as long as the request actually made it to Salesbricks' servers.

### Subsequent Requests with the same idempotency key but a different payload

The idempotency system also compares incoming requests to the original request and errors, unless they're the same, to prevent accidental misuse.

If you send a request with the same key but a different payload, you will receive a status code `400` error in response.

### Duplicate Concurrent Requests with the same idempotency keys

If you send 2 requests with the same idempotency key to Salesbricks, the requests will be processed serially, and the one which is processed later will return a status code `409` to indicate a conflict.

## Example Implementation

Let's say you would like to report usage on an order tracked in Salesbricks. Let's also say you track the usage for the order internally using the timestamp at which the usage occurred.

One approach you could take is to create a table called `SalesbricksUsageReportingRequests` in your database, which could look something like:

| DB column name                              | Description                                                                                                      |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **`salesbricks_idempotent_key` (pk, uuid)** | A **UUID** which is your idempotency key value, that you generate when you make the usage request to Salesbricks |
| **`internal_usage_id` (str)**               | The ID you use to identify usage internally in your system                                                       |
| **`created_at` (optional, timestamp)**      | Timestamp at which you make the request to Salesbricks, for debugging                                            |
| **`response_code` (optional, int)**         | Response code you received from Salesbricks, for debugging                                                       |
| **`response` (optional, jsonb str)**        | Response payload you received from Salesbricks, for debugging                                                    |

Then, when you report your usage, you:

<Steps>
  <Step>
    Create a row in `SalesbricksUsageReportingRequests` storing the `created_at` timestamp, `internal_usage_id` and `salesbricks_idempotent_key`.
  </Step>

  <Step>
    Make the request to Salesbricks, specifying the `salesbricks_idempotent_key` in the `X-SALESBRICKS-IDEMPOTENT-OPERATION-KEY` header.
  </Step>

  <Step>
    Save the response you get back in the `SalesbricksUsageReportingRequests` table.
  </Step>
</Steps>

If you got an error response such as a `400`, in which you sent an invalid request where the usage was not successfully reported, you can adjust the sending code to send the correct payload.

Then, retry the steps above, generating a new `salesbricks_idempotent_key` for the new request.


# Overview
Source: https://docs.salesbricks.com/api-reference/getting-started/overview



Welcome to the Salesbricks GraphQL API – the gateway to seamless access and management of your subscriptions and orders.

Our API offers a robust, introspectable schema, empowering you to effortlessly explore and interact with its extensive capabilities.

<Tip>
  Before you begin, ensure you have read the [Authentication](/api-reference/getting-started/authentication) guide to find your `X-SALESBRICKS-KEY` and the correct **endpoint** for your use case.
</Tip>

## Setting up an Apollo Client

In this guide, we leverage Apollo Client, extending the example from their documentation [here](https://www.apollographql.com/docs/react/networking/authentication/).

```javascript JavaScript theme={null}
import { ApolloClient, createHttpLink, InMemoryCache } from '@apollo/client';
import { setContext } from '@apollo/client/link/context';

// discovered using the Authentication guide
const SALESBRICKS_API_ENDPOINT = 'https://api.salesbricks.com/api/v1/graphql';
const SALESBRICKS_API_TOKEN = '00000000-0000-0000-0000-000000000000';

const httpLink = createHttpLink({
  uri: SALESBRICKS_API_ENDPOINT,
});

const authLink = setContext((_, { headers }) => {
  return {
    headers: {
      ...headers,
      'X-SALESBRICKS-KEY': SALESBRICKS_API_TOKEN
    }
  }
});

const client = new ApolloClient({
  link: authLink.concat(httpLink),
  cache: new InMemoryCache()
});
```

## Query the schema

Once your client is configured, make queries following the defined schema.

Below is an example query to retrieve all orders:

### Example Query

```javascript JavaScript theme={null}
client
  .query({
    query: gql`
      query {
        companyOrders {
          orders {
            id
            buyer {
              id
              name
            }
          }
        }
      }
    `,
  })
  .then((result) => console.log(result));
```

### Example Response

```json JSON theme={null}
{
  "data": {
    "companyOrders": {
      "orders": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "buyer": {
            "id": "00000000-0000-0000-0000-000000000000",
            "name": "Buyer Name"
          },
        }
      ]
    }
  }
}
```

Explore the powerful features of Salesbricks through this concise GraphQL API.

Let's dive in! 🚀


# Manage My Subscription
Source: https://docs.salesbricks.com/api-reference/manage-my-subscription



With the **Manage My Subscription** feature, you can embed a link within your app where your customers can manage their subscriptions (for example, increase license counts or change plans) and manage their payments.

<Steps>
  <Step title="Gather the customer's subscription ID.">
    This is referenced as `subscription_id` within the Webhooks and APIs.

    This data can be captured through our Webhooks (for example, the **order.complete** webhook), or queried using our GraphQL API.
  </Step>

  <Step title="Build a link within your app where the customer can navigate to manage their subscription." />

  <Step title="When the link is clicked, your system will need to make a call to Salesbricks' GraphQL API.">
    <Tip>
      Insert the **subscriptionId** as the variable within the call below.

      For more guidance with using the GraphQL API, refer to our [API Reference](/api-reference/getting-started/overview).
    </Tip>

    `https://api.salesbricks.com/api/v1/graphql`

    ```graphql GraphQL theme={null}
    mutation($subscriptionId: String!){
      createSubscriptionToken(subscriptionId: $subscriptionId){
        token {
          id
          expiresAt
          buyer {
            id
          }
        }
      }
    }
    ```

    The response to this call includes a temporary access token:

    ```json JSON theme={null}
    {
      "data": {
        "createSubscriptionToken": {
          "token": {
            "id": "546c21827-8009-4f13-933d-22c8c8a9fb9a",
            "expiresAt": "2024-01-05T23:38:16.667405+00:00",
            "buyer": {
              "id": "997c5c51-17a5-4759-956e-bb87f7afd289"
            }
          }
        }
      }
    }
    ```
  </Step>

  <Step title="Append the token ID from the response to the following base URL to create the customer-specific subscription link:">
    `https://app.salesbricks.com/subscription-management/` + `<TOKEN_ID>`

    **Example:** `https://app.salesbricks.com/subscription-management/546c21827-8009-4f13-933d-22c8c8a9fb9a`
  </Step>

  <Step title="Launch this URL in a separate tab for the best experience." />
</Steps>


# Delete a usage entry
Source: https://docs.salesbricks.com/api-reference/usage/delete

DELETE /usage
Use this API to delete an existing usage entry.

<Info>
  To use this endpoint, ensure that you are using the `v2/usage` API endpoint:

  `https://api.salesbricks.com/api/v2/usage`
</Info>


# Overview
Source: https://docs.salesbricks.com/api-reference/usage/overview



When implementing a usage-based plan on Salesbricks, your customers are charged based on the quantity / count used over a certain period, referred to as **Final value** in the UI.

## Counter / Final value

With **final value** measurement, tally up all billable events over a set time period. This approach is suitable for measuring cumulative usage, such as the total number of API calls in a month.

### Example

<Frame>
  <img alt="final-value" />
</Frame>

Calculation is `sum(billable events) * unit price = total`.

In the illustrated graph,

(6 + 4 + 8 + 5 + 3) \* \$2 = \$52

### Use cases

<AccordionGroup>
  <Accordion title="API Usage">
    Number of API calls used in a month.
  </Accordion>

  <Accordion title="Exported Documents">
    Count of document exports by a customer.
  </Accordion>

  <Accordion title="Service Requests">
    Total service requests made by a client.
  </Accordion>
</AccordionGroup>

## Simple API Calls

Integrating usage data with Salesbricks requires just one simple API call:

`https://api.salesbricks.com/api/v2/usage`

Learn more about using your Public API token to authenticate API calls: [Authentication](/api-reference/getting-started/authentication)


# Update a usage entry
Source: https://docs.salesbricks.com/api-reference/usage/patch

PATCH /usage
Use this API to update an existing usage entry.

<Info>
  To use this endpoint, ensure that you are using the `v2/usage` API endpoint:

  `https://api.salesbricks.com/api/v2/usage`
</Info>


# Submit a usage entry
Source: https://docs.salesbricks.com/api-reference/usage/post

POST /usage
Use this API to increment a final value counter for a customer.

<Info>
  To use this endpoint, ensure that you are using the `v2/usage` API endpoint:

  `https://api.salesbricks.com/api/v2/usage`
</Info>


# invoice.past.due
Source: https://docs.salesbricks.com/api-reference/webhooks/invoice/past-due



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `invoice.past.due` webhook is triggered when an **Invoice** exceeds its past due date.

## Payload format

Your configured endpoint will receive an [Invoice](/api-reference/webhooks/invoice/payload) payload.


# Invoice Webhook Payload
Source: https://docs.salesbricks.com/api-reference/webhooks/invoice/payload



## Example

```json JSON theme={null}
{
  "invoice": {
    "due_at": "2023-01-28T02:43:21.859117Z",
    "due_days": 30,
    "ends_at": "2023-01-28T23:59:59.999999Z",
    "id": "16eda8d7-7418-4aa1-bd07-41e6430688bc",
    "invoice_number": "16eda8d7-0",
    "is_partial_agreement": false,
    "num_days": 0,
    "order": {
      "agreement_number": 1,
      "billing_schedule": "annually",
      "buyer": {
        "address": {
          "city": "Address City",
          "country": "Address Country",
          "id": "cccccccc-cccc-cccc-cccc-cccccccccccc",
          "line_1": "123 Address Line 1",
          "line_2": "Address Line 2 ",
          "region": "Address Region",
          "zip": "00000"
        },
        "external_id": null,
        "id": "77fc9165-7eb4-4ded-9480-437864dcba64",
        "name": "Example Co."
      },
      "chain_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "closed_at": "2022-12-28T02:48:21.859117Z",
      "created_at": "2022-12-28T02:43:21.859117Z",
      "current_order_skus": [
        {
          "quantity": 1,
          "sku": {
            "code": "OrderBrickCode",
            "id": "ffffffff-ffff-ffff-ffff-ffffffffffff",
            "name": "OrderBrick"
          }
        }
      ],
      "ends_at": "2023-12-28T23:59:59.999+00:00",
      "grand_total": 100,
      "id": "c9b23aec-b7b7-4d2e-865d-71e4743ba828",
      "metadata": {},
      "order_type": "standard",
      "primary_user": {
        "company": {
          "address": {
            "city": "Address City",
            "country": "Address Country",
            "id": "cccccccc-cccc-cccc-cccc-cccccccccccc",
            "line_1": "123 Address Line 1",
            "line_2": "Address Line 2 ",
            "region": "Address Region",
            "zip": "00000"
          },
          "external_id": null,
          "id": "77fc9165-7eb4-4ded-9480-437864dcba64",
          "name": "Example Co."
        },
        "email": "buyername@buyer.com",
        "first_name": "BuyerFirstName",
        "last_name": "BuyerLastName"
      },
      "stage": "closed",
      "starts_at": "2022-12-29T00:00:00.000+00:00",
      "updated_at": "2023-12-28T02:43:20.859657Z"
    },
    "paid_amount": 0,
    "paid_at": null,
    "payments": [
      {
        "error": null,
        "id": "4a842a5a-90b3-4f2e-80b0-511ab495226e",
        "invoice": "16eda8d7-7418-4aa1-bd07-41e6430688bc",
        "paid_amount": 8,
        "paid_at": null,
        "payment_method": "CREDIT_CARD",
        "status": "FAILED"
      }
    ],
    "remaining_amount": 8.333333333333334,
    "starts_at": "2022-12-29T00:00:00Z"
  }
}
```


# invoice.payment.failed
Source: https://docs.salesbricks.com/api-reference/webhooks/invoice/payment/failed



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `invoice.payment.failed` webhook is triggered when a **Payment** against an **Invoice** fails.

## Payload format

Your configured endpoint will receive a [Payment](/api-reference/webhooks/payment/payload) payload.


# invoice.payment.succeeded
Source: https://docs.salesbricks.com/api-reference/webhooks/invoice/payment/succeeded



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `invoice.payment.succeeded` webhook is triggered when a **Payment** against an **Invoice** succeeds.

## Payload format

Your configured endpoint will receive a [Payment](/api-reference/webhooks/payment/payload) payload.


# invoice.start
Source: https://docs.salesbricks.com/api-reference/webhooks/invoice/start



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `invoice.start` webhook is triggered when an **Invoice** has been calculated and is ready to receive payments.

## Payload format

Your configured endpoint will receive an [Invoice](/api-reference/webhooks/invoice/payload) payload.


# order.closed.delete
Source: https://docs.salesbricks.com/api-reference/webhooks/order/closed-delete



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `order.closed.delete` webhook is triggered when an **Order** is deleted.

## Payload format

Your configured endpoint will receive an [Order](/api-reference/webhooks/order/payload) payload.


# order.closed.lost
Source: https://docs.salesbricks.com/api-reference/webhooks/order/closed-lost



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `order.closed.lost` webhook is triggered when an **Order** is closed as `Lost`.

## Payload format

Your configured endpoint will receive an [Order](/api-reference/webhooks/order/payload) payload.


# order.complete
Source: https://docs.salesbricks.com/api-reference/webhooks/order/complete



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `order.complete` webhook is triggered when an **Order** is successfully closed and handled by Salesbricks.

## Payload format

Your configured endpoint will receive an [Order](/api-reference/webhooks/order/payload) payload.


# order.end
Source: https://docs.salesbricks.com/api-reference/webhooks/order/end



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `order.end` webhook is triggered when an **Order** reaches its `ends_at` date, and has been ended internally by Salesbricks.

## Payload format

Your configured endpoint will receive an [Order](/api-reference/webhooks/order/payload) payload.


# order.new-ramping-period
Source: https://docs.salesbricks.com/api-reference/webhooks/order/new-ramping-period



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `order.new-ramping-period` webhook is triggered when an **Order** enters into a new [ramping period](/documentation/ramping-structures).

For example: if a ramp was configured to increase the quantity of a brick in Month 3 of a contract, this webhook would trigger on the first day of the third month.

## Payload format

Your configured endpoint will receive an [Order](/api-reference/webhooks/order/payload) payload.


# Order Webhook Payload
Source: https://docs.salesbricks.com/api-reference/webhooks/order/payload



## Example

```json JSON theme={null}
{
  "order": {
    "agreement_number": 1,
    "billing_schedule": "annually",
    "buyer": {
      "address": {
        "city": "Address City",
        "country": "Address Country",
        "id": "cccccccc-cccc-cccc-cccc-cccccccccccc",
        "line_1": "123 Address Line 1",
        "line_2": "Address Line 2 ",
        "region": "Address Region",
        "zip": "00000"
      },
      "external_id": null,
      "id": "77fc9165-7eb4-4ded-9480-437864dcba64",
      "name": "Example Co."
    },
    "chain_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
    "closed_at": null,
    "created_at": "2023-12-28T01:43:21.807242Z",
    "crm_account_id": "ACCOUNT-123",
    "crm_opportunity_id": "OPPORTUNITY-456",
    "current_order_skus": [
      {
        "quantity": 1,
        "sku": {
          "code": "OrderBrickCode",
          "id": "ffffffff-ffff-ffff-ffff-ffffffffffff",
          "name": "OrderBrick"
        }
      }
    ],
    "ends_at": "2024-12-28T23:59:59.999+00:00",
    "grand_total": 100,
    "id": "9fdf8866-f3c0-4cee-beb1-20c7d39528c7",
    "metadata": {},
    "order_type": "standard",
    "primary_user": {
      "company": {
        "address": {
          "city": "Address City",
          "country": "Address Country",
          "id": "cccccccc-cccc-cccc-cccc-cccccccccccc",
          "line_1": "123 Address Line 1",
          "line_2": "Address Line 2 ",
          "region": "Address Region",
          "zip": "00000"
        },
        "external_id": null,
        "id": "77fc9165-7eb4-4ded-9480-437864dcba64",
        "name": "Example Co."
      },
      "email": "buyername@buyer.com",
      "first_name": "BuyerFirstName",
      "last_name": "BuyerLastName"
    },
    "stage": "building",
    "starts_at": "2023-12-29T00:00:00.000+00:00",
    "updated_at": "2023-12-28T02:43:20.807242Z",
    "terminated_at": "2024-01-20T02:00:20.805487Z"
  }
}
```


# order.stage.change
Source: https://docs.salesbricks.com/api-reference/webhooks/order/stage-change



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `order.stage.change` webhook is triggered when an **Order** changes its stage, e.g. from `BUILDING` to `CLOSED`.

## Payload format

Your configured endpoint will receive an [Order](/api-reference/webhooks/order/payload) payload.


# order.terminated
Source: https://docs.salesbricks.com/api-reference/webhooks/order/terminated



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important information about signature verification.
</Tip>

## Purpose

The `order.terminated` webhook is triggered when an **Order** has been flagged for termination.

Since termination can be either scheduled or applied immediately, the timestamp in the `terminated_at` attribute of the payload contains the time at which the termination will be effective.

## Payload format

Your configured endpoint will receive an [Order](/api-reference/webhooks/order/payload) payload.


# Overview
Source: https://docs.salesbricks.com/api-reference/webhooks/overview



Salesbricks provides webhook support, allowing you to extend its functionality by integrating with external systems, services, or custom workflows.

Webhooks enable real-time notifications and data synchronization, enhancing your overall experience with Salesbricks.

## Getting Started

To begin working with webhooks, ensure that you configure and enable the specific webhooks you intend to consume.

You can do this by navigating to **Settings** -> **Integrations** -> **Webhooks**.

<Card title="Take me there" icon="rocket-launch" href="https://app.salesbricks.com/admin/settings/integrations/webhooks">
  [https://app.salesbricks.com/admin/settings/integrations/webhooks](https://app.salesbricks.com/admin/settings/integrations/webhooks)
</Card>

## Payload Signature

To verify that a payload originated from Salesbricks, a signature will be sent in the `X-SALESBRICKS-KEY` header.

Follow the instructions below to validate the signature:

<CodeGroup>
  ```python Python theme={null}
  import hmac
  import base64
  from hashlib import sha512

  def validate_signature(api_token: str, payload: str, header_signature: str):
    """
    :param api_token: Your Salesbricks API Token
    :param payload: the request payload as a string, ex: request.get('body')
    :param header_signature: signature received with payload, ex: request.get('X-SALESBRICKS-KEY')
    """
    import hmac
    from hashlib import sha512
    import base64

    hmac_hash = hmac.new(
      api_token.encode("utf-8"), payload.encode("utf-8"), digestmod=sha512
    )
    expected_signature = base64.b64encode(hmac_hash.digest()).decode()
    if header_signature != expected_signature:
      raise Exception("Invalid webhook signature")
  ```

  ```javascript JavaScript theme={null}
  const express = require('express');
  const crypto = require('crypto');
  const rawBody = require('raw-body');
  require('dotenv').config(); // Load environment variables from .env file

  const app = express();
  const PORT = 3001;
  const API_TOKEN = process.env.API_TOKEN;

  // Middleware to convert the raw payload to a string
  app.use((req, res, next) => {
    rawBody(req, {
      length: req.headers['content-length'],
      limit: '1mb',
      encoding: req.charset || 'utf-8'
    }, (err, string) => {
      if (err) return next(err);
      req.rawBody = string;
      next();
    });
  });

  // Function to generate HMAC signature
  function generateSignature(secret, payload) {
    return crypto
      .createHmac('sha512', secret)
      .update(payload, 'utf8')
      .digest('base64');
  }

  // Webhook endpoint
  app.post('/webhook', (req, res) => {
    const payload = req.rawBody;
    const headerSignature = req.get('X-SALESBRICKS-KEY');

    console.log('Received Raw Payload:', payload);
    console.log('Received Header Signature:', headerSignature);

    const expectedSignature = generateSignature(API_TOKEN, payload);

    console.log('Expected Signature:', expectedSignature);

    if (headerSignature === expectedSignature) {
      console.log('Signatures match. Payload is authentic.');
      res.status(200).send('Webhook signature valid');
    } else {
      console.log('Signatures do not match. Invalid payload.');
      res.status(400).send('Invalid webhook signature');
    }
  });

  // Start the server
  app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
  });
  ```
</CodeGroup>

<Tip>
  Remember to replace the placeholder values (`api_token`, `payload`, `header_signature`) with the actual values from your Salesbricks setup.

  This signature verification process ensures the integrity and authenticity of webhook payloads received from Salesbricks.
</Tip>


# Payment Webhook Payload
Source: https://docs.salesbricks.com/api-reference/webhooks/payment/payload



## Example

```json JSON theme={null}
{
  "payment": {
    "error": null,
    "id": "a94bb985-7bc3-43de-aa79-ec1c9fa7abaf",
    "invoice": {
      "due_at": "2023-01-28T02:43:21.879153Z",
      "due_days": 30,
      "ends_at": "2023-01-28T23:59:59.999999Z",
      "id": "794d16df-03cc-4d6d-a4b7-7884b8b06897",
      "invoice_number": "794d16df-0",
      "is_partial_agreement": false,
      "num_days": 0,
      "order": {
        "agreement_number": 1,
        "billing_schedule": "annually",
        "buyer": {
          "address": {
            "city": "Address City",
            "country": "Address Country",
            "id": "cccccccc-cccc-cccc-cccc-cccccccccccc",
            "line_1": "123 Address Line 1",
            "line_2": "Address Line 2 ",
            "region": "Address Region",
            "zip": "00000"
          },
          "external_id": null,
          "id": "77fc9165-7eb4-4ded-9480-437864dcba64",
          "name": "Example Co."
        },
        "chain_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
        "closed_at": "2022-12-28T02:48:21.879153Z",
        "created_at": "2022-12-28T02:43:21.879153Z",
        "current_order_skus": [
          {
            "quantity": 1,
            "sku": {
              "code": "OrderBrickCode",
              "id": "ffffffff-ffff-ffff-ffff-ffffffffffff",
              "name": "OrderBrick"
            }
          }
        ],
        "ends_at": "2023-12-28T23:59:59.999+00:00",
        "grand_total": 100,
        "id": "39e4611c-481e-4cb8-bc2d-a33b14208dab",
        "metadata": {},
        "order_type": "standard",
        "primary_user": {
          "company": {
            "address": {
              "city": "Address City",
              "country": "Address Country",
              "id": "cccccccc-cccc-cccc-cccc-cccccccccccc",
              "line_1": "123 Address Line 1",
              "line_2": "Address Line 2 ",
              "region": "Address Region",
              "zip": "00000"
            },
            "external_id": null,
            "id": "77fc9165-7eb4-4ded-9480-437864dcba64",
            "name": "Example Co."
          },
          "email": "buyername@buyer.com",
          "first_name": "BuyerFirstName",
          "last_name": "BuyerLastName"
        },
        "stage": "closed",
        "starts_at": "2022-12-29T00:00:00.000+00:00",
        "updated_at": "2023-12-28T02:43:20.879444Z"
      },
      "paid_amount": 0,
      "paid_at": null,
      "remaining_amount": 8.333333333333334,
      "starts_at": "2022-12-29T00:00:00Z"
    },
    "paid_amount": 8,
    "paid_at": null,
    "payment_method": "CREDIT_CARD",
    "status": "FAILED"
  }
}
```


# Schemas
Source: https://docs.salesbricks.com/api-reference/webhooks/schemas

In-depth look at webhook payload schemas

### Order

<ResponseField name="id" type="uuid str">
  Salesbricks ID of the Order
</ResponseField>

<ResponseField name="chain_id" type="uuid str">
  Salesbricks Subscription ID of the Order (legacy field name)
</ResponseField>

<ResponseField name="stage" type="str">
  Stage of the Order
</ResponseField>

<ResponseField name="documents_generated_at" type="ISO8601 datetime str">
  Datetime documents were generated at
</ResponseField>

<ResponseField name="created_at" type="ISO8601 datetime str">
  Datetime order was created
</ResponseField>

<ResponseField name="updated_at" type="ISO8601 datetime str">
  Datetime order was last updated
</ResponseField>

<ResponseField name="starts_at" type="ISO8601 datetime str">
  Datetime order starts at
</ResponseField>

<ResponseField name="buyer" type="Buyer">
  Entity which made this order
</ResponseField>

<ResponseField name="crm_account_id" type="str | null">
  ID of the CRM Account / Company which has been linked to this order
</ResponseField>

<ResponseField name="crm_opportunity_id" type="str | null">
  ID of the CRM Opportunity / Deal which has been linked to this order
</ResponseField>

### Buyer

<ResponseField name="id" type="str">
  Buyer company's ID
</ResponseField>

<ResponseField name="external_id" type="str">
  Buyer company's external ID
</ResponseField>

<ResponseField name="first_name" type="str">
  Buyer user's first name
</ResponseField>

<ResponseField name="last_name" type="str">
  Buyer user's last name
</ResponseField>

<ResponseField name="email" type="str">
  Buyer user's email
</ResponseField>

<ResponseField name="company" type="Company">
  Buyer user's Company
</ResponseField>

### Company

<ResponseField name="id" type="str">
  Buyer company's ID
</ResponseField>

<ResponseField name="external_id" type="str">
  Buyer company's external ID
</ResponseField>

<ResponseField name="name" type="str">
  Company name
</ResponseField>

<ResponseField name="address" type="Address">
  Company address
</ResponseField>

### Address

<ResponseField name="line_1" type="str">
  Street address (e.g. 123 Easy Street)
</ResponseField>

<ResponseField name="line_2" type="str">
  Additional address details (e.g. Suite 123)
</ResponseField>

<ResponseField name="city" type="str">
  City
</ResponseField>

<ResponseField name="region" type="str">
  State or region, if applicable
</ResponseField>

<ResponseField name="zip" type="str">
  Zip or postal code
</ResponseField>

<ResponseField name="country" type="str">
  Country name
</ResponseField>

### Current Order SKUs

<ResponseField name="sku" type="SKU">
  The Plan or Brick setup in Salesbricks
</ResponseField>

<ResponseField name="quantity" type="int">
  How many units of the `sku` are included in the Order
</ResponseField>

### SKU

<ResponseField name="name" type="str">
  The name of the SKU
</ResponseField>

<ResponseField name="code" type="str">
  The internal code set for this SKU

  This field is a set aside for your use - Salesbricks doesn't store any data in it
</ResponseField>


# subscription.inactive
Source: https://docs.salesbricks.com/api-reference/webhooks/subscription/inactive



<Tip>
  Make sure to read the [Webhooks Overview](/api-reference/webhooks/overview) for important
  information about signature verification.
</Tip>

## Purpose

The `subscription.inactive` webhook is triggered at the moment a **Subscription** stops being active — the point at which you can stop providing service to the customer.

This differs from the order-scoped lifecycle webhooks:

* [`order.end`](/api-reference/webhooks/order/end) fires whenever an order reaches its end date, including orders that are immediately replaced by a closed renewal — service may continue uninterrupted.
* [`order.terminated`](/api-reference/webhooks/order/terminated) fires when a termination is *recorded*, which can be well before it takes effect — service continues until the termination date.

`subscription.inactive` fires only when service entitlement actually ends. The payload includes a `reason` field:

| Reason           | Fires when                                                                                                                                                                                                                                      |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `END_NO_RENEWAL` | The subscription's final order reached its end date with no closed renewal, upgrade, or recast taking over. Fires at the end of the last covered day, in the order's timezone.                                                                  |
| `TERMINATED`     | The termination's effective date arrived. The termination date is the first day *without* service, so the event fires at the start of that day — and a termination recorded with an effective date of today (or earlier) fires **immediately**. |

## Timing and delivery

* **No backfill** — only subscriptions that go inactive *after* you enable the webhook will fire. Enabling it will not send events for subscriptions that lapsed in the past.
* **Exactly one event per transition** — if a subscription is revived after the event fired (a late renewal is closed, or a terminated order is reinstated) and later goes inactive again, a new event fires for the new inactive date. Use [`order.complete`](/api-reference/webhooks/order/complete) to observe the revival itself.
* **Automatic retries** — failed deliveries are retried hourly until they succeed.

## Payload format

Your configured endpoint will receive a [Subscription Inactive](/api-reference/webhooks/subscription/payload) payload, containing the `reason`, the `inactive_at` timestamp, the full subscription, and the subscription's final order.


# Subscription Inactive Payload
Source: https://docs.salesbricks.com/api-reference/webhooks/subscription/payload



The payload has four top-level parts:

| Field          | Description                                                                                                                                                                                              |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `reason`       | Why the subscription went inactive: `END_NO_RENEWAL` or `TERMINATED`. See [subscription.inactive](/api-reference/webhooks/subscription/inactive).                                                        |
| `inactive_at`  | The timestamp service entitlement ended. For `END_NO_RENEWAL` this is the end of the final order's last covered day (in the order's timezone); for `TERMINATED` it is the start of the termination date. |
| `subscription` | The subscription, in the same shape as the REST API's subscription detail response (`GET /api/v2/subscriptions/current`) — including customer, contacts, dates, status, and pricing.                     |
| `order`        | The subscription's final order, in the standard [Order](/api-reference/webhooks/order/payload) webhook shape.                                                                                            |

## Example

```json JSON theme={null}
{
  "reason": "END_NO_RENEWAL",
  "inactive_at": "2026-07-22T23:59:59.999999Z",
  "subscription_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
  "subscription": {
    "subscription_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
    "status": "INACTIVE",
    "stage": "CLOSED",
    "starts_at": "2025-07-23",
    "ends_at": "2026-07-22",
    "renews_at": "2026-07-23",
    "terminates_at": null,
    "time_zone": "UTC",
    "auto_renews": false,
    "billing_frequency": "ANNUALLY",
    "transaction_method": "ORDER_FORM",
    "currency": "USD",
    "payment_terms": 30,
    "customer": {
      "customer_id": "77fc9165-7eb4-4ded-9480-437864dcba64",
      "name": "Example Co.",
      "legal_name": "Example Co.",
      "external_id": null,
      "address": {
        "line_1": "123 Address Line 1",
        "line_2": "Address Line 2",
        "city": "Address City",
        "region": "Address Region",
        "zip": "00000",
        "country": "Address Country"
      },
      "stripe_customer_id": null,
      "tax_id": null,
      "subscriptions": []
    },
    "point_of_contact": {
      "person_id": "fc700351-0268-41cf-a0c7-3c5e427d1b47",
      "first_name": "BuyerFirstName",
      "last_name": "BuyerLastName",
      "email": "buyername@buyer.com",
      "preferred_name": null,
      "role": ""
    },
    "signatory_user": {
      "person_id": "fc700351-0268-41cf-a0c7-3c5e427d1b47",
      "first_name": "BuyerFirstName",
      "last_name": "BuyerLastName",
      "email": "buyername@buyer.com",
      "preferred_name": null,
      "role": ""
    },
    "attributed_to": null,
    "products": [
      {
        "name": "Example Product",
        "logo_image": null
      }
    ],
    "accounts_payable_emails": [],
    "metadata": {},
    "sub_total": 10000,
    "grand_total": 10000,
    "grand_total_details": {
      "discount": 0,
      "applied_discount_coupons": []
    },
    "billing_schedule": [
      {
        "starts_at": "2025-07-23T00:00:00Z",
        "ends_at": "2026-07-22T23:59:59.999999Z",
        "sub_total": 10000,
        "grand_total": 10000,
        "grand_total_details": {
          "discount": 0
        }
      }
    ],
    "line_items": [
      {
        "brick_id": "ffffffff-ffff-ffff-ffff-ffffffffffff",
        "brick_name": "Seats",
        "quantity": 10,
        "plan_id": "dddddddd-dddd-dddd-dddd-dddddddddddd",
        "plan_name": "Example Plan",
        "sub_total": 10000,
        "grand_total": 10000,
        "grand_total_details": {
          "discount": 0
        },
        "tiers_breakdown": [
          {
            "quantity": 10,
            "unit_price": "1000.00",
            "sub_total": "10000.00",
            "duration_text": ""
          }
        ],
        "pre_commitment_schedule": null
      }
    ]
  },
  "order": {
    "...": "see the Order Webhook Payload page — identical shape"
  },
  "webhook_run_id": "00000000-0000-0000-0000-000000000000"
}
```

<Note>
  The `subscription` object above is abbreviated — `line_items` and pricing breakdowns follow the
  same structure as the REST API's subscription detail and estimate responses. The `order` object is
  identical to the [Order Webhook Payload](/api-reference/webhooks/order/payload).
</Note>


# BrIQ AI Assistant
Source: https://docs.salesbricks.com/documentation/briq

Ask questions about your revenue data in plain language

<Note>
  BrIQ can make mistakes, always verify important information before acting on it.
</Note>

## Overview

**BrIQ** is Salesbricks' built-in AI assistant that lets you ask questions about your revenue data in plain language. Instead of manually running reports or digging through billing records, you can type a question and get a structured answer in seconds.

BrIQ is best suited for revenue operations tasks:

* checking on invoices
* understanding collection status
* reviewing monthly revenue
* or looking up a specific customer's billing history

## Accessing BrIQ

Click ***Ask BrIQ ✨*** in the left sidebar to open the BrIQ interface. From there:

<Frame>
  <img alt="briq" />
</Frame>

* Type your question in the input bar and press Enter.
* Click ***New conversation +*** in the top-right corner to start a fresh chat at any time.
* Your previous conversations are listed in the left panel so you can return to them.

## What you can ask BrIQ

BrIQ can answer a wide range of questions about invoices, customers, and revenue. Below are some common use cases with example prompts you can use as a starting point.

### Invoice tracking

Use BrIQ to quickly surface outstanding or overdue invoices — across all customers or for a specific one.

**Example prompts:**

* *"Show me all past due invoices"*
* *"What are \[Insert Company] outstanding invoices? Include the invoice number, amount due, due date, days past due, and payment link."*
* *"Which customers have the most unpaid invoices?"*
* *"Show me invoices past due more than 90 days"*

BrIQ will return a structured list with key details and direct links so you can take action immediately.

### Revenue reporting

Ask BrIQ about revenue for a specific time period and it will return MRR totals, a customer-by-customer breakdown, and a narrative summary with key highlights.

**Example prompts:**

* *"How much revenue was generated this month?"*
* *"Compare this month's revenue to last month"*

BrIQ returns the total MRR for the period, how many customers contributed, and a ranked breakdown by customer. From there, you can ask follow-up questions to go deeper — for example, drilling into invoice status (Paid, Outstanding, Past Due), which customers are new, or which products are driving growth.

### Customer billing history

Look up a specific customer's billing picture without leaving the chat.

**Example prompts:**

* *"Show all invoices for \[Customer Name]"*
* *"What is \[Customer]'s renewal date and current spend?"*
* *"Pull all invoices for \[Customer] including paid ones"*

BrIQ will link directly to the customer page in Salesbricks so you can drill in further if needed.

## How BrIQ presents answers

BrIQ formats its answers to be easy to scan and act on:

* **Tables** — For invoice lists or revenue breakdowns, BrIQ organizes data into a structured table with relevant columns.
* **Narrative summary** — After any table, BrIQ provides a short written summary with key highlights (e.g., total billed, total collected, % paid).
* **Direct links** — BrIQ includes clickable links to customer pages and invoice payment pages within its responses.
* **Suggested follow-ups** — At the end of each response, BrIQ offers a few suggested next questions to help you keep exploring.

## Tips for better results

**Be specific about what you want.** If you want a table in a specific format, say so. For example: *"Show \[Company]'s outstanding invoices as a bulleted list with invoice number, amount due, due date, days past due, and payment link."*

**Use the customer's exact name.** If BrIQ doesn't find a match, it may return no results or suggest similar names. Try the name exactly as it appears in Salesbricks.

**Ask follow-up questions.** BrIQ remembers the context of your conversation. You can follow up with *"Now show me the same for last month"* or *"Which of those are more than 60 days overdue?"* without repeating yourself.

**Use the suggested prompts.** After each response, BrIQ surfaces relevant follow-up questions. Clicking one of these is a quick way to drill deeper without typing.

## What BrIQ can't do

BrIQ is a read-only data assistant — it can look things up and surface insights, but it cannot make changes in Salesbricks. Here are some common requests that BrIQ will decline and redirect you to handle manually:

<table>
  <tr>
    <th><u>Action</u></th>
    <th><u>What to do instead</u></th>
  </tr>

  <tr>
    <td>**Undo or reverse a manual payment**</td>
    <td>Go to the invoice's Bill Statement page and use the payment options there, or contact Salesbricks Support.</td>
  </tr>

  <tr>
    <td>**Create a new product or brick**</td>
    <td>Use the product catalog in the Salesbricks admin UI to create and configure bricks.</td>
  </tr>

  <tr>
    <td>**Create a proposal or order**</td>
    <td>Use the order builder in Salesbricks to create a new order or proposal.</td>
  </tr>

  <tr>
    <td>**Cancel or reverse an order**</td>
    <td>Order changes need to be made directly in Salesbricks. Reach out to your support channel if you need help.</td>
  </tr>
</table>

BrIQ also can't answer general product questions about how Salesbricks works (e.g., "How do I set up dunning?") or access data outside of your Salesbricks account.

If BrIQ can't answer your question, reach out to your dedicated Salesbricks support channel for help.

<Info>
  Have feedback on BrIQ? Let your Salesbricks team know in your dedicated Slack channel. We're actively improving BrIQ based on how customers use it.
</Info>


# Countersigning
Source: https://docs.salesbricks.com/documentation/countersigning



## Overview

If your customer opts to complete the order via order form, they are prompted to provide an e-signature to begin executing the contract. Once signed by the customer, the order enters the countersigning phase for seller-side approval.

<Frame>
  <img alt="order form checkout" />
</Frame>

The countersigning process ensures that the order is reviewed and approved by both parties before finalizing. This step is required for fully executing the deal.

### Key events

<Frame>
  <img alt="buyer signature" />
</Frame>

* Once the customer submits a signature, the deal moves to an "Awaiting countersign" status, which is visible on the Orders view.
* Your org's designated **document signer** is notified to countersign.

## Alerts

Salesbricks provides several notification methods to make sure orders are countersigned in a timely manner:

* **In-app alerts:** in Salesbricks, the document signer receives a notification banner at the top of the app with a list of orders awaiting countersignature.
* **Slack notifications:** a message is sent to the Slack channel configured to track order stage changes.
* **Email notifications:** the document signer receives an email with a link to open and countersign the deal in Salesbricks.

### Best practices

* Verify that you've set the correct document signer under <a href="https://app.salesbricks.com/admin/settings/legal">Settings -> Legal</a>. This person will be your org's dedicated countersigner for all transactions completed via order form e-signature.
* Confirm your <a href="https://app.salesbricks.com/admin/settings/integrations/slack">Slack notifications</a> are fully configured, and that the "Order stage changed" and "Signature required" notifications are landing in the correct Slack channels.

## Reverting the order to Open

If the order is awaiting countersignature, but needs to be revised or corrected for any reason before closing, you can revert the order back to an open state:

**1.** Open the countersignature link.

**2.** On the bottom left corner, click the button labeled **"Revert this order to building."**

**3.** Save your updates and resend the order link to the customer for checkout.

If you have any questions or concerns, feel free to reach out to the Salesbricks Support team.


# Credit Pools
Source: https://docs.salesbricks.com/documentation/credit-pools

Grant and apply customer credits to invoices

## Overview

**Credit pools** give you a flexible way to manage customer-level credits. Credits can be manually granted to a customer as part of a commercial agreement, a goodwill gesture, or a joining incentive and are automatically applied to invoices as they are issued. You can also apply credits manually to existing outstanding invoices at any time.

All credit activity is tracked in a running transaction log on the customer's **Credits** tab, giving your team full visibility into what was granted, when, and which invoices it was applied to.

## Accessing the Credits tab

Credits are managed at the customer level. To view a customer's credit pool, go to **Customers**, select the customer, and click the **Credits** tab.

The Credits tab shows:

* **Credit balance** — the current available credit balance in the top-right panel.
* **Transaction log** — a full history of all credit activity, including credits added and credits applied to invoices. Each entry shows the date, type, transaction direction (**Credit** or **Debit**), amount, description, and the related invoice if applicable.

<Frame>
  <img alt="Credits tab showing credit balance and transaction log" />
</Frame>

## Adding a credit manually

1. From the **Credits** tab, click ***Add credit +*** in the top-right corner.
2. In the **New credit** panel, enter the **Amount** and an optional **Description** (e.g. "Joining credits" or "Goodwill adjustment").
3. Click ***Create***.

<Frame>
  <img alt="New credit panel with amount and description fields" />
</Frame>

Once created, the credit appears in the transaction log as a **Manual adjustment** with a **Credit** badge, and the credit balance updates immediately.

## Applying credits to invoices

### Automatic application

Credits are **automatically applied to new invoices** as they are issued. Salesbricks deducts the available credit balance from the invoice amount when the invoice is generated.

### Manual application to outstanding invoices

If the customer already has outstanding invoices, you can apply the credit balance to them manually. After adding a new credit, Salesbricks will prompt you with **"Apply credits to outstanding invoices?"** You can also trigger this at any time by clicking ***Apply to invoices*** in the credit balance panel.

The modal shows a breakdown of how the credits will be applied across outstanding invoices, starting with the oldest first:

* **Invoice** — the invoice the credit will be applied to
* **Current** — the current outstanding balance on the invoice
* **Credit** — the amount of credit being applied
* **After** — the remaining balance after the credit is applied

It also shows the total **Outstanding balance**, **Available credits**, **Credits to be applied**, and **Remaining credit balance** after the application.

<Frame>
  <img alt="Apply credits to outstanding invoices modal" />
</Frame>

Click ***Apply credits*** to confirm. The credits are applied starting with the oldest outstanding invoice and working forward until the available balance is exhausted.

<Info>
  If the credit balance is less than the total outstanding amount, it will be applied across multiple invoices in chronological order until the balance reaches \$0.00.
</Info>


# Custom Billing
Source: https://docs.salesbricks.com/documentation/custom-billing



## Overview

**Custom billing** allows sellers to customize how a customer is billed throughout the duration of a contract. By providing flexibility in invoice amounts and payment collection timing, custom billing can entice prospects with a billing schedule tailored to their needs, while providing sellers with the guardrails to distribute the total contract value (TCV) accurately and seamlessly.

## Key capabilities

**1. Customize invoice amounts within a standard billing schedule**

Set different billing amounts per period (monthly, quarterly, annual) while maintaining the TCV.

**Example:** *Distribute a \$12,000 contract across 3 billing periods with \$6,000, \$4,000, and \$2,000 installments, instead of the default monthly installment of \$4,000.*

**2. Control when the first invoice is sent**

Select from the checkout date or contract start date.

<Tip>
  Click <a href="/quickstart-guide/building-an-order#deal-setup">here</a> to read about why the first invoice date matters.
</Tip>

**3. Manage payment collection timing for credit card transactions**

The customer's credit card will be charged according to the custom schedule.

## Editing an order with custom billing

<Info>
  By default, Salesbricks shows the custom billing schedule on the order form.

  If you would prefer to hide it, please reach out to Salesbricks Support.
</Info>

<Frame>
  <img alt="order-builder-custom-billing" />
</Frame>

When editing an open order, simply click the button on the right side of the page labeled **"View/update billing schedule."**

<Warning>
  If you do not see the "View/update billing schedule" button, your order may be set up to issue just one invoice.

  If so, you will need to change the **billing frequency** of the order, under the section titled "Deal Setup."
</Warning>

Any modification to the contract value (upgrades, downgrades, or changes to line items) will prompt a review of the existing billing schedule.

If the new TCV does not align with the existing custom billing amounts, the system will detect the discrepancy and require corrective action.

### Examples

<AccordionGroup>
  <Accordion title="1. Adding new line items">
    Original TCV: \$12,000 (Custom billed: \$6k, \$4k, \$2k)

    Added item: \$3,000

    Issue → The TCV is now \$15,000, but custom billing still sums to \$12,000
  </Accordion>

  <Accordion title="2. Changing quantities">
    Original quantity: 10 seats at \$100 each

    Updated quantity: 12 seats at \$100 each

    Issue → Custom billing (\$1,000) no longer matches the new TCV (\$1,200)
  </Accordion>
</AccordionGroup>

### Resolution

<Frame>
  <img alt="custom-billing-resolution" />
</Frame>

When discrepancies arise between the TCV and custom billing amounts, users will be presented with the following options:

<table>
  <tr>
    <th><u>Update billing schedule</u></th>
    <th><u>Reset to standard billing and continue</u></th>
  </tr>

  <tr>
    <td>
      * Redirects to the billing schedule editor
      * Users can reallocate the new TCV across custom periods
      * **Requirement: Adjustments must equal the revised TCV to proceed**
    </td>

    <td>
      * Disables custom billing, reverting to equal payment distribution
      * Users can process the order immediately and re-enable custom billing later
    </td>
  </tr>
</table>

## How custom billing is displayed on invoices

**Basic calculation formula**

Line item allocation % = `(Original line item amount / TCV) * 100`

Custom period amount for line item = `(Custom period total * Line item allocation %) / 100`

**Example calculation**

Let's say we have a contract with 2 line items and a TCV of \$12,000, distributed across 3 months using custom billing:

* Month 1: \$6,000 (50% of TCV)
* Month 2: \$4,000 (33.33% of TCV)
* Month 3: \$2,000 (16.67% of TCV)

<Frame>
  <img alt="custom-billing-modal" />
</Frame>

The cost breakdown of the line items is as follows:

<table>
  <tr>
    <th><u>Line Item A</u></th>
    <th><u>Line Item B</u></th>
  </tr>

  <tr>
    <td>
      * Subtotal: \$9,000
      * Tax (7%): \$630
    </td>

    <td>
      * Subtotal: \$3,000
      * Tax (7%): \$210
    </td>
  </tr>
</table>

And here's how the line items will be charged on each invoice:

**Month 1** (\$6,000 - Multiplier: 0.5):

<table>
  <tr>
    <th><u>Line Item A</u></th>
    <th><u>Line Item B</u></th>
  </tr>

  <tr>
    <td>
      * Subtotal: \$9,000 × 0.5 = \$4,500
      * Tax: \$630 × 0.5 = \$315
    </td>

    <td>
      * Subtotal: \$3,000 × 0.5 = \$1,500
      * Tax: \$210 × 0.5 = \$105
    </td>
  </tr>
</table>

<Frame>
  <img alt="custom-billing-invoice-01" />
</Frame>

**Month 2** (\$4,000 - Multiplier: 0.3333):

<table>
  <tr>
    <th><u>Line Item A</u></th>
    <th><u>Line Item B</u></th>
  </tr>

  <tr>
    <td>
      * Subtotal: \$9,000 × 0.3333 = \$3,000
      * Tax: \$630 × 0.3333 = \$210
    </td>

    <td>
      * Subtotal: \$3,000 × 0.3333 = \$1,000
      * Tax: \$210 × 0.3333 = \$70
    </td>
  </tr>
</table>

<Frame>
  <img alt="custom-billing-invoice-02" />
</Frame>

**Month 3** (\$2,000 - Multiplier: 0.1667):

<table>
  <tr>
    <th><u>Line Item A</u></th>
    <th><u>Line Item B</u></th>
  </tr>

  <tr>
    <td>
      * Subtotal: \$9,000 × 0.1667 = \$1,500
      * Tax: \$630 × 0.1667 = \$105
    </td>

    <td>
      * Subtotal: \$3,000 × 0.1667 = \$500
      * Tax: \$210 × 0.1667 = \$35
    </td>
  </tr>
</table>

<Frame>
  <img alt="custom-billing-invoice-03" />
</Frame>

### Key points

* All amounts are rounded to the nearest cent
* Each line item is multiplied by the period's ratio (multiplier)
* Tax is calculated using the same multiplier
* Original tax rates are preserved


# Custom email domain
Source: https://docs.salesbricks.com/documentation/custom-email-domain

Send customer email notifications from your own domain

By default, all customer email notifications are sent from `noreply@salesbricks.com`. However, you can easily enhance your brand's credibility and trust by sending emails from your own custom domain.

If your custom domain is still being set up, or if there are any DNS issues, your customer-facing emails will still be sent reliably from the default Salesbricks email address.

In this guide, we’ll walk you through setting up your custom domain to ensure your brand stands out in all customer communications. This simple step can improve email delivery rates and strengthen your brand’s trustworthiness.

While Salesbricks’ default email is highly reputable, using your own domain reduces the chances of your emails ending up in spam folders, making sure your customers never miss important alerts and notifications.

<Info>
  <p>Salesbricks uses Entri to make connecting your domain quick and easy. All you need is your DNS provider login information, and you can complete the setup without leaving the Salesbricks dashboard.</p>
  <p>Entri supports most common DNS providers, so it's very likely your provider is compatible. However, if your provider isn’t detected, feel free to contact Salesbricks support for manual setup assistance.</p>
  <p>See the full list of <a href="https://developers.entri.com/provider-list">DNS providers</a> that Entri supports.</p>
</Info>

## How to connect your domain to Salesbricks

1. Navigate to **Settings -> Notifications**.

<Card title="Take me there" icon="rocket-launch" href="https://app.salesbricks.com/admin/settings/notifications">
  [https://app.salesbricks.com/admin/settings/notifications](https://app.salesbricks.com/admin/settings/notifications)
</Card>

2. Click the **Setup DNS address** button.

<Frame>
  <img alt="initial" />
</Frame>

3. Enter your **domain** and click the **Connect your domain** button.

<Frame>
  <img alt="enter-domain" />
</Frame>

4. You will be prompted to continue.

<Frame>
  <img alt="entri-start" />
</Frame>

5. Re-enter your **domain** and click the **Continue** button.

<Frame>
  <img alt="re-enter-domain" />
</Frame>

6. Entri will try automatically detect your DNS provider. Otherwise, you will be asked to select your DNS provider to log in.

<Frame>
  <img alt="analyzing-domain" />
</Frame>

7. Log in to your provider to provide **one-time** permission to connect your domain.

<Frame>
  <img alt="login-domain" />
</Frame>

8. Once done, the modal should close and you will see the status of your domain.

<Frame>
  <img alt="entri-end" />
</Frame>

### DNS setup verification

To allow Salesbricks to send emails on your behalf, the following sample CNAME entries will be automatically added to your DNS records:

| Type  | Host                       | Value                                   | TTL |
| ----- | -------------------------- | --------------------------------------- | --- |
| CNAME | em1234.example.com         | u123456.wl123.sendgrid.net              | 300 |
| CNAME | s1.\_domainkey.example.com | s1.domainkey.u123456.wl123.sendgrid.net | 300 |
| CNAME | s2.\_domainkey.example.com | s2.domainkey.u123456.wl123.sendgrid.net | 300 |

If the verification is not successful and your domain status is still not **Active**, try clicking the **Check Connection** button again.

<Frame>
  <img alt="configuring" />
</Frame>

<Info>Note that it can take up to 48 hours for DNS changes to be applied.</Info>

## How to update the email sender address

Once your custom domain is active, you have the option to specify the email address to be used for billing and sales emails.

<Info>The default email address is `noreply@example.com`.</Info>

1. Navigate to [**Settings -> Notifications**](https://app.salesbricks.com/admin/settings/notifications) page.
2. Click the "Edit email addresses" button.

<Frame>
  <img alt="active" />
</Frame>

3. Enter your preferred **sales** username.
4. Enter your preferred **billing** username.
5. Click the **Apply changes** button and close the modal.

<Frame>
  <img alt="edit-email" />
</Frame>

## Customer emails

Now that you've set up both your domain and, optionally, the email sender address you want to use, everything should be seamless.

If Salesbricks detects an issue with your domain, you will see a banner notification when you log in to your dashboard. All customer emails will fallback to `noreply@salesbricks.com` until the issue is resolved, ensuring no notifications are missed.

In the [next section](/documentation/customer-email-notifications), you will find a comprehensive list of customer emails that Salesbricks sends on your behalf.

All emails under the Payment and Invoicing category will use the billing sender, while all emails under the Subscription Lifecycle will use the sales sender.

Emails sent to you and your team will continue to come from `noreply@salesbricks.com`.

| Email Sender | Email Category                                                                               |
| ------------ | -------------------------------------------------------------------------------------------- |
| Billing      | [Payment](/documentation/customer-email-notifications#payment)                               |
| Billing      | [Invoicing](/documentation/customer-email-notifications#invoicing)                           |
| Sales        | [Subscription Lifecycle](/documentation/customer-email-notifications#subscription-lifecycle) |

## FAQ

<AccordionGroup>
  <Accordion title="Why should I use a custom email domain?">
    Using a custom email domain enhances your brand's credibility and trustworthiness. It also improves email delivery rates and reduces the chances of your emails being marked as spam.
  </Accordion>

  <Accordion title="What if my DNS provider is not supported by Entri?">
    If your DNS provider is not supported, please contact Salesbricks support. We will assist you with manual authentication to ensure your domain is set up correctly.
  </Accordion>

  <Accordion title="How long does it take for DNS changes to take effect?">
    DNS changes can take up to 48 hours to be applied. Please be patient and check the status of your domain after this period.
  </Accordion>

  <Accordion title="What happens if there is an issue with my custom domain?">
    If Salesbricks detects an issue with your custom domain, you will see a banner notification when you log in to your dashboard. In the meantime, all customer emails will be sent from `noreply@salesbricks.com` to ensure no notifications are missed.
  </Accordion>

  <Accordion title="Can I update the email sender address after setting up my custom domain?">
    Yes, once your custom domain is active, you can specify the email addresses to be used for billing and sales emails. Navigate to the [**Settings -> Notifications**](https://app.salesbricks.com/admin/settings/notifications) page to update your preferences.
  </Accordion>

  <Accordion title="Who can I contact for support during the setup process?">
    If you need assistance at any point during the setup process, please contact Salesbricks support. Our team is here to help you ensure a smooth and successful setup.
  </Accordion>
</AccordionGroup>


# Customer email notifications
Source: https://docs.salesbricks.com/documentation/customer-email-notifications

What emails will Salesbricks send to your customers

Salesbricks sends emails automatically throughout your customer's lifecycle. This is a complete listing of those emails.

## Payment

### ACH payment failure

|                   |                                                                                                                                                            |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                  |
| **Received by:**  | Your buyer's account payable team                                                                                                                          |
| **Triggered by:** | ACH payment failure                                                                                                                                        |
| **Subject:**      | Action required: Payment failed for \{\{ product\_name }}                                                                                                  |
| **Header:**       | ACH payment failure for \{\{ product\_name }}                                                                                                              |
| **Body:**         | Your payment for \{\{ product\_name }} has failed to process. Please click the button below to update your payment information and reprocess your payment. |
| **Button:**       | Update payment information                                                                                                                                 |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                       |
| **Attachments:**  |                                                                                                                                                            |

### ACH payment processed

|                   |                                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                                                                                                                      |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                                                                                                                                                                                                                                                                             |
| **Triggered by:** | ACH payment is successfully processed                                                                                                                                                                                                                                                                                                                                                                          |
| **Subject:**      | ACH payment processed for \{\{ product\_name }}                                                                                                                                                                                                                                                                                                                                                                |
| **Header:**       | Your ACH payment for \{\{ product\_name }} was successful                                                                                                                                                                                                                                                                                                                                                      |
| **Body:**         | Your ACH debit payment was successful. Your payment details are below, and a receipt is attached.<br /><br />Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }}<br /> |
| **Button:**       |                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                                                                                                                                                                                                                           |
| **Attachments:**  | Payment Receipt                                                                                                                                                                                                                                                                                                                                                                                                |

### ACH payment processing

|                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **Triggered by:** | ACH payment processing initiated                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Subject:**      | ACH payment processing for \{\{ product\_name }}                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Header:**       | Your ACH payment for \{\{ product\_name }} is processing                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Body:**         | Your ACH debit payment is processing. Below are your payment details. A follow-up email will be sent when your payment is successfully processed.<br /><br />Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }}<br /> |
| **Button:**       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                                                                                                                                                                                                                                                                           |
| **Attachments:**  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                |

### Credit card upcoming expiration

|                   |                                                                                                                                                                                                         |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                               |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                                                                      |
| **Triggered by:** | Credit card on file will expire within two months                                                                                                                                                       |
| **Subject:**      | Action required: Credit card expiring soon                                                                                                                                                              |
| **Header:**       | Your credit card will expire soon                                                                                                                                                                       |
| **Body:**         | The credit card on file for \{\{ product\_name }} will expire on \{\{ expiration\_date }}. Please update your payment information by clicking the button below to ensure future payments are processed. |
| **Button:**       | Update payment information                                                                                                                                                                              |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                    |
| **Attachments:**  |                                                                                                                                                                                                         |

### Credit card payment failure

|                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                                                                                                                                                                                                                                                                                                                           |
| **Triggered by:** | Credit card payment failure                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Subject:**      | Action required: Payment failed for \{\{ product\_name }}                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Header:**       | Credit card payment failure for \{\{ product\_name }}                                                                                                                                                                                                                                                                                                                                                                                                        |
| **Body:**         | Your payment for \{\{ product\_name }} has failed. Please click the button below to update your payment information and reprocess your payment.<br /><br />Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }}<br /> |
| **Button:**       | Update payment                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                                                                                                                                                                                                                                                                         |
| **Attachments:**  |                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

### Credit card payment success

|                   |                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                                                                                                                        |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                                                                                                                                                                                                                                                                               |
| **Triggered by:** | Credit card payment successfully processed                                                                                                                                                                                                                                                                                                                                                                       |
| **Subject:**      | Credit card payment processed for \{\{ product\_name }}                                                                                                                                                                                                                                                                                                                                                          |
| **Header:**       | Your credit card payment for \{\{ product\_name }} was successful                                                                                                                                                                                                                                                                                                                                                |
| **Body:**         | Your credit card payment was successful. Below are your payment details, and a receipt is attached.<br /><br />Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }}<br /> |
| **Button:**       |                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                                                                                                                                                                                                                             |
| **Attachments:**  | Receipt                                                                                                                                                                                                                                                                                                                                                                                                          |

### Renewal ACH payment failure

|                   |                                                                                                                                                                         |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                               |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                                      |
| **Triggered by:** | Order renewal ACH payment failure                                                                                                                                       |
| **Subject:**      | Action required: Payment failed for \{\{ product\_name }} renewal                                                                                                       |
| **Header:**       | ACH payment failure for your \{\{ product\_name }} renewal                                                                                                              |
| **Body:**         | Your payment for your \{\{ product\_name }} renewal has failed to process. Please click the button below to update your payment information and reprocess your payment. |
| **Button:**       | Update payment information                                                                                                                                              |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                    |
| **Attachments:**  |                                                                                                                                                                         |

### Renewal ACH payment processed

|                   |                                                                                                                                                                                                                                                                                                                                                                                                          |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                                                                                                                |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                                                                                                                                                                                                                                                                       |
| **Triggered by:** | Order renewal ACH payment is successfully processed                                                                                                                                                                                                                                                                                                                                                      |
| **Subject:**      | ACH payment processed for \{\{ product\_name }} renewal                                                                                                                                                                                                                                                                                                                                                  |
| **Header:**       | Your ACH payment for your \{\{ product\_name }} renewal was successful                                                                                                                                                                                                                                                                                                                                   |
| **Body:**         | Your ACH debit payment was successful. Your payment details are below, and a receipt is attached.<br /><br />Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }} |
| **Button:**       |                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                                                                                                                                                                                                                     |
| **Attachments:**  | Payment Receipt, Order Form                                                                                                                                                                                                                                                                                                                                                                              |

### Renewal ACH payment processing

|                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Triggered by:** | Order renewal ACH payment processing initiated                                                                                                                                                                                                                                                                                                                                                                                                           |
| **Subject:**      | ACH payment processing for \{\{ product\_name }} renewal                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Header:**       | Your ACH payment for your \{\{ product\_name }} renewal is processing                                                                                                                                                                                                                                                                                                                                                                                    |
| **Body:**         | Your ACH debit payment is processing. Below are your payment details. A follow-up email will be sent when your payment is successfully processed.<br /><br />Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }} |
| **Button:**       |                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                                                                                                                                                                                                                                                                     |
| **Attachments:**  |                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### Renewal credit card payment successful

|                   |                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                                                                                                                        |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                                                                                                                                                                                                                                                                               |
| **Triggered by:** | Order renewal credit card payment successfully processed                                                                                                                                                                                                                                                                                                                                                         |
| **Subject:**      | Credit card payment processed for \{\{ product\_name }} renewal                                                                                                                                                                                                                                                                                                                                                  |
| **Header:**       | Your credit card payment for your \{\{ product\_name }} renewal was successful                                                                                                                                                                                                                                                                                                                                   |
| **Body:**         | Your credit card payment was successful. Below are your payment details, and a receipt is attached.<br /><br />Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }}<br /> |
| **Button:**       |                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                                                                                                                                                                                                                             |
| **Attachments:**  | Payment Receipt, Order Form                                                                                                                                                                                                                                                                                                                                                                                      |

## Subscription Lifecycle

### Share link to active order

|                   |                                                                                                                           |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                 |
| **Received by:**  | Your nominated email                                                                                                      |
| **Triggered by:** | Customer shares an order at checkout                                                                                      |
| **Subject:**      | Link shared: Your \{\{ product\_name }} order                                                                             |
| **Header:**       | A link to your \{\{ product\_name }} order has been shared with you                                                       |
| **Body:**         | \{\{ buyer\_name }} has shared order \{\{ order\_code }} for \{\{ product\_name }} with you. Click “Go to order” to view. |
| **Button:**       | Go to order                                                                                                               |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                      |
| **Attachments:**  |                                                                                                                           |

### Renewal order completed (order form)

|                   |                                                                                                                                |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                      |
| **Received by:**  | Your buyer's accounts payable team                                                                                             |
| **Triggered by:** | Order renewal is completed via order form                                                                                      |
| **Subject:**      | \{\{ product\_name }} renewal confirmation                                                                                     |
| **Header:**       | \{\{ product\_name }} renewal confirmation (\{\{ order\_code }})                                                               |
| **Body:**         | Your order renewal for \{\{ seller\_name }} \{\{ product\_name }} is complete. A copy of your executed order form is attached. |
| **Button:**       |                                                                                                                                |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                           |
| **Attachments:**  |                                                                                                                                |

### Order form signature required

|                   |                                                                                                                                               |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                     |
| **Received by:**  | Your buyer's nominated signatory                                                                                                              |
| **Triggered by:** | Customer specifies an alternative signatory                                                                                                   |
| **Subject:**      | Action needed: Sign for your \{\{ product\_name }} order                                                                                      |
| **Header:**       | Your signature is needed to complete your \{\{ product\_name }} order                                                                         |
| **Body:**         | Your signature has been requested on order #\{\{ order\_code }} for \{\{ product\_name }}. Click the button below to view the order and sign. |
| **Button:**       | Go to order                                                                                                                                   |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                          |
| **Attachments:**  |                                                                                                                                               |

### Upcoming auto-renewal

|                   |                                                                                                                                                      |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                            |
| **Received by:**  | Your buyer's nominated point of contact                                                                                                              |
| **Triggered by:** | Auto-renewal occurs in \{\{ X }} days                                                                                                                |
| **Subject:**      | Upcoming auto-renewal for \{\{ product\_name }}                                                                                                      |
| **Header:**       | Your \{\{ product\_name }} order will auto-renew on \{\{renewal date}}                                                                               |
| **Body:**         | Your subscription for \{\{ product\_name }} will automatically renew on \{\{renewal date}} for \$\{\{renewal amount}}. No further action is required |
| **Button:**       |                                                                                                                                                      |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                 |
| **Attachments:**  |                                                                                                                                                      |

### Subscription terminating

|                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Received by:**  | Your buyer's nominated point of contact                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Triggered by:** | Subscription is scheduled to terminate                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Subject:**      | Your \{\{ product\_name }} subscription is terminating                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Header:**       | Your \{\{ product\_name }} subscription is terminating                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Body:**         | Your \{\{ product\_name }} subscription with \{\{ seller\_name }} is scheduled to end on \{\{ termination\_date }}.<br /><br />What this means:<br /><br />Your subscription will remain active until \{\{ termination\_date }}<br /><br />No new charges will be generated after this date<br /><br />You'll retain access through the end of your billing period<br /><br />If this change was unexpected, you can review your subscription below.<br /><br />Order details:<br /><br />Order number<br />\{\{ order\_number }}<br /><br />Termination date<br />\{\{ termination\_date }} |
| **Button:**       | View Subscription                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Attachments:**  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

### Subscription paused

|                   |                                                                                                                                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                    |
| **Received by:**  | Your buyer's nominated point of contact                                                                                                                                                                      |
| **Triggered by:** | Subscription is paused                                                                                                                                                                                       |
| **Subject:**      | Your \{\{ product\_name }} subscription has been paused                                                                                                                                                      |
| **Header:**       | Your \{\{ product\_name }} subscription with \{\{ seller\_name }} has been paused                                                                                                                            |
| **Body:**         | What this means:<br /><br />No new invoices will be issued while your subscription is paused.<br /><br />If this pause was unexpected or you need to make changes, please reach out to \{\{ seller\_name }}. |
| **Button:**       |                                                                                                                                                                                                              |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                         |
| **Attachments:**  |                                                                                                                                                                                                              |

### Subscription resumed

|                   |                                                                                                                                                                                                       |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                             |
| **Received by:**  | Your buyer's nominated point of contact                                                                                                                                                               |
| **Triggered by:** | Subscription is resumed                                                                                                                                                                               |
| **Subject:**      | Your \{\{ product\_name }} subscription has been resumed                                                                                                                                              |
| **Header:**       | Your \{\{ product\_name }} subscription with \{\{ seller\_name }} has been resumed                                                                                                                    |
| **Body:**         | What happens next:<br /><br />\{\{ if resume\_billing\_date }}Billing will continue on \{\{ resume\_billing\_date }}.\{\{ else }}Billing will continue based on your existing agreement.\{\{ endif }} |
| **Button:**       |                                                                                                                                                                                                       |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                  |
| **Attachments:**  |                                                                                                                                                                                                       |

### Order completed (electronic)

|                   |                                                                                                                        |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                              |
| **Received by:**  | Your buyer's nominated point of contact                                                                                |
| **Triggered by:** | Order is completed via ACH or credit card                                                                              |
| **Subject:**      | \{\{ product\_name }} order confirmation                                                                               |
| **Header:**       | \{\{ product\_name }} order confirmation (\{\{ order\_code }})                                                         |
| **Body:**         | Your order for \{\{ seller\_name }} \{\{ product\_name }} is complete. A copy of your executed order form is attached. |
| **Button:**       |                                                                                                                        |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                   |
| **Attachments:**  | Order form receipt PDF                                                                                                 |

### Order completed (order form)

|                   |                                                                                                                        |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                              |
| **Received by:**  | Your buyer's nominated point of contact                                                                                |
| **Triggered by:** | Order is completed via order form                                                                                      |
| **Subject:**      | \{\{ product\_name }} order confirmation                                                                               |
| **Header:**       | \{\{ product\_name }} order confirmation (\{\{ order\_code }})                                                         |
| **Body:**         | Your order for \{\{ seller\_name }} \{\{ product\_name }} is complete. A copy of your executed order form is attached. |
| **Button:**       |                                                                                                                        |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                   |
| **Attachments:**  | Signed order form PDF                                                                                                  |

### Order has been shared with customer

|                   |                                                                                                                                                                     |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                           |
| **Received by:**  | Your nominated email                                                                                                                                                |
| **Triggered by:** | Order is shared with customer                                                                                                                                       |
| **Subject:**      | Complete your \{\{ product\_name }} order                                                                                                                           |
| **Header:**       | Complete your \{\{ product\_name }} order                                                                                                                           |
| **Body:**         | \{\{ seller\_name \|\| order\_owner\_name}} has shared order \{\{ order\_code }} for \{\{ product\_name }} with you. Click the button below to complete your order. |
| **Button:**       | Go to order                                                                                                                                                         |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                |
| **Attachments:**  |                                                                                                                                                                     |

## Invoicing

### Invoice adjustment applied

|                   |                                                                                                                       |
| ----------------- | --------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                             |
| **Received by:**  | Your buyer's accounts payable team                                                                                    |
| **Triggered by:** | Invoice adjustment is applied                                                                                         |
| **Subject:**      | \{\{ product\_name }} invoice adjusted                                                                                |
| **Header:**       | Your \{\{ product\_name }} invoice has been adjusted (\{\{ invoice\_number }})                                        |
| **Body:**         | \{\{ seller\_name }} has adjusted your invoice (\{\{ invoice\_number }}). A copy of the adjusted invoice is attached. |
| **Button:**       |                                                                                                                       |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                  |
| **Attachments:**  | Invoice                                                                                                               |

### Invoice details edited

|                   |                                                                                                                            |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                  |
| **Received by:**  | Your buyer's accounts payable team                                                                                         |
| **Triggered by:** | Invoice details are edited                                                                                                 |
| **Subject:**      | \{\{ product\_name }} invoice updated                                                                                      |
| **Header:**       | Your \{\{ product\_name }} invoice has been updated (\{\{ invoice\_number }})                                              |
| **Body:**         | \{\{ seller\_name }} has updated details on your invoice (\{\{ invoice\_number }}). A copy of the new invoice is attached. |
| **Button:**       |                                                                                                                            |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                       |
| **Attachments:**  | Invoice                                                                                                                    |

### Invoice past due

|                   |                                                                                                                                                                                                                                                        |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                              |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                                                                                                                     |
| **Triggered by:** | Invoice has not been paid on due date                                                                                                                                                                                                                  |
| **Subject:**      | Payment past due for \{\{ product\_name }} (\{\{ invoice\_number }})                                                                                                                                                                                   |
| **Header:**       | Your \{\{ product\_name }} invoice is past due (\{\{ invoice\_number }})                                                                                                                                                                               |
| **Body:**         | Your payment for invoice (\{\{ invoice\_number }}) for \{\{ product\_name }} is past due as of \{\{ payment\_due\_date }}. To make a payment and avoid service disruptions, follow the instructions on the attached invoice or click the button below. |
| **Button:**       | Make a payment                                                                                                                                                                                                                                         |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                                                                   |
| **Attachments:**  | Invoice                                                                                                                                                                                                                                                |

### New invoice is available

|                   |                                                                                                                                                   |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                         |
| **Received by:**  | Your buyer's accounts payable team                                                                                                                |
| **Triggered by:** | Invoice is generated                                                                                                                              |
| **Subject:**      | \{\{ product\_name }} invoice \{\{ invoice\_number }}                                                                                             |
| **Header:**       | Your \{\{ product\_name }} invoice (\{\{ invoice\_number }})                                                                                      |
| **Body:**         | Attached is your invoice for \{\{ product\_name }}. To make a payment, follow the instructions on the attached invoice or click the button below. |
| **Button:**       | Make a payment                                                                                                                                    |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                              |
| **Attachments:**  | Invoice, Order Form                                                                                                                               |


# Deal Shaping
Source: https://docs.salesbricks.com/documentation/deal-shaping

Best practices to help you and your customer benefit from a partnership and close the deal

**Deal shaping** refers to the process of structuring the terms & conditions of an order strategically, to align with both the vendor's and customer's objectives. Proper deal shaping can significantly improve your company's deal closure rate, can assure a mutually beneficial agreement, and encourages a long-term partnership with your customer.

Here are several best practices to follow when building your orders:

## Commercial Terms

Clear, well-defined commercial terms help customize the agreement with a specific customer, reduce friction during negotiations, and improve the chances of closing the deal.

<Tip>
  Under your company settings, allow commercial terms to be shown during the checkout process (<a href="https://support.salesbricks.com/articles/7053503499-show-terms-at-checkout">how-to</a>).

  Any time a commercial terms document is added to an order, your customer will be able to review it during checkout.
</Tip>

### Termination Clause

Adding a **termination for convenience** clause to the commercial terms gives both parties clarity and flexibility regarding contract exit points. This could help customers feel more comfortable signing the deal.

* **Termination for Convenience**:

  You grant the customer some flexibility by allowing them to terminate the agreement at their discretion.

  * **Best practices**:
    * Under your company settings, upload a commercial terms document with the termination for convenience clause. This ensures that the clause applies to all orders by default.
    * Customize the clause at the order level if you need it for specific customers.
    * In your commercial terms, specify an opt-out period during which the customer can cancel the contract without any penalty.

  * **Example**:
    *"The customer may cancel the Order Form at any time before or on the 90th day from the start date mentioned in this Order Form ('Cancellable Period'). Any fees paid for the period between the Start Date and the termination date ('Cancel Date') are non-refundable. Unpaid invoices are still due and must be settled."*

### Price Lock Clause

Offering a price lock clause can help customers feel secure in predicting their budget for the duration of the contract.

* **Best practices**:
  * Offer a price lock for a fixed period (e.g. 12 or 24 months).

  * Define whether this price lock applies to all products and services, or just specific components.

  * Clarify what happens after the price lock period ends (e.g. a capped price increase).

  * **Example**:
    *"Customer pricing is locked for 24 months from the contract start date. After this period, pricing may be subject to an annual adjustment not exceeding 5%."*

### Marketing Clause

It's a common practice to include a marketing clause in agreements. This allows the vendor to leverage the customer's brand and reputation for marketing purposes, while also benefiting the customer by boosting their own visibility.

* **Best practices**:
  * Ask for permission to use the customer's logo, name, or quotes in your marketing materials.

  * Offer options for video testimonials or case studies to build stronger social proof.

  * Specify the types of materials (e.g. website, brochures, videos) where the customer's brand may be used.

  * **Example**:
    *"Customer agrees to provide Vendor the right to use Customer's name, logo, and any testimonials or quotes for promotional purposes, including on Vendor's website, case studies, and other marketing materials."*

## Customization and Flexibility

Customization is a key factor when shaping a deal. Vendors that can tailor their agreements and offerings to meet unique customer needs have a higher chance of securing a deal.

### Custom Terms for Specific Deals

While it's important to have default clauses, customizing certain terms for high-value or strategic clients can show flexibility and increase customer satisfaction. For example:

* Add customer-specific renewal terms based on their growth or budget constraints.
* Introduce custom discount structures for multi-year commitments.

## Additional Considerations

When shaping a deal, it's important to consider the following:

### Simplified Pricing Structures

Complex pricing models may deter potential customers from signing contracts. Keep pricing clear, easy to understand, and flexible enough to meet a variety of customer needs.

### Flexible Contract Lengths

Offering customers flexible contract lengths (monthly, quarterly, or annually) can increase the likelihood of closing deals. Consider offering incentives for longer commitments, such as additional discounts or locked-in pricing.

### Renewal Terms

Ensure that renewal terms are transparent. Clearly communicate the conditions under which the contract renews, the notice period required for termination, and any price adjustments that may occur during renewal.


# Dunning
Source: https://docs.salesbricks.com/documentation/dunning

Handling failed payments in Salesbricks

## Overview

Manage failed payments effortlessly with dunning. Salesbricks automatically classifies payment failures, alerts the right people, and triggers automatic retries so that you can recover revenue without lifting a finger.

<Note>
  To enable dunning for your account, please contact Salesbricks Support.
</Note>

<Tip>
  Automatic payment retries are an opt-in feature. To enable them for your account, go to **Settings → Finance** and turn on ***Automatic retries*** under the Automatic Retries section.
</Tip>

<Frame>
  <img alt="Settings" />
</Frame>

Once enabled globally, retries apply to all orders by default. If you need to turn them off for a specific order, you can do so under ***Additional options → Invoice payment options*** when creating or editing that order.

<Frame>
  <img alt="Order Form" />
</Frame>

## Automatic payment retries

When a payment fails, Salesbricks classifies the failure as either a **soft decline** or a **hard decline** to determine whether an automatic retry is appropriate.

**Soft declines** are failures caused by temporary issues like insufficient funds, a network error, or a payment provider timeout. These are eligible for automatic retry. Salesbricks will schedule up to three retry attempts:

1. **3 days** after the first payment failure
2. **7 days** after the second failure
3. **14 days** after the third failure

Each retry date is calculated from the most recent failure, not from the original payment date. If all three attempts fail, the invoice is marked **Uncollectible**.

**Hard declines** are failures that require the customer to take action like an expired card, an incorrect card number, or a card reported lost or stolen. These are not retried automatically. When a hard decline occurs, Salesbricks sends the customer an email prompting them to update their payment method via the customer portal.

### Collection logs

To see the details of any payment failure, click on the invoice row in the **Billing & Payments** tab to open the **Collection logs** panel. This shows you a snapshot of the invoice's current collection state:

* **Collection status** — the current status of the payment (e.g. Action needed, Retry scheduled)
* **Total payment attempts** — how many times payment has been attempted
* **Last attempt** — the date of the most recent payment attempt
* **Next attempt** — the scheduled date of the next automatic retry, if applicable
* **Failure reason** — the reason returned by the payment provider (e.g. Card declined)
* **Accounts payable emails** — the email addresses on file for this invoice

<Frame>
  <img alt="Collection logs panel showing payment failure details" />
</Frame>

### Invoice log

Scroll down in the Collection logs panel to see the **Invoice log** which provides a full timeline of every event on the invoice, including each payment attempt, status changes, and emails sent to the customer.

If a payment has failed and you want to trigger a retry immediately rather than waiting for the next scheduled attempt, click ***Retry this payment*** in the invoice log.

<Frame>
  <img alt="Invoice log showing payment failure and retry option" />
</Frame>

## Collection statuses

Every invoice in the **Billing & Payments** tab displays a **Collection** status so you can quickly see the state of each payment at a glance.

| Status                | What it means                                                                                                                                          |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Invoice generated** | The invoice has been created but not yet sent to the customer.                                                                                         |
| **Invoice sent**      | The invoice has been delivered to the customer's accounts payable email.                                                                               |
| **Payment failed**    | The payment failed and automatic retries are disabled for this invoice. Manual follow-up is required.                                                  |
| **Retry scheduled**   | The payment failed but Salesbricks has scheduled an automatic retry. No action needed — the system will try again on the next scheduled date.          |
| **Action required**   | The payment failed with a hard decline (e.g. expired card, stolen card). The customer needs to update their payment method before a retry is possible. |
| **Retrying**          | A retry attempt is currently in progress.                                                                                                              |
| **Paid**              | The invoice has been fully collected.                                                                                                                  |
| **Uncollectible**     | All retry attempts have been exhausted and the payment was not collected. Manual follow-up is required.                                                |

## Webhooks

Salesbricks fires webhooks at key points in the payment lifecycle that you can use to trigger actions in your own systems — for example, suspending service on a failed payment and restoring it once collected.

* [**invoice.payment.failed**](/api-reference/webhooks/invoice/payment/failed) — Fired when a payment attempt fails.
* [**invoice.payment.succeeded**](/api-reference/webhooks/invoice/payment/succeeded) — Fired when a payment succeeds, including payments collected via automatic retry.

## Marking an invoice as paid manually

If a payment has been collected outside of Salesbricks (e.g. via bank transfer or check), you can mark the invoice as paid directly in the admin UI from the invoice's Bill Statement page. You can also do this automatically through a finance system integration such as the [Salesbricks QuickBooks Integration](/integrations/quickbooks).


# Managing Your Customer
Source: https://docs.salesbricks.com/documentation/managing-your-customer

A primer on Upgrades, Renewals, Recasts, and Terminations

## Overview

Signing a customer's first Order is only the beginning of the customer's contract journey.

Managing that customer's ongoing and future contracts can be just as, if not more important than, the first contract.

Although many tools out there will help you get to the finish line of a deal (think DocuSign, spreadsheets, and Stripe links), that's where it ends.

This leaves Customer Success teams with the burdensome task of unpacking what was originally sold, and turns the task of managing upgrades, renewals, and recasts into a full-time job.

This is not the case with Salesbricks.

Our thoughtfully designed customer management flow empowers CS teams to upgrade, renew, and recast customers with ease, freeing up their time for more strategic tasks.

Gone are the days of second-guessing if the contact attached in Salesforce, or buried in the Box folder, is the latest one; if the customer's entitlements are up to date from their last upgrade; or pinging the Finance team to help prorate a cancel-and-replace contract.

<Frame>
  <img alt="update-subscription" />
</Frame>

## Definitions and Examples

### Upgrade

Upgrading a contract involves modifying a customer's entitlements for the remainder of the current contract dates.

#### Example

A customer has subscribed to a block of units and is approaching the upper limit. They would like to purchase the next block of units in order to continue service.

However, they do not want to extend the contract beyond the current contract end date.

The new contract would be effective on the **start date defined in the upgrade**, and remain active until the **end date of the base agreement**.

### Renewal

A renewal contract is a continuation of service for a customer.

If the original order's renewal terms are set to **Automatic**, the contract will be auto-renewed with the same entitlements and term details that exist on the previous agreement (minus any one-time discounts applied).

<Tip>
  In the event that a seller does not want to grandfather the customer into a renewal with current pricing terms, the automatic renewal can be overwritten by creating an upgrade to the subscription prior to the end of the current contract.
</Tip>

#### Example

A customer would like to continue service after their contract end date.

Upon the renewal of the contract, they want to add 50 additional user licenses and 100 professional service hours.

These additional products and services would go into effect on the **start date of the renewal** (typically the next day after the original contract end date).

### Recast

A recast is required when a customer wants to scrap the existing contract and create a completely new agreement with different terms, dates, or entitlements.

#### Example

3 weeks in to a 12-month subscription, a customer has decided that a different Product than the one selected in their current contract would be a better fit for their needs.

They would like to replace the current contract with a new one.

They require that the pre-paid cost of the current contract be applied as a credit to the cost of the new Product. They would like this new contract to extend 12 months from the **start date of the recast**.

### Terminate

A customer would like to discontinue service.

#### Example

A customer is required to reduce their spend and has decided to discontinue their services immediately, or at the end of the contract period.

<Note>
  You can set a subscription to terminate on the renewal date, or any other specified date between now and the end of the contract.
</Note>

<Frame>
  <img alt="terminate-subscription" />
</Frame>


# One-Off Invoices
Source: https://docs.salesbricks.com/documentation/one-off-invoices

Bill customers for charges outside of a subscription

## Overview

**One-off invoices** let you bill customers for charges that aren't part of a recurring subscription. Use them for consulting fees, implementation work, setup costs, or any other ad-hoc charge.

Unlike subscription invoices, which are generated automatically from a billing cycle, one-off invoices are created manually and do not recur. They appear alongside subscription invoices in the **Billing & Payments** tab, but display a billing frequency of ***Non-recurring*** and a type of ***One-time*** so your customers know it's a one-time charge.

<Info>
  One-off invoices requires the feature to be enabled for your account. If you don't see the option to create an invoice on your Billing page, please reach out to Salesbricks Support.
</Info>

## Creating a one-off invoice

You can create a one-off invoice from two places: the **Billing** page or the **Customer** page. Either entry point opens the same invoice creation form.

### Option 1 — Create an invoice from the Billing page

Go to **Billing** from the main navigation, then click the ***New invoice +*** button in the top-right corner. Select the customer you want to invoice (or create a new one).

<Frame>
  <img alt="billing-page-new-invoice" />
</Frame>

### Option 2 — Create an invoice from the Customer tab

Go to **Customers**, select the customer you want to invoice, and click the **Billing & Payments** tab. Click the ***New invoice +*** button in the top-right corner to open the invoice creation form.

<Frame>
  <img alt="customer-tab" />
</Frame>

### Complete the invoice form

As you fill in the form on the left, a **live PDF preview** on the right updates in real time so you can see exactly what the customer will receive.

**1. Fill in the invoice details**

* **Accounts payable email** — The email address where the invoice will be sent.
* **Purchase order number** *(optional)* — A PO number for the customer's records.
* **Due date** — When payment is expected.
* **Start date / End date** *(optional)* — Define a service period for the charge.
* **Invoice memo** *(optional)* — A short note that appears on the invoice (e.g., "One-time invoice for implementation fees").

<Frame>
  <img alt="account-details" />
</Frame>

<Tip>
  **Custom service period:** The start and end dates let you define exactly when the service was (or will be) delivered, independent of the invoice or due dates. This is useful for charges like consulting retainers ("Apr 1 – Apr 30") or phased implementation work that spans multiple months.
</Tip>

**2. Add one or more charges**

Under **Invoice details**, add each line item you want to bill for:

* **Charge name** — The name of the product or service (e.g., "Implementation").
* **Amount** — The dollar amount for the charge.
* **Description** — A description that appears on the invoice (e.g., "Implementation of premium plan").

<Frame>
  <img alt="invoice-details" />
</Frame>

<Tip>
  **Multiple charges on a single invoice:** Click ***Add charge +*** to bundle several line items into one invoice. For example, you could bill "Implementation" at \$1,000 and "User Training" at \$500 together on the same one-off invoice — the customer receives a single document with both charges itemized.
</Tip>

<Info>
  Use descriptive line items like *"January consulting, 10 hours"* rather than just *"Consulting"* so customers clearly understand what they're being charged for.
</Info>

**3. Apply adjustments *(optional)***

If you need to apply a credit or one-time discount, click ***Add adjustment +*** under the **Adjustments** section. Enter the amount and a memo describing the reason.

<Tip>
  **Adjustments** are a flexible way to apply credits, promotional discounts, or goodwill gestures without changing your line item pricing. The adjustment appears as a separate line on the final invoice (e.g., *"Credit for one-time discount: –\$100.00"*), giving customers a clear record of the reduction.
</Tip>

**4. Configure payment options**

Under **Invoice payment**, you can optionally check ***Process the amount due in the invoice using a saved payment method*** to enable auto-pay. If enabled, choose when the charge should run:

<table>
  <tr>
    <th><u>Option</u></th>
    <th><u>Behavior</u></th>
  </tr>

  <tr>
    <td>**Charge on invoice issue date**</td>
    <td>Auto-pay runs immediately when the invoice is issued. Outstanding invoices will be charged immediately upon switching to this setting.</td>
  </tr>

  <tr>
    <td>**Charge on invoice due date**</td>
    <td>Auto-pay runs on the due date based on the set payment terms (e.g., Net 30).</td>
  </tr>

  <tr>
    <td>**Charge on invoice due date (order form only)**</td>
    <td>Auto-pay runs on the due date for order form orders only. Electronic payment orders are charged immediately.</td>
  </tr>
</table>

**5. Attach documents *(optional)***

Under **Attachments**, click ***Add document +*** to upload supporting files like a statement of work or signed agreement. You can provide an optional document name and drag and drop a PDF, or click to select a file.

<Info>
  Attachments on one-off invoices are stored at the invoice level only — they are not inherited by subscriptions or other invoices.
</Info>

**6. Choose how to deliver the invoice**

Under **Invoice delivery**, pick one of:

* **Create and send invoice now** — The invoice is created and the customer is notified via email.
* **Create only** — The invoice is created but not sent. You can send it later from the bill statement page.

## After the invoice is created

Once created, the one-off invoice appears in the customer's **Billing & Payments** tab labeled as ***One-time*** to distinguish it from subscription invoices. You can click into it at any time to open the **Bill statement** page, where you can:

* **View the summary** — See invoice totals, line items, service period, billing frequency, and payment terms in one place.
* **Record a payment** — Manually mark the invoice as paid if payment was collected outside of Salesbricks.
* **Share the invoice** — Send or resend the invoice to the customer.
* **Adjust the invoice amount** — Modify the total if needed.
* **Edit details** — Update fields like the memo, PO number, or attachments.
* **Regenerate or download the PDF** — Get a fresh copy of the invoice document.

The **Invoice log** on the right side of the page provides a full audit trail of all activity on the invoice.

<Frame>
  <img alt="invoice-details" />
</Frame>

## Applying a one-off invoice as credit to a new subscription

If a customer has already paid a one-off invoice — for example, a deposit or prepayment — you can apply that invoice as a credit toward a new subscription order. The credit is deducted from the subscription's total contract value at the time the order is created.

To create an order with invoice credit:

1. Go to **Orders** and click ***New order +***.
2. Search for and select the customer.
3. Select ***New subscription with invoice credit*** and click ***Create order***.

<Frame>
  <img alt="Create order with invoice credit" />
</Frame>

4. Build the order as you normally would by selecting the product, plan, add-ons, deal structure, and contract terms.
5. The one-off invoice is automatically reflected as **Adjustment credits** in the pricing summary on the right, reducing the total amount due.

<Frame>
  <img alt="Create order with invoice credit" />
</Frame>

<Tip>
  This adjustment credits will apply even if the one-off invoice is unpaid at the time of creating the order.
</Tip>


# Order Stages
Source: https://docs.salesbricks.com/documentation/order-stages



<Frame>
  <img alt="orders-list" />
</Frame>

## Open

An order is considered open if one of the following states applies:

* the seller is in the process of building the order (sales-led motion)
* the buyer is in the process of building the order (self-serve)
* the buyer and seller are in the process of reviewing contract terms
* the buyer has not yet completed checkout
* the buyer has not yet signed the contract (when checking out via order form e-signature)

## Awaiting countersign

An order is awaiting a countersignature if the buyer has checked out via order form e-signature and signed. This stage indicates to the seller that their legal document signer must countersign to fully execute the contract.

## Closed won

An order is considered closed won when the buyer and seller have agreed to terms, and the contract has been executed by both parties.

## Closed lost

An order is considered closed lost if the buyer no longer agrees to the purchase.

## Closed delete

The seller has deleted the order.

Closed deleted orders will not appear on your Orders table.

## Migrating

Salesbricks allows sellers to import an order from an external source.

After you migrate an order into Salesbricks, you will have the option of manually marking it as closed won, closed lost, or closed delete.


# Order Types
Source: https://docs.salesbricks.com/documentation/order-types

Understanding upgrades, renewals, recasts, and terminations

## Overview

Now that you know how to [structure your pricing](/quickstart-guide/products-plans-bricks/overview), [build an Order](/quickstart-guide/building-an-order), and [configure customer checkout](/quickstart-guide/checkout-invoice-payment-options), you have all the tools needed to close your first Order.

And if you've already closed your first Order, congratulations! You've officially converted a prospect to a happy customer.

Let's say they want to update their subscription - maybe they need to add more licenses, or they want to extend their one-year contract for two more years.

We support four ways to update an Order after the initial close:

* Upgrade
* Renewal
* Recast
* Termination

Read on to learn the differences between each, and when it's appropriate to use one order type over another.

## Upgrade

<div>
  <Frame>
    <img alt="upgrade" />
  </Frame>
</div>

Use an upgrade to **add** more Bricks to a subscription, or to **upsell** the customer to a higher tier Plan.

Any changes will take effect under the current contract dates.

<Warning>
  Upgrades across Products are not allowed.

  If you create an upgrade, you will only be able to choose from Plans and Bricks associated with the Product from the current contract.

  If you're replacing the customer's current Product with a new one, your best bet is to create a [recast](/documentation/order-types#recast) instead.
</Warning>

### Upgrade examples

**Current contract:** Customer has signed a one-year contract for a basic plan, which includes 5 seats at no extra cost.

<AccordionGroup>
  <Accordion title="Example A - Add Seats">
    Three months in, the customer decides that they need to add 3 more seats to the subscription, so you build this into an upgrade for the remaining 9 months.

    #### What happens to the current contract after the upgrade closes?

    This example retains the same Plan from the current contract.

    The subscription will be an aggregate of entitlements across the current contract and all subsequent upgrades (5 seats from the initial + 3 seats from the upgrade, for a total of 8 seats).

    Any other contract terms from the current contract will be replaced by the terms defined in the upgrade.
  </Accordion>

  <Accordion title="Example B - Switch Plans">
    Three months in, the customer wants to upgrade to an advanced plan for the remaining 9 months, which includes 10 seats at no extra cost.

    #### What happens to the current contract after the upgrade closes?

    Since a different Plan was selected, the entitlements from the current contract are replaced by the entitlements of the upgraded Plan.

    Any other contract terms from the current contract will be replaced by the terms defined in the upgrade.
  </Accordion>
</AccordionGroup>

### What happens to invoices?

The billing schedule of the current contract is replaced by the billing schedule outlined in the upgrade.

## Renewal

<div>
  <Frame>
    <img alt="renewal" />
  </Frame>
</div>

Use a renewal to **continue** your customer's subscription.

You may also upgrade the contract (add Bricks or upsell a Plan) when building a renewal.

Any changes will take effect after the current contract has expired.

### Renewal example

**Current contract:** Customer has signed a one-year contract with manual renewal terms (must be agreed upon by the buyer).

8 months later, the customer decides that they are happy with their subscription, and are ready to set up a renewal for another year.

### Total expected renewal spend

The total expected renewal amount is calculated based on the flat renewal cost of the current plan while keeping the same quantity of bricks. Regular discounts that apply to the plan are included in this calculation. However, any one-time bricks purchased in the original order are excluded from the renewal amount, ensuring that only the recurring elements are considered. Likewise, any one-time discounts applied to the original purchase are not factored into the renewal calculation.

**Included:**

* plan subscription fee
* additional subscription bricks in that exact quantity
* pre-commitment bricks in that amount
* sales (recurring) discounts on both the plan and any add-on bricks

**Not Included:**

* one time bricks
* usage bricks with no pre-commitment
* one time discounts on any of the bricks

### What happens to the current contract after the renewal closes?

A renewal is a continuation of the customer's subscription under new dates.

The current contract remains active until its end date, after which, the renewal begins.

### What happens to invoices?

The customer will continue to receive invoices according to the billing schedule of the current contract.

Once the renewal begins, the customer will receive invoices according to the billing schedule outlined in the renewal.

## Recast

<div>
  <Frame>
    <img alt="recast" />
  </Frame>
</div>

Use a recast to **replace** the terms, dates, and/or entitlements of the current contract.

### Recast examples

**Current contract:** Customer has signed an upcoming 6-month contract, from March 1st to September 30th.

<AccordionGroup>
  <Accordion title="Example A - New Contract Dates">
    Before the contract start date, they decide that they want the subscription to run from March 15th to October 14th instead, so you build these new dates into a recast.
  </Accordion>

  <Accordion title="Example B - Switch Products">
    Two weeks in, the customer realizes that one of your other Products is a much better fit for their needs, so you build a recast that replaces their current subscription with the new Product.
  </Accordion>
</AccordionGroup>

### What happens to the current contract after the recast closes?

The current contract is considered superseded (replaced by the terms of the recast), essentially rendering it inactive.

### What happens to invoices?

The billing schedule of the current contract is replaced by the billing schedule outlined in the recast.

Any amount from the current contract that the customer has already paid, or has been billed for, will be added to the recast as a prorated discount.

## Termination

<div>
  <Frame>
    <img alt="termination" />
  </Frame>
</div>

Use a termination to **end** a customer's subscription.

You may schedule the subscription to terminate on the expected renewal date, or any date before the end of the current contract.

### Termination examples

**Current contract:** Customer has signed a 1-year contract.

<AccordionGroup>
  <Accordion title="Example A - Terminate on Renewal Date">
    The subscription is set to auto-renew at the end of the current contract.

    90 days before the renewal date, the customer decides that they no longer want to renew beyond the current contract, so you update the subscription to terminate on the renewal date.
  </Accordion>

  <Accordion title="Example B - Terminate on Specific Date">
    6 months in, the customer still hasn't implemented the entitlements and asks to terminate the contract at the end of the month.

    You update the subscription to terminate on the last day of the current month.
  </Accordion>
</AccordionGroup>

### What happens to the current contract after the termination is scheduled?

Before the termination date, the subscription will remain active, and the customer will continue to have access to their entitlements.

<Tip>
  Salesbricks does not control your customers' entitlements, but we do offer APIs and Webhooks that can integrate into your system to automate the process of disabling entitlements on the termination date.
</Tip>

After the termination date, the subscription will be rendered inactive.

### What happens to invoices?

Customer will continue to be billed until the termination date.


# Payment Communications
Source: https://docs.salesbricks.com/documentation/payment-communications

How to tell your customers that they owe you money

Salesbricks allows you to send your customers an invoice for the Products they've used or have subscribed to.

Salesbricks powers all invoice communications between you and your customer.

Most subscriptions have a recurring billing schedule, so it's possible to automate sending out invoices.

Here are examples of messages that your company admin can customize in the message editor:

### Invoice Sent

<Frame>
  <img alt="invoice-sent" />
</Frame>

### Invoice Due

<Frame>
  <img alt="invoice-due" />
</Frame>

### Invoice Past Due

<Frame>
  <img alt="invoice-past-due" />
</Frame>

### Credit Card Payment Processed

<Frame>
  <img alt="cc-payment-processed" />
</Frame>

### ACH Payment Processing

<Frame>
  <img alt="ach-payment-processing" />
</Frame>


# Ramping Structures
Source: https://docs.salesbricks.com/documentation/ramping-structures



## Overview

Ramping is a pricing strategy which is used to gradually increase the cost of a subscription as the quantity of enabled units grows over the course of a contract.

Let's illustrate how ramping schedules work by pricing a single contract against two different pricing structures: **flat-rate** pricing and **tiered** pricing.

## Flat-rate ramping

<Tip>
  Read more about flat-rate pricing <a href="/quickstart-guide/products-plans-bricks/creating-a-plan#flat-rate">here</a>.
</Tip>

#### Formula for cost calculation

To calculate the subtotal of each ramping period:

`unit price * quantity * duration`

### Example - flat-rate ramping

#### Contract terms

**Start date**: December 14, 2023

**Contract period**: 12 months

#### Ramping schedule

| Ramping period | Start date    | Quantity  |
| -------------- | ------------- | --------- |
| 1st            | December 2023 | 50 units  |
| 2nd            | April 2024    | 100 units |
| 3rd            | July 2024     | 150 units |

#### Pricing structure

\$39 per unit monthly

#### Cost breakdown

| Ramping period | Duration                                      | Cost                                     |
| -------------- | --------------------------------------------- | ---------------------------------------- |
| 1st            | 4 months (December 14, 2023 - April 13, 2024) | \$39 \* 50 units \* 4 months = \$7,800   |
| 2nd            | 3 months (April 14, 2024 - July 13, 2024)     | \$39 \* 100 units \* 3 months = \$11,700 |
| 3rd            | 5 months (July 14, 2024 - December 13, 2024)  | \$39 \* 150 units \* 5 months = \$29,250 |

#### Grand total

\$7,800 + \$11,700 + \$29,250 = **\$48,750**

## Tiered ramping

<Tip>
  Read more about tiered pricing <a href="/quickstart-guide/products-plans-bricks/creating-a-plan#tiered">here</a>.
</Tip>

#### Formula for cost calculation

To calculate the subtotal of each ramping period:

* calculate the cost of each tier: `unit price * qty`
* sum the cost of all tiers and multiply by the duration of the ramping period: `sum of all tiers' costs * duration`

### Example - tiered ramping

For this example, we'll use the same contract terms and ramping schedule as the flat-rate example, except now using a tiered pricing structure.

#### Contract terms

**Start date**: December 14, 2023

**Contract period**: 12 months

#### Ramping schedule

| Ramping period | Start date    | Quantity  |
| -------------- | ------------- | --------- |
| 1st            | December 2023 | 50 units  |
| 2nd            | April 2024    | 100 units |
| 3rd            | July 2024     | 150 units |

#### Pricing structure

| Quantity range | Monthly unit price |
| -------------- | ------------------ |
| 1-39           | \$39               |
| 40-79          | \$35               |
| 80-129         | \$29               |
| 130+           | \$25               |

#### Cost breakdown

<table>
  <thead>
    <tr>
      <th>Ramping period</th>
      <th>Duration</th>
      <th>Cost</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>1st</td>

      <td>
        4 months

        (December 14, 2023 - April 13, 2024)
      </td>

      <td>
        **Units 1-39**: \$39 \* 39 units = \$1,521

        **Units 40-50**: \$35 \* 11 units = \$385

        **Subtotal**: (\$1,521 + \$385) \* 4 months = \$7,624
      </td>
    </tr>

    <tr>
      <td>2nd</td>

      <td>
        3 months

        (April 14, 2024 - July 13, 2024)
      </td>

      <td>
        **Units 1-39**: \$39 \* 39 units = \$1,521

        **Units 40-79**: \$35 \* 40 units = \$1,400

        **Units 80-100**: \$29 \* 21 units = \$609

        **Subtotal**: (\$1,521 + \$1,400 + \$609) \* 3 months = \$10,590
      </td>
    </tr>

    <tr>
      <td>3rd</td>

      <td>
        5 months

        (July 14, 2024 - December 13, 2024)
      </td>

      <td>
        **Units 1-39**: \$39 \* 39 units = \$1,521

        **Units 40-79**: \$35 \* 40 units = \$1,400

        **Units 80-129**: \$29 \* 40 units = \$1,160

        **Units 130-150**: \$25 \* 21 units = \$525

        **Subtotal**: (\$1,521 + \$1,400 + \$1,160 + \$525) \* 5 months = \$23,030
      </td>
    </tr>
  </tbody>
</table>

#### Grand total

\$7,624 + \$10,590 + \$23,030 = **\$41,244**


# Reports & Charts
Source: https://docs.salesbricks.com/documentation/reports-and-charts

A primer for Salesbricks' reporting and charting features

<Card title="Take me there" icon="rocket-launch" href="https://app.salesbricks.com/admin/reports">
  [https://app.salesbricks.com/admin/reports](https://app.salesbricks.com/admin/reports)
</Card>

<img alt="reports-and-charts" />

## Overview

Reports & Charts provides users with visualization and aggregation tools to track various aspects of their revenue and finance data. From revenue and bookings to customer counts and payment status, these reports offer valuable insights into key metrics and trends.

Each chart or report focuses on a different aspect of performance:

**Charts**

* **Revenue:** Tracks total revenue generated each month, broken down by revenue type.
* **Bookings:** Displays monthly sales based on the value of a commercial agreement between a buyer and seller, segmented by customer transaction type.
* **Customers:** Provides insights into new customer acquisition and customer churn.
* **Renewals:** Analyzes subscription renewal amounts and timing, renewal lapses, and churn over time.
* **Invoicing and Payments**: Monitors unpaid invoices and revenue suspended by past due payments.
* **Collections**: Tracks uncollected payments and collected payments over time.

**Reports**

* **Bookings**: Displays monthly sales based on the value of a commercial agreement between a buyer and seller, segmented by customer transaction type.
* **Customer count:** Breaks down the monthly customer count into various categories.
* **Invoice receivable:** Lists all invoices sent to customers within a selected date range.
* **Raw data:** Offers detailed revenue data segmented by [Bricks](/quickstart-guide/products-plans-bricks/creating-a-brick#whats-a-brick) and Customers.
* **Revenue:** Tracks total revenue generated each month, broken down by revenue type.
* **Revenue waterfall:** Analyzes recurring revenue data segmented by Customers.
* **Tax remittance:** Displays total taxes billed and amounts to remit by state.

## Key Terms

### Subscription Status

#### Renewed

Closed won renewal orders.

#### Terminated

Subscriptions that are scheduled to end before the end date specified on the contract.

#### Churned

Subscriptions that have been terminated, and the termination date has passed.

#### Lapsed

Subscriptions that have ended but have not been terminated, nor has a renewal been closed.

### Revenue

#### MRR

Monthly recurring revenue. Any Brick on an active subscription that the customer is billed for on a recurring basis.

<Note>
  MRR is calculated by dividing the grand total of recurring revenue in an
  agreement by the total contract length in days, and then multiplying it by the
  number of days in each month.
</Note>

#### Recurring

Consistent and periodic income from subscription Bricks.

#### Non-recurring

One-off payments from one-time, usage, and milestone Bricks.

#### Usage

Income from Usage Bricks based on actual usage or pre-committed quantities.

#### Milestone

Income from Milestone Bricks based on achieving predetermined checkpoints.

## Charts

The charts listed below offer a single-year view (unless otherwise noted) of your company's revenue data and customer count.

### Revenue

The Revenue chart offers a breakdown of the total revenue your company generated on Salesbricks. It includes monthly recurring revenue (MRR) from recurring, non-recurring, usage, and milestone Bricks on active closed won orders for each month.

It also provides a forecast of future months' revenue based on the expected MRR of active subscriptions.

**Types of Revenue:**

* Recurring
* Non-recurring
* Usage
* Milestone

Clicking on this chart will take you to the [Revenue report](/documentation/reports-and-charts#revenue-2).

Please note that Salesbricks charges usage in arrears; any usage revenue displayed on the chart is based on usage data from the previous month.

### Bookings

The Bookings chart displays the total revenue your company has booked each month.

<Note>
  Monthly totals are calculated by summing up the revenue made from new logos,
  upgrades, recasts, and renewals, then subtracting churned amounts.
</Note>

**Types of Transactions:**

* **New logo:** Closed won initial orders indicating new customers
* **Renewal:** Closed won renewal orders
* **Recast:** Closed won recast orders
* **Upgrade:** Closed won upgrade orders
* **Churn**

Clicking on this chart will take you to the [Bookings report](/documentation/reports-and-charts#bookings-2).

### Customers

The Customers chart tracks the monthly amount of:

* **New customers** from closed won initial orders
* **Churned customers** from terminated orders
* **Existing customers** from active subscriptions

Clicking on this chart will take you to the [Customer count report](/documentation/reports-and-charts#customer-count).

Please note that you are not currently able to drill down in the Customers chart to understand which customers make up the numerical values.

### Renewals

The Renewals chart visualizes the total monthly revenue from renewed, lapsed as potential loss, churned, and upcoming subscriptions.

**Types of Subscriptions:**

* **Renewed:** These appear on the chart during the month in which the renewal agreement starts.
* **Lapsed**
* **Churned**
* **Upcoming:** The expected renewal value will appear on the chart under the month in which the next agreement is expected to start.

Please note that you are not currently able to drill down in the Renewals chart to understand which customers make up the numerical values.

### Invoicing and Payments

The Invoicing and Payments chart monitors your total money due, categorized by how late payments are.

Past-due invoices are segregated into five buckets:

* 1-30 days past due
* 31-60 days past due
* 61-90 days past due
* 91-120 days past due
* 120+ days past due

Clicking on this chart will take you to the [Invoice receivable report](/documentation/reports-and-charts#invoice-receivable).

### Collections

The Collections chart aggregates the total amount of money collected for the selected fiscal year, as well as uncollected payments of all transactions across all fiscal years.

Uncollected money is calculated by the total amount of all unsettled invoices.

Collected money is displayed under three categories:

* Money collected during the **current month**
* Money collected during the **current fiscal quarter** (the consecutive three-month period used for financial reporting and analysis)
* Money collected during the **current fiscal year-to-date** (the start of the fiscal year to today)

Please note that collections are shown based on fiscal quarters, and currently, this cannot be adjusted manually.

## Reports

### Bookings

The Bookings report shows a list of logos and revenue that closed during a selected time range.

Bookings are sorted based on the date the order was closed; if an order was closed in February but set to start in April, it will appear in the report as a February booking.

Churned logos appear under the month that the order was terminated.

### Customer count

The Customer count report tracks customer acquisition and churn rates to determine net customer count changes.

Customers are sorted based on the date the order was closed; if an order was closed in February but set to start in April, it will appear in the report as a February customer.

Churned customers appear under the month that the order was terminated.

This report breaks down your monthly customer count into four quantities:

* **Start of month total:** How many unique logos you had coming in to the start of the month
* **Added this month:** How many new logos you've added
* **Churned this month:** How many logos terminated their subscription
* **End of month total:** How many customers you ended the month with after accounting for new and churned logos

### Invoice receivable

<Warning>
  This report will be replaced by our new <a href="/quickstart-guide/navigating-salesbricks#billing">Billing page</a>.
</Warning>

The Invoice receivable report lists all invoices within a selected date range. An invoice will appear in the report if its "invoice date" (typically, the start of the billing period) falls within the selected date range.

<Note>
  If the filter is set to "year-to-date," and the start of an invoice's billing period has already passed, that invoice will appear in this report.
</Note>

Invoices can also be filtered by customer names and payment status (paid and/or unpaid).

### Raw data

The Raw data report offers a detailed look at all revenue data, segmented by Bricks and Customers, within a selected date range. This data includes subscriptions, one-time payments, usage, and milestones.

Data for this report is filtered by the period that coincides with the report's date range. For example, if a subscription runs from February to December, and the report shows raw data from June to December, the report will only show raw data for this subscription from June to December.

The revenue data shown on each row is the MRR for that Brick, which is calculated by dividing the grand total by the total contract length in days, then multiplying it by the number of days in each month.

### Revenue

The Revenue report displays the total revenue from sales transactions for each month, also segmented into recurring, non-recurring, milestone, and usage revenue.

Data for this report is filtered by the period that coincides with the report's date range. For example, if a subscription runs from February to December, and the report shows revenue from June to December, the report will only show revenue for this subscription from June to December.

### Revenue waterfall

The Revenue waterfall report shows all recurring revenue data, segmented by customers.

This data takes only the recurring revenue from subscriptions into consideration. Monthly revenue allocations are prorated by day.

Data for this report is filtered by the period that coincides with the report's date range. For example, if a subscription runs from February to December, and the report shows revenue from June to December, the report will only show revenue for this subscription from June to December.

### Tax remittance

The Tax remittance report displays the total tax amount billed, and the amounts to remit for each state where you have sold your software and services.

Salesbricks uses Stripe's APIs ([Taxjar](https://www.taxjar.com/)) to determine nexus - whether or not sales tax should be applied to an order based on your company's address and the buyer's address.

As the seller, it is your responsibility to register and remit taxes with each applicable individual state. If you would like assistance with this process, we recommend using our partner, [Zamp](https://zamp.com/).

An overview of Zamp's services can be found [here](https://drive.google.com/file/d/1wO-etqxO5WQW0gJ5v_2X5-KDMjostLTq/view).


# Taxed States
Source: https://docs.salesbricks.com/documentation/taxed-states



## Overview

Sellers have the option to set up tax collection on a state-by-state basis.

<Frame>
  <img alt="list of taxed states" />
</Frame>

## Setup

**1.** Sellers can enable or disable tax collection settings through the Finance page:

**2.** Navigate to <a href="https://app.salesbricks.com/admin/settings/finance">Settings -> Finance</a>.

**3.** Edit the finance settings.

**4.** Locate the **Taxed states** section.

**5.** Toggle individual states on or off to enable or disable tax collection.

**6.** Save changes to update tax collection preferences.

<Warning>
  All **existing** sellers, by default, have sales tax collection **on** for all states.

  All **new** sellers, by default, have sales tax collection **off** for all states.

  Please read the **Actions** section below for more details and next steps.
</Warning>

## Actions

* **New sellers:** When a seller creates a new account on Salesbricks, tax collection is disabled for all states. They must navigate to the <a href="https://app.salesbricks.com/admin/settings/finance">Finance</a> page to enable tax collection in the states where they wish to collect taxes.
* **Existing sellers:** All states remain enabled for tax collection unless they choose to disable specific states manually.

## Impact of changing state tax settings

* Tax calculation is based on the **nexus** between your company's location and the state in which your customer is located.
* **Enabling a state:** When a seller enables tax collection in a state, the system will automatically begin collecting and remitting sales tax for transactions in that state.
* **Disabling a state:** When a seller disables tax collection in a state, sales tax will no longer be collected for transactions in that state.


# Your email notifications
Source: https://docs.salesbricks.com/documentation/your-email-notifications

What emails will Salesbricks send to your team

Salesbricks sends emails automatically throughout your customer's lifecycle. This is a complete listing of those emails.

## Payment

### Renewal credit card payment failure

|                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Received by:**  |                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Triggered by:** | Order renewal credt card payment failure                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Subject:**      | Action required: Payment failed for \{\{ product\_name }} renewal                                                                                                                                                                                                                                                                                                                                                                                            |
| **Header:**       | Credit card payment failure for your \{\{ product\_name }} renewal                                                                                                                                                                                                                                                                                                                                                                                           |
| **Body:**         | Your payment for \{\{ product\_name }} has failed. Please click the button below to update your payment information and reprocess your payment.<br /><br />Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }}<br /> |
| **Button:**       | Update payment information                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Footer:**       |                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Attachments:**  |                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

### Seller ACH Payment Processed

|                   |                                                                                                                                                                                                                                                                                             |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                   |
| **Received by:**  | Seller AR email                                                                                                                                                                                                                                                                             |
| **Triggered by:** | ACH Payment succeeds for Invoice                                                                                                                                                                                                                                                            |
| **Subject:**      | \{\{ buyer\_name }} ACH debit payment successfully processed                                                                                                                                                                                                                                |
| **Header:**       | ACH debit payment successfully processed                                                                                                                                                                                                                                                    |
| **Body:**         | Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }} |
| **Button:**       |                                                                                                                                                                                                                                                                                             |
| **Footer:**       |                                                                                                                                                                                                                                                                                             |
| **Attachments:**  | Payment Receipt                                                                                                                                                                                                                                                                             |

### Seller ACH Payment Processing

|                   |                                                                                                                                                                                                                                                                                             |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                   |
| **Received by:**  | Seller AR email                                                                                                                                                                                                                                                                             |
| **Triggered by:** | ACH payment starts processing against an invoice                                                                                                                                                                                                                                            |
| **Subject:**      | \{\{ buyer\_name }} \{\{ invoice\_number }}: ACH debit payment processing                                                                                                                                                                                                                   |
| **Header:**       | ACH debit payment processing                                                                                                                                                                                                                                                                |
| **Body:**         | Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }} |
| **Button:**       |                                                                                                                                                                                                                                                                                             |
| **Footer:**       |                                                                                                                                                                                                                                                                                             |
| **Attachments:**  |                                                                                                                                                                                                                                                                                             |

### Seller CC Payment Failed

|                   |                                                                                                                                                                                                                                                                                                   |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                         |
| **Received by:**  | Seller AR email                                                                                                                                                                                                                                                                                   |
| **Triggered by:** | When a payment attempt is made against an Invoice using a CC on file (including via the Invoice paywall)                                                                                                                                                                                          |
| **Subject:**      | \{\{ buyer\_name }} credit card payment failed                                                                                                                                                                                                                                                    |
| **Header:**       | Credit card payment failed                                                                                                                                                                                                                                                                        |
| **Body:**         | Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }}<br /> |
| **Button:**       |                                                                                                                                                                                                                                                                                                   |
| **Footer:**       |                                                                                                                                                                                                                                                                                                   |
| **Attachments:**  |                                                                                                                                                                                                                                                                                                   |

### Seller Credit Card Payment Success

|                   |                                                                                                                                                                                                                                                                                                               |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                     |
| **Received by:**  |                                                                                                                                                                                                                                                                                                               |
| **Triggered by:** | CC Payment succeeds for Invoice                                                                                                                                                                                                                                                                               |
| **Subject:**      | \{buyer\_name}: credit card payment successfully processed                                                                                                                                                                                                                                                    |
| **Header:**       | Credit card payment successfully processed                                                                                                                                                                                                                                                                    |
| **Body:**         | <br /><br />Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }}<br /> |
| **Button:**       |                                                                                                                                                                                                                                                                                                               |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                                                                                                                                                          |
| **Attachments:**  | Receipt                                                                                                                                                                                                                                                                                                       |

### Seller ACH Payment Failed

|                   |                                                                                                                                                                                                                                                                                             |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                   |
| **Received by:**  | Seller AR email                                                                                                                                                                                                                                                                             |
| **Triggered by:** | ACH Payment fails for Invoice                                                                                                                                                                                                                                                               |
| **Subject:**      | \{\{ buyer\_name }}: ACH debit payment failed                                                                                                                                                                                                                                               |
| **Header:**       | ACH debit payment failed                                                                                                                                                                                                                                                                    |
| **Body:**         | Payment details:<br /><br />Product name<br />\{\{ product\_name }}<br /><br />Invoice number<br />\{\{ invoice\_number }}<br /><br />Payment method<br />\{\{ payment\_method }}<br /><br />Payment date<br />\{\{ payment\_date }}<br /><br />Payment amount<br />\{\{ payment\_amount }} |
| **Button:**       |                                                                                                                                                                                                                                                                                             |
| **Footer:**       |                                                                                                                                                                                                                                                                                             |
| **Attachments:**  |                                                                                                                                                                                                                                                                                             |

## Invoicing

### Seller Invoice Past Due

|                   |                                                                                                             |
| ----------------- | ----------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                   |
| **Received by:**  | Seller AR email                                                                                             |
| **Triggered by:** | On the day after Invoice is due                                                                             |
| **Subject:**      | \{\{ buyer\_name }}: Invoice \{\{ invoice\_number }} is \{\{ invoice\_num\_days\_past\_due} } days past due |
| **Header:**       | \{\{ buyer\_name }} invoice is past due                                                                     |
| **Body:**         | Invoice \{\{ invoice\_number }} is \{\{ invoice\_num\_days\_past\_due }} days past due.                     |
| **Button:**       | View invoice                                                                                                |
| **Footer:**       |                                                                                                             |
| **Attachments:**  | Invoice                                                                                                     |

### Seller Invoice Start

|                   |                                                                                                                                                                                                          |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                |
| **Received by:**  | Seller AR email                                                                                                                                                                                          |
| **Triggered by:** | When invoice is generated (currently day before invoice billing period starts), unless the invoice has been muted (migrated orders which haven't cut over) or  the Product purchased has invoicing muted |
| **Subject:**      | \{\{ buyer\_name }}: Invoice \{\{ invoice\_number }} sent                                                                                                                                                |
| **Header:**       | Invoice sent to \{\{ buyer }}                                                                                                                                                                            |
| **Body:**         | Invoice \{\{ invoice\_number }} was sent on \{\{ sent date }}                                                                                                                                            |
| **Button:**       | View invoice                                                                                                                                                                                             |
| **Footer:**       |                                                                                                                                                                                                          |
| **Attachments:**  | Invoice                                                                                                                                                                                                  |

## Subscription Lifecycle

### Seller Order Stage Changed

|                   |                                                                                                                                                                               |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                     |
| **Received by:**  | Order Owner                                                                                                                                                                   |
| **Triggered by:** | When a non-migrated order stage changes to a stage other than Building (ie: not re-opened) <br /><br />(eg: Building to Awaiting Counter-Sign, or to Closed Lost)             |
| **Subject:**      | Details of your \{\{ buyer\_name }} deal have changed                                                                                                                         |
| **Header:**       | Order \{\{ order\_number }} changed status to \{\{ next\_label }}                                                                                                             |
| **Body:**         | <br />Just a heads up, \{\{ buyer\_name }} order \{\{ order\_number }} changed status from \{\{ previous\_label }} to \{\{ next\_label }}.<br /><br />- The Salesbricks Team. |
| **Button:**       |                                                                                                                                                                               |
| **Footer:**       | Have questions? \{\{ support\_email }}<br />Talk to sales \{\{ sales\_email }}<br />                                                                                          |
| **Attachments:**  |                                                                                                                                                                               |

### Seller Signature Required

|                   |                                                                                                                                    |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                          |
| **Received by:**  | Seller Signatory User                                                                                                              |
| **Triggered by:** | Sent when a buyer has signed the Order Form                                                                                        |
| **Subject:**      | Finalize \{\{ buyer\_name }}'s order – countersign now!                                                                            |
| **Header:**       | Congratulations! \{\{ buyer\_name }} is ready for you to finalize the order.                                                       |
| **Body:**         | Action Required:<br />Click 'Countersign now' to finalize \{\{ buyer\_name }}'s purchase by countersigning their order form.<br /> |
| **Button:**       | Countersign now                                                                                                                    |
| **Footer:**       |                                                                                                                                    |
| **Attachments:**  |                                                                                                                                    |

### Subscription Terminating

|                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Sent from:**    | `noreply@salesbricks.com`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Received by:**  | Nominated subscription notification emails                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Triggered by:** | Buyer subscription is scheduled to terminate                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **Subject:**      | Terminating \{\{ buyer\_name }}                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Header:**       | Terminating \{\{ buyer\_name }}                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Body:**         | \{\{ buyer\_name }}'s subscription is terminating on \{\{ termination\_date }} (UTC)<br /><br />Company details:<br /><br />Company name<br />\{\{ buyer\_name }}<br /><br />Address<br />\{\{ line\_1 }}<br />\{\{ line\_2 }}<br />\{\{ city }}, \{\{ region }} \{\{ zip }}, \{\{ country }}<br /><br />Renewal date<br />\{\{ renewal\_date }} (UTC)<br /><br />Termination date<br />\{\{ termination\_date }} (UTC)<br /><br />Notes<br />\{\{ termination\_notes }}<br /><br />- \{\{ signed\_by }} |
| **Button:**       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Footer:**       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Attachments:**  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |


# Attio
Source: https://docs.salesbricks.com/integrations/attio



## Overview

Attio is a modern, automation-first CRM platform designed for speed and simplicity. Known for its popularity among young, innovative companies (including many from Y Combinator) Attio is a fast-growing player in the CRM space.

Salesbricks allows you to connect with your Attio workspace so you can:

* Create a new Order in Salesbricks
* Sync metadata from the Salesbricks Order to an associated Deal in Attio
* Sync metadata from the Salesbricks Customer to an associated Company in Attio
* Establish a repeatable process for future agreements between you and your customer

In order to successfully integrate Attio in Salesbricks, you will need to:

* Connect your Attio workspace to Salesbricks
* Create the fields in Attio needed to host the Salesbricks data
* Map the Order fields in Salesbricks to the Deal fields you created in Attio
* Map the Customer fields in Salesbricks to the Company fields you created in Attio
* Test a Salesbricks Order with a test Attio Deal, and confirm the data is flowing properly

## Setup Attio Custom Fields

<Frame>
  <img alt="attio-objects" />
</Frame>

In Attio, you can either use existing attributes or create custom attributes to store the Salesbricks data. Here's how to review and set up attributes:

1. Navigate to Data Settings:
   * Click your workspace name in the top left
   * Select "Data Settings"

2. Review and Create Attributes:
   * Select either "Deals" or "Companies" object
   * Review existing attributes to see if they match your needs
   * If needed, click "Add attribute" to create new attributes

3. Attribute Types Available:
   * Text attributes (e.g., Name, Legal Name)
   * Number attributes (e.g., Total Contract Value, Expected Renewal Value)
   * Select attributes (e.g., Status with options: Active, Inactive, Terminated)
   * Date attributes (e.g., Customer Since Date, Next Renewal Date)

<Note>
  You can use existing attributes that match your needs or create new ones. Refer to the field mapping section below to determine which attributes you need and their appropriate data types.

  For detailed instructions on creating and managing attributes, see the [Attio Attributes Documentation](https://attio.com/help/reference/managing-your-data/attributes/create-manage-attributes).
</Note>

## Connect Attio in Salesbricks

<Frame>
  <img alt="select-attio" />
</Frame>

<AccordionGroup>
  <Accordion title="1. Connect Attio" icon="link">
    In Salesbricks, go to <a href="https://app.salesbricks.com/admin/settings/integrations">**Settings** -> **Integrations**</a> and click on Attio.

    <Note>
      If you do not see Attio as a CRM option, please reach out to Salesbricks Support to enable it on your account.
    </Note>

    If this is your first time connecting Attio to Salesbricks, a modal will appear prompting you to connect your Attio account. Click "Connect."
  </Accordion>

  <Accordion title="2. Map Order Fields" icon="list">
    After you log in to Attio, you will be redirected back to Salesbricks.

    Map the fields you would like to push from Salesbricks Orders to Attio Deals.

    Click the "Add a field" button to add new rows, or the X icon on the right side of a row to delete it.

    <Tip>
      We recommend mapping the following field out of the gate:

      Map Salesbricks Order `Contract Value` to your Attio Deal field `Amount`.

      To map additional fields, you can reference our docs on Salesbricks fields for <a href="https://docs.google.com/spreadsheets/d/1dFMW5bvi5YJ0dSyhiw-xWAo7F0JCtPRym3cskCs9wlo">Attio</a>.
    </Tip>

    Click "Save."
  </Accordion>

  <Accordion title="3. Map Customer Fields" icon="list">
    Next, map the fields you would like to push from Salesbricks Customers to Attio Companies.

    Click the "Add a field" button to add new rows, or the X icon on the right side of a row to delete it.

    <Tip>
      We recommend mapping the following fields out of the gate:

      * Map Salesbricks Customer `Name` to your Attio Company field `Name`

      To map additional fields, you can reference our docs on Salesbricks fields for <a href="https://docs.google.com/spreadsheets/d/1dFMW5bvi5YJ0dSyhiw-xWAo7F0JCtPRym3cskCs9wlo">Attio</a>.
    </Tip>

    Click "Save."
  </Accordion>

  <Accordion title="4. Test the Integration" icon="circle-check">
    <Steps>
      <Step title="Create a test Deal in Attio">
        In Attio, create a new Deal and save it.
      </Step>

      <Step title="Create a new Order in Salesbricks">
        In Salesbricks, create a new Order.
      </Step>

      <Step title="Link the Order to Attio">
        In the CRM Company field, search for the Company associated with the Deal you created in Attio.
        Once you find the correct account, the CRM Deal field will be populated with all Deals associated with that company.
      </Step>

      <Step title="Verify the sync">
        After you save the Order, go to Attio and verify that the details from the Order were pushed from Salesbricks to the Attio Deal and Company.

        <Note>
          Each time the Salesbricks Order is updated, the updates will be synced to the Attio Deal and Company.
        </Note>
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Field Mapping

<Frame>
  <img alt="map-order" />
</Frame>

<AccordionGroup>
  <Accordion title="Salesbricks Order Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Order**–level fields to align data between the two systems effectively:

    | Field                           | Definition                                                                                                                  |
    | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
    | `self_service`                  | Indicates whether the order was placed via a self-service channel.                                                          |
    | `stage`                         | Represents the current phase or status of the order, indicating progression through your pipeline.                          |
    | `id`                            | A unique identifier for the order within Salesbricks, used for consistent reference across platforms.                       |
    | `subscription_id`               | The identifier for the Salesforce subscription associated with the order.                                                   |
    | `agreement_number`              | The index of the order within the subscription.                                                                             |
    | `order_type`                    | Specifies the type of order (e.g., standard, renewal, upgrade, recast) for categorization.                                  |
    | `created_at`                    | The timestamp marking when the order was created in Salesbricks.                                                            |
    | `updated_at`                    | The timestamp for the last update to the order, providing insight into its most recent activity.                            |
    | `starts_at`                     | Indicates when the order begins.                                                                                            |
    | `ends_at`                       | The expected end date of the order, marking its termination unless renewed.                                                 |
    | `closed_at`                     | The timestamp marking when the order was closed.                                                                            |
    | `point_of_contact_email`        | The email address of the main user or contact associated with the order.                                                    |
    | `primary_user`                  | The full name of the main user or contact associated with the order, typically the primary point of contact.                |
    | `metadata`                      | An open field for additional data, custom attributes, or notes specific to the order.                                       |
    | `billing_schedule`              | The frequency or schedule for billing, such as monthly, quarterly, or annually.                                             |
    | `payment_terms_text`            | `x` = `payment_terms_number_of_days`. If `x` is 0, returns "Due on receipt." Otherwise, returns "Net `x`" (e.g., "Net 30"). |
    | `owner_name`                    | The name of the account owner managing the order.                                                                           |
    | `owner_email`                   | The email address of the account owner managing the order.                                                                  |
    | `accounts_payable_emails`       | Email addresses responsible for processing payments on the buyer's side.                                                    |
    | `arr`                           | The Annual Recurring Revenue associated with the order, reflecting yearly revenue from subscriptions or ongoing contracts.  |
    | `contract_value`                | The total value of the contract over its entire duration.                                                                   |
    | `duration`                      | The length of the contract or order term, measured in months.                                                               |
    | `auto_renews`                   | Indicates if the order will automatically renew upon expiration.                                                            |
    | `buyer_name`                    | The name of the company purchasing the order.                                                                               |
    | `currency_iso_code`             | The ISO currency code (e.g., USD, EUR) used in the order.                                                                   |
    | `buyer_legal_name`              | The official legal name of the buying company.                                                                              |
    | `total_committed_current_spend` | The total contract value of the customer's current active agreement.                                                        |
    | `total_expected_renewal_spend`  | The forecasted total contract value of the customer's next renewal agreement.                                               |
  </Accordion>

  <Accordion title="Salesbricks Customer Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Customer**–level fields to align data between the two systems effectively:

    | Field                           | Definition                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
    | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `name`                          | Customer name.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
    | `legal_name`                    | Customer legal name.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
    | `status`                        | Refers to the current customer's status. A customer is `ACTIVE` if they have at least one active subscription. If the only active subscription is scheduled for termination, the status is updated to `TERMINATING`. If the last active subscription has terminated, the status is updated to `TERMINATED`.<br /><br />Options: Active, Terminating, Terminated, Order Needed, Scheduled, Open Order<br /><br />If the customer has multiple active subscriptions, the status will continue to read `ACTIVE` unless all subscriptions are terminating / terminated. |
    | `customer_since_date`           | First subscription's start date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
    | `next_renewal_date`             | Active subscription's next renewal date. If there are multiple active subscriptions, gets the subscription with the earliest end date. For example: Subscription A - Mar 1, 2024 - March 1, 2025, Subscription B - March 1, 2024 - April 1, 2024. Next renewal date is April 2, 2024.                                                                                                                                                                                                                                                                               |
    | `termination_date`              | If all customer subscriptions have been terminated, returns the termination date of the last subscription terminated.                                                                                                                                                                                                                                                                                                                                                                                                                                               |
    | `churn_notes`                   | Notes from the last terminated subscription.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    | `total_committed_current_spend` | Sum of `subscription_grand_total` of all subscriptions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
    | `total_expected_renewal_spend`  | Sum of `renewal_value` of all subscriptions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    | `primary_user`                  | Primary user full name of the recently closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    | `product_name`                  | Product name of the recently closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    | `total_arr`                     | Total ARR of the recently closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
    | `auto_renews`                   | Whether the recently closed/updated order auto renews. Options: Yes, No.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
    | `duration`                      | Number of months of the last closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    | `billing_frequency`             | Billing frequency of the last closed/updated order. Options: Monthly, Quarterly, Semi-annually, Annually, All upfront.                                                                                                                                                                                                                                                                                                                                                                                                                                              |
    | `brick_a`                       | All brick names will be available for mapping and can be mapped to any CRM field. The value will be the total quantity/entitlements for the mapped brick. For example: If you sell licenses and have "Starter Seat", "Professional Seat", "Enterprise Seat", and "Viewer Seat" as bricks in your plans, you can map these to custom fields in your CRM to track total quantities.                                                                                                                                                                                   |
    | `brick_b`                       | Additional brick field for mapping to CRM custom fields.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  </Accordion>

  <Accordion title="Salesbricks Brick Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Brick**–level fields to align data between the two systems effectively:

    | Field              | Definition                                                                                                 |
    | ------------------ | ---------------------------------------------------------------------------------------------------------- |
    | `id`               | A unique identifier for the brick within Salesbricks, used for consistent reference across platforms.      |
    | `name`             | The displayed name of the brick on the order line.                                                         |
    | `summary`          | A punch description of the brick that appears in the order builder.                                        |
    | `code`             | Your internal SKU code for this offering.                                                                  |
    | `cogs`             | The cost of goods sold.                                                                                    |
    | `sku_type`         | Denotes the type of brick being sold. Options: Software, Service.                                          |
    | `sku_schedule`     | The type of billing schedule associated with the brick. Options: Subscription, One-time, Milestone, Usage. |
    | `custom_unit_text` | Your custom unit of measurement for the brick.                                                             |
  </Accordion>

  <Accordion title="Salesbricks Order Brick Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Order Brick**–level fields to align line item data between the two systems effectively:

    | Field                                     | Definition                                                                                                                                                                                             |
    | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | `name`                                    | The displayed name of the brick on the order line (uses the brick's custom name if set, otherwise the default brick name).                                                                             |
    | `quantity`                                | The quantity for this brick on the order. For usage SKUs this is the pre-commitment amount (or `1` if none is set); for other SKUs it is the ordered quantity (or the quantity delta when configured). |
    | `opportunity_id`                          | The CRM opportunity identifier linked to the order that this brick belongs to (e.g. Salesforce `Opportunity.Id`).                                                                                      |
    | `pricebook_entry_id`                      | The CRM price book entry ID associated with this brick and currency (e.g. Salesforce `PricebookEntry.Id`), used to tie the line item to the correct price book entry.                                  |
    | `product_id`                              | The CRM product ID mapped to this brick in the given currency (e.g. Salesforce `Product2.Id`).                                                                                                         |
    | `sub_total`                               | The line item value **before** any discounts are applied, in the order currency (0 when revenue schedule sync is enabled).                                                                             |
    | `total_discount`                          | The total discounts applied to this brick, including line-level and contract-level discounts (e.g. sales, one-time, duration, and contract/buyout discounts), in the order currency.                   |
    | `grand_total`                             | The final total value for this brick **after** all discounts are applied, in the order currency (0 when revenue schedule sync is enabled).                                                             |
    | `effective_unit_price`                    | The effective price per unit for this brick. By default this is the net price per unit after discounts; when discount-line-item mode is enabled it becomes the gross unit price before discounts.      |
    | `effective_unit_price_without_discount`   | The weighted average unit price **before** any discounts, after tiers are applied (i.e. pure list price per unit for this brick).                                                                      |
    | `first_year_unit_price`                   | An annualized unit price representing **only the first year's** revenue for this brick, derived by slicing the total contract value into a year-one equivalent (ignores ramping).                      |
    | `annual_unit_price`                       | The annualized unit price per unit **excluding** contract-level discount (buyout), but including line-item discounts, normalized to a 12-month period.                                                 |
    | `annual_unit_price_net_contract_discount` | The annualized unit price per unit **including all discounts**, both line-item and contract-level (i.e. "net of buyout"), normalized to a 12-month period.                                             |
    | `duration_months`                         | The total duration of the order that this brick belongs to, measured in whole months.                                                                                                                  |
    | `duration_days`                           | The total duration of the order in days, inclusive of both the start and end dates.                                                                                                                    |
  </Accordion>
</AccordionGroup>

## Resources

<CardGroup>
  <Card title="Field Definitions" icon="link" href="https://docs.google.com/spreadsheets/d/1dFMW5bvi5YJ0dSyhiw-xWAo7F0JCtPRym3cskCs9wlo">
    View the complete list of Salesbricks fields, data types, and definitions for Attio integration.
  </Card>

  <Card title="Order Builder Guide" icon="link" href="https://drive.google.com/file/d/1KVR-48lMOh_R08jjeQOWfjbPAt3fecU0/view">
    Learn how to navigate and use the Order Builder effectively.
  </Card>
</CardGroup>

If you have any questions or concerns, feel free to reach out to the Salesbricks Support team via your Slack Connect channel.


# ChartMogul
Source: https://docs.salesbricks.com/integrations/chartmogul



Salesbricks integrates directly with ChartMogul to keep your MRR analytics up to date automatically. Setup takes under five minutes.

## Before you start

You'll need:

* A ChartMogul account with **Staff**, **Admin**, or **Owner** role (required to create API keys)
* **Salesbricks Admin** access (required to access Settings)

## Steps

<Steps>
  <Step title="Get your ChartMogul API key">
    1. In ChartMogul, go to **Admin → API Access Manager**
    2. Create a new **read & write** API key
    3. Copy the key — you'll need it in the next step

    For detailed instructions, see [ChartMogul's API getting started guide](https://help.chartmogul.com/article/170-getting-started-with-our-api).
  </Step>

  <Step title="Add the API key in Salesbricks">
    1. In Salesbricks, navigate to **Settings → Integrations → ChartMogul**
    2. Paste your API key into the **API Key** field
    3. Click **Validate**

    <Frame>
      <img alt="Salesbricks ChartMogul settings page with API key field" />
    </Frame>

    Salesbricks will verify the key against your ChartMogul account. If validation succeeds, the integration activates immediately.
  </Step>

  <Step title="Confirm the connection">
    Once connected, the ChartMogul page in Salesbricks will show:

    * **Connection status:** Active
    * **Last sync:** timestamp of the most recent data push
    * **Initial import:** Completed (once the historical backfill has finished)

    <Frame>
      <img alt="Salesbricks ChartMogul settings page showing Active status" />
    </Frame>
  </Step>

  <Step title="Verify data in ChartMogul">
    In ChartMogul, go to **Settings & Data → Sources**. You'll see a **Salesbricks** source listed there.

    <Frame>
      <img alt="ChartMogul Sources page showing Salesbricks source" />
    </Frame>

    Once the initial import completes, the Customers view will show your companies with an **Import Status** of **Processed**.

    <Frame>
      <img alt="ChartMogul Customers view showing processed records from Salesbricks" />
    </Frame>
  </Step>
</Steps>

## What happens next

A one-time historical import runs automatically after connection, pulling in all your past closed deals. New invoices, payments, upgrades, and cancellations are then pushed to ChartMogul in real time as they happen.

For a full breakdown of what data is synced, see [What Salesbricks Syncs to ChartMogul](https://support.salesbricks.com/articles/6300111243-what-salesbricks-syncs-to-chartmogul).

If you have any questions or concerns, feel free to reach out to the Salesbricks Support team via your Slack Connect channel.


# HubSpot
Source: https://docs.salesbricks.com/integrations/hubspot



## Overview

Salesbricks allows you to connect with your HubSpot org so you can:

* Create a new Order in Salesbricks
* Sync metadata from the Salesbricks Order to an associated Deal in HubSpot
* Sync metadata from the Salesbricks Customer to an associated Company in HubSpot
* Establish a repeatable process for future agreements between you and your customer

In order to successfully integrate HubSpot in Salesbricks, you will need to:

* Connect your HubSpot instance to Salesbricks
* Create the fields in HubSpot needed to host the Salesbricks data
* Map the Order fields in Salesbricks to the Deal properties you created in HubSpot
* Map the Customer fields in Salesbricks to the Company properties you created in HubSpot
* Test a Salesbricks Order with a test HubSpot Deal, and confirm the data is flowing properly

## Setup HubSpot Custom Properties

<Frame>
  <img alt="deal-properties" />
</Frame>

In HubSpot, you can either use existing properties or create custom properties to store the Salesbricks data. Here's how to review and set up properties:

1. Navigate to Properties:
   * Click the settings icon in the top navigation bar
   * In the left sidebar, select "Properties"

2. Review and Create Properties:
   * Click the "Select an object" dropdown
   * Choose either "Deals" or "Companies"
   * Review existing properties to see if they match your needs
   * If needed, click "Create property" to add new properties

3. Property Types Available:
   * Text properties (e.g., Name, Legal Name)
   * Number properties (e.g., Total Contract Value, Expected Renewal Value)
   * Single-select properties (e.g., Status with options: Active, Inactive, Terminated)
   * Date properties (e.g., Customer Since Date, Next Renewal Date)

<Note>
  You can use existing properties that match your needs or create new ones. Refer to the field mapping section below to determine which properties you need and their appropriate data types.

  For detailed instructions on creating and managing properties, see the [HubSpot Properties Documentation](https://knowledge.hubspot.com/properties/create-and-edit-properties).
</Note>

## Connect HubSpot in Salesbricks

<Frame>
  <img alt="Setup-connection" />
</Frame>

<AccordionGroup>
  <Accordion title="1. Connect HubSpot" icon="link">
    In Salesbricks, go to <a href="https://app.salesbricks.com/admin/settings/integrations">**Settings** -> **Integrations**</a> and click on HubSpot.

    If this is your first time connecting HubSpot to Salesbricks, a modal will appear prompting you to connect your HubSpot account. Click "Connect."
  </Accordion>

  <Accordion title="2. Map Order Fields" icon="list">
    After you log in to HubSpot, you will be redirected back to Salesbricks.

    Map the fields you would like to push from Salesbricks Orders to HubSpot Deals.

    Click the "Add a field" button to add new rows, or the X icon on the right side of a row to delete it.

    <Tip>
      We recommend mapping the following field out of the gate:

      Map Salesbricks Order `Contract Value` to your HubSpot Deal field `Amount`.

      To map additional fields, you can reference our docs on Salesbricks fields for <a href="https://docs.google.com/spreadsheets/d/1dFMW5bvi5YJ0dSyhiw-xWAo7F0JCtPRym3cskCs9wlo">HubSpot</a>.
    </Tip>

    Click "Save."

    <Frame>
      <img alt="field-mapping" />
    </Frame>

    If you are trying to map a Salesbricks field to a "Dropdown select" HubSpot property (For example, **Salesbricks Order Status**), you will have to map each Salesbricks option to an option in Hubspot.

    <Frame>
      <img alt="field-mapping-enum" />
    </Frame>
  </Accordion>

  <Accordion title="3. Map Customer Fields" icon="list">
    Next, map the fields you would like to push from Salesbricks Customers to HubSpot Companies.

    Click the "Add a field" button to add new rows, or the X icon on the right side of a row to delete it.

    <Tip>
      We recommend mapping the following fields out of the gate:

      * Map Salesbricks Customer `Name` to your HubSpot Company field `Name`
      * Map Salesbricks Customer `Legal Name` to your HubSpot Company field `Legal Name`
      * Map Salesbricks Customer `Status` to your HubSpot Company field `Status`
      * Map Salesbricks Customer `Total Committed Current Spend` to your HubSpot Company field `Total Contract Value`
      * Map Salesbricks Customer `Total Expected Renewal Spend` to your HubSpot Company field `Expected Renewal Value`

      To map additional fields, you can reference our docs on Salesbricks fields for <a href="https://docs.google.com/spreadsheets/d/1dFMW5bvi5YJ0dSyhiw-xWAo7F0JCtPRym3cskCs9wlo">HubSpot</a>.
    </Tip>

    Click "Save."
  </Accordion>

  <Accordion title="4. Test the Integration" icon="circle-check">
    <Steps>
      <Step title="Create a test Deal in HubSpot">
        In HubSpot, create a new Deal and save it.
      </Step>

      <Step title="Create a new Order in Salesbricks">
        In Salesbricks, create a new Order.

        <Frame>
          <img alt="new-order" />
        </Frame>
      </Step>

      <Step title="Link the Order to HubSpot">
        In the CRM Company field, search for the Company associated with the Deal you created in HubSpot.
        Once you find the correct account, the CRM Deal field will be populated with all Deals associated with that company.

        <Frame>
          <img alt="crm-company-deal" />
        </Frame>
      </Step>

      <Step title="Verify the sync">
        After you save the Order, go to HubSpot and verify that the details from the Order were pushed from Salesbricks to the HubSpot Deal and Company.

        <Note>
          Each time the Salesbricks Order is updated, the updates will be synced to the HubSpot Deal and Company.
        </Note>
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Field Mapping

<Frame>
  <img alt="map-order" />
</Frame>

<AccordionGroup>
  <Accordion title="Salesbricks Order Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Order**–level fields to align data between the two systems effectively:

    | Field                           | Definition                                                                                                                  |
    | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
    | `self_service`                  | Indicates whether the order was placed via a self-service channel.                                                          |
    | `stage`                         | Represents the current phase or status of the order, indicating progression through your pipeline.                          |
    | `id`                            | A unique identifier for the order within Salesbricks, used for consistent reference across platforms.                       |
    | `subscription_id`               | The identifier for the Salesforce subscription associated with the order.                                                   |
    | `agreement_number`              | The index of the order within the subscription.                                                                             |
    | `order_type`                    | Specifies the type of order (e.g., standard, renewal, upgrade, recast) for categorization.                                  |
    | `created_at`                    | The timestamp marking when the order was created in Salesbricks.                                                            |
    | `updated_at`                    | The timestamp for the last update to the order, providing insight into its most recent activity.                            |
    | `starts_at`                     | Indicates when the order begins.                                                                                            |
    | `ends_at`                       | The expected end date of the order, marking its termination unless renewed.                                                 |
    | `closed_at`                     | The timestamp marking when the order was closed.                                                                            |
    | `point_of_contact_email`        | The email address of the main user or contact associated with the order.                                                    |
    | `primary_user`                  | The full name of the main user or contact associated with the order, typically the primary point of contact.                |
    | `metadata`                      | An open field for additional data, custom attributes, or notes specific to the order.                                       |
    | `billing_schedule`              | The frequency or schedule for billing, such as monthly, quarterly, or annually.                                             |
    | `payment_terms_text`            | `x` = `payment_terms_number_of_days`. If `x` is 0, returns "Due on receipt." Otherwise, returns "Net `x`" (e.g., "Net 30"). |
    | `owner_name`                    | The name of the account owner managing the order.                                                                           |
    | `owner_email`                   | The email address of the account owner managing the order.                                                                  |
    | `accounts_payable_emails`       | Email addresses responsible for processing payments on the buyer's side.                                                    |
    | `arr`                           | The Annual Recurring Revenue associated with the order, reflecting yearly revenue from subscriptions or ongoing contracts.  |
    | `contract_value`                | The total value of the contract over its entire duration.                                                                   |
    | `duration`                      | The length of the contract or order term, measured in months.                                                               |
    | `auto_renews`                   | Indicates if the order will automatically renew upon expiration.                                                            |
    | `buyer_name`                    | The name of the company purchasing the order.                                                                               |
    | `currency_iso_code`             | The ISO currency code (e.g., USD, EUR) used in the order.                                                                   |
    | `buyer_legal_name`              | The official legal name of the buying company.                                                                              |
    | `total_committed_current_spend` | The total contract value of the customer's current active agreement.                                                        |
    | `total_expected_renewal_spend`  | The forecasted total contract value of the customer's next renewal agreement.                                               |
  </Accordion>

  <Accordion title="Salesbricks Customer Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Customer**–level fields to align data between the two systems effectively:

    | Field                           | Definition                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
    | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `name`                          | Customer name.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
    | `legal_name`                    | Customer legal name.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
    | `status`                        | Refers to the current customer's status. A customer is `ACTIVE` if they have at least one active subscription. If the only active subscription is scheduled for termination, the status is updated to `TERMINATING`. If the last active subscription has terminated, the status is updated to `TERMINATED`.<br /><br />Options: Active, Terminating, Terminated, Order Needed, Scheduled, Open Order<br /><br />If the customer has multiple active subscriptions, the status will continue to read `ACTIVE` unless all subscriptions are terminating / terminated. |
    | `customer_since_date`           | First subscription's start date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
    | `next_renewal_date`             | Active subscription's next renewal date. If there are multiple active subscriptions, gets the subscription with the earliest end date. For example: Subscription A - Mar 1, 2024 - March 1, 2025, Subscription B - March 1, 2024 - April 1, 2024. Next renewal date is April 2, 2024.                                                                                                                                                                                                                                                                               |
    | `termination_date`              | If all customer subscriptions have been terminated, returns the termination date of the last subscription terminated.                                                                                                                                                                                                                                                                                                                                                                                                                                               |
    | `churn_notes`                   | Notes from the last terminated subscription.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    | `total_committed_current_spend` | Sum of `subscription_grand_total` of all subscriptions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
    | `total_expected_renewal_spend`  | Sum of `renewal_value` of all subscriptions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    | `primary_user`                  | Primary user full name of the recently closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    | `product_name`                  | Product name of the recently closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    | `total_arr`                     | Total ARR of the recently closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
    | `auto_renews`                   | Whether the recently closed/updated order auto renews. Options: Yes, No.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
    | `duration`                      | Number of months of the last closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    | `billing_frequency`             | Billing frequency of the last closed/updated order. Options: Monthly, Quarterly, Semi-annually, Annually, All upfront.                                                                                                                                                                                                                                                                                                                                                                                                                                              |
    | `brick_a`                       | All brick names will be available for mapping and can be mapped to any CRM field. The value will be the total quantity/entitlements for the mapped brick. For example: If you sell licenses and have "Starter Seat", "Professional Seat", "Enterprise Seat", and "Viewer Seat" as bricks in your plans, you can map these to custom fields in your CRM to track total quantities.                                                                                                                                                                                   |
    | `brick_b`                       | Additional brick field for mapping to CRM custom fields.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  </Accordion>

  <Accordion title="Salesbricks Brick Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Brick**–level fields to align data between the two systems effectively:

    | Field              | Definition                                                                                                 |
    | ------------------ | ---------------------------------------------------------------------------------------------------------- |
    | `id`               | A unique identifier for the brick within Salesbricks, used for consistent reference across platforms.      |
    | `name`             | The displayed name of the brick on the order line.                                                         |
    | `summary`          | A punch description of the brick that appears in the order builder.                                        |
    | `code`             | Your internal SKU code for this offering.                                                                  |
    | `cogs`             | The cost of goods sold.                                                                                    |
    | `sku_type`         | Denotes the type of brick being sold. Options: Software, Service.                                          |
    | `sku_schedule`     | The type of billing schedule associated with the brick. Options: Subscription, One-time, Milestone, Usage. |
    | `custom_unit_text` | Your custom unit of measurement for the brick.                                                             |
  </Accordion>

  <Accordion title="Salesbricks Order Brick Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Order Brick**–level fields to align line item data between the two systems effectively:

    | Field                                     | Definition                                                                                                                                                                                             |
    | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | `name`                                    | The displayed name of the brick on the order line (uses the brick's custom name if set, otherwise the default brick name).                                                                             |
    | `quantity`                                | The quantity for this brick on the order. For usage SKUs this is the pre-commitment amount (or `1` if none is set); for other SKUs it is the ordered quantity (or the quantity delta when configured). |
    | `opportunity_id`                          | The CRM opportunity identifier linked to the order that this brick belongs to (e.g. Salesforce `Opportunity.Id`).                                                                                      |
    | `pricebook_entry_id`                      | The CRM price book entry ID associated with this brick and currency (e.g. Salesforce `PricebookEntry.Id`), used to tie the line item to the correct price book entry.                                  |
    | `product_id`                              | The CRM product ID mapped to this brick in the given currency (e.g. Salesforce `Product2.Id`).                                                                                                         |
    | `sub_total`                               | The line item value **before** any discounts are applied, in the order currency (0 when revenue schedule sync is enabled).                                                                             |
    | `total_discount`                          | The total discounts applied to this brick, including line-level and contract-level discounts (e.g. sales, one-time, duration, and contract/buyout discounts), in the order currency.                   |
    | `grand_total`                             | The final total value for this brick **after** all discounts are applied, in the order currency (0 when revenue schedule sync is enabled).                                                             |
    | `effective_unit_price`                    | The effective price per unit for this brick. By default this is the net price per unit after discounts; when discount-line-item mode is enabled it becomes the gross unit price before discounts.      |
    | `effective_unit_price_without_discount`   | The weighted average unit price **before** any discounts, after tiers are applied (i.e. pure list price per unit for this brick).                                                                      |
    | `first_year_unit_price`                   | An annualized unit price representing **only the first year's** revenue for this brick, derived by slicing the total contract value into a year-one equivalent (ignores ramping).                      |
    | `annual_unit_price`                       | The annualized unit price per unit **excluding** contract-level discount (buyout), but including line-item discounts, normalized to a 12-month period.                                                 |
    | `annual_unit_price_net_contract_discount` | The annualized unit price per unit **including all discounts**, both line-item and contract-level (i.e. "net of buyout"), normalized to a 12-month period.                                             |
    | `duration_months`                         | The total duration of the order that this brick belongs to, measured in whole months.                                                                                                                  |
    | `duration_days`                           | The total duration of the order in days, inclusive of both the start and end dates.                                                                                                                    |
  </Accordion>
</AccordionGroup>

## Resources

<CardGroup>
  <Card title="Field Definitions" icon="link" href="https://docs.google.com/spreadsheets/d/1dFMW5bvi5YJ0dSyhiw-xWAo7F0JCtPRym3cskCs9wlo">
    View the complete list of Salesbricks fields, data types, and definitions for HubSpot integration.
  </Card>

  <Card title="Order Builder Guide" icon="link" href="https://drive.google.com/file/d/1KVR-48lMOh_R08jjeQOWfjbPAt3fecU0/view">
    Learn how to navigate and use the Order Builder effectively.
  </Card>
</CardGroup>

If you have any questions or concerns, feel free to reach out to the Salesbricks Support team via your Slack Connect channel.


# MCP
Source: https://docs.salesbricks.com/integrations/mcp

Connect your AI assistant to Salesbricks

## Overview

The **Salesbricks MCP server** lets you connect your own AI assistant — Claude, ChatGPT, Cursor, or any MCP-compatible client — directly to your Salesbricks account. Once connected, your assistant can answer questions about your customers and revenue, and prepare billing actions in natural language.

* **Hosted service**: nothing to install. Add the Salesbricks MCP endpoint to your AI client and sign in.
* **Secure by design**: sign-in uses standard OAuth through Salesbricks. Your assistant only sees what your signed-in user is allowed to see, and access can be revoked at any time from your Salesbricks settings.
* **Safe by design**: every write produces a **draft**. The MCP never closes, signs, or charges anything. Money-moving steps stay in the Salesbricks app with a human in the loop.

<Info>
  MCP (Model Context Protocol) is an open standard that lets AI assistants securely connect to external tools and data. Most major AI clients support it.
</Info>

## Setting up the connection

The Salesbricks MCP server is available at:

```
https://ai-chat.salesbricks.com/mcp
```

Add this URL to your AI client, then sign in with your Salesbricks credentials when prompted. Setup varies slightly by client:

<Info>
  Any MCP-compatible client will work — there's no SDK to install and no API keys to manage. Your assistant's access mirrors your own Salesbricks permissions.
</Info>

<AccordionGroup>
  <Accordion title="Claude">
    1. Go to **Settings** → **Connectors** and click ***Add custom connector***.
    2. Enter a name (e.g., "Salesbricks") and the MCP server URL above.
    3. Click ***Add***, then ***Connect*** — you'll be redirected to Salesbricks to sign in and authorize access.
  </Accordion>

  <Accordion title="ChatGPT">
    1. Go to **Settings** → **Connectors** and enable developer mode if you haven't already.
    2. Click ***Create*** and enter the MCP server URL above.
    3. Complete the OAuth sign-in when prompted.
  </Accordion>

  <Accordion title="Cursor">
    1. Open **Cursor Settings** → **MCP** and click ***Add new MCP server***.
    2. Enter the MCP server URL above as a remote server.
    3. Complete the OAuth sign-in when prompted.
  </Accordion>
</AccordionGroup>

<Tip>
  **Revoking access:** You can disconnect an AI client at any time from your Salesbricks settings. The assistant immediately loses access to your account.
</Tip>

## What your assistant can do

Once connected, your assistant has access to the following capabilities:

<AccordionGroup>
  <Accordion title="Customer list">
    **"Who are my biggest customers?"** — customers ranked by contract value, with current value, expected renewal value, renewal dates, status, and rep attribution. Filter by status, upcoming renewals, minimum spend, or rep.
  </Accordion>

  <Accordion title="Revenue summary">
    **"How's revenue this quarter?"** — MRR, ARR, net-new MRR (new + expansion − contraction − churn), and churned-customer count for any period, per currency.
  </Accordion>

  <Accordion title="Draft order creation">
    **"Draft a new order for Acme on the Pro plan, 24 months, annual billing."** — creates a draft order with plan, add-ons, quantities, start date, contract length, billing schedule, payment terms, and discounts. You may then work with your customer to complete and execute the order.
  </Accordion>

  <Accordion title="Connection check">
    A simple liveness ping so clients can verify the connection.
  </Accordion>
</AccordionGroup>

## Making subscription changes

When you ask your assistant to change a subscription, it answers one question — **does this change ride alongside the current term, or replace it?** — and Salesbricks handles the rest (change type, proration, and re-billing):

* **Mid-term upgrade**: ***rides alongside*** the current term with the end date unchanged. Add seats or quantity, or add new products from the plan; proration is handled automatically.
* **Recast**: ***replaces*** the current term and starts fresh. Everything an upgrade can do, plus change contract length, change billing frequency, swap plans, and apply plan credits.

Changes can also include discounts: per-product percentage discounts (recurring and/or one-time), existing coupon codes, and plan credits (recast only).

### How changes stay safe

* **Preview first, always.** Every change is priced with a zero-side-effect estimate - resulting total, end date, and per-line-item impact - before anything is created.
* **Explicit confirmation.** Committing a change requires a confirmation from the preview; if the request was modified or the price moved in between, the commit is refused. Recasts additionally require an explicit acknowledgment that the change replaces the current term.
* **Drafts only.** A committed change is a draft order in Salesbricks. Closing it, as well as any signatures or charges, happen in Salesbricks.
* **Clear refusals, not silent mistakes.** Anything the assistant can't do comes back as a clear explanation and a pointer to the Salesbricks app, never a wrong guess.

## Limitations

The MCP is a curated, safe subset of Salesbricks. On subscription changes, the following are not supported and will be politely refused:

* **Renewals**: created in the Salesbricks app or by the Deal Desk Agent.
* **Order-wide percentage discounts on a change**: per-product percentage discounts, coupon codes, and plan credits are supported instead. (New draft orders *do* accept an order-wide rate — this limit is specific to subscription changes.)
* **Time-limited discounts, minimum-spend discounts, and contract credits**: available through the Deal Desk Agent.
* **Creating new coupons**: existing coupon codes can be looked up and applied, but not created. A coupon also can't be combined with other discounts on the same change.
* **Changing contract length on a mid-term upgrade**: the term is inherited from the current agreement; use a recast to change it.
* **Plan swaps or new products on older or custom-priced plan versions**: the assistant will direct you to the order builder; quantity, date, contract, and discount changes still work.
* **Closing, signing, or charging**: never, by design.

Usage and metering, catalog and pricing authoring, and CRM operations are not part of the MCP.

## MCP vs. the Deal Desk Agent (BrIQ)

Salesbricks offers two ways to work with AI. The **MCP** lets you bring your own assistant to a safe, confirmation-gated slice of the platform; the **Deal Desk Agent** is <a href="https://app.salesbricks.com/admin/aiChat">Salesbricks' AI chat BrIQ</a> with the full toolset, running inside Salesbricks.

<table>
  <tr>
    <th>
      <u />
    </th>

    <th><u>MCP</u></th>
    <th><u>Deal Desk Agent</u></th>
  </tr>

  <tr>
    <td>**Where it runs**</td>
    <td>Your own AI assistant (Claude, ChatGPT, Cursor, etc.)</td>
    <td>Inside Salesbricks (and Slack)</td>
  </tr>

  <tr>
    <td>**Surface area**</td>
    <td>Curated, safe subset of tools</td>
    <td>Full deal-desk toolset</td>
  </tr>

  <tr>
    <td>**Data access**</td>
    <td>Customers, orders, and revenue</td>
    <td>Full analytical access — MRR, renewals, invoices, orders, and products with ad-hoc queries</td>
  </tr>

  <tr>
    <td>**Order lifecycle**</td>
    <td>Draft creation + upgrade/recast changes</td>
    <td>Complete: create, update, delete, upgrade, renewal, recast</td>
  </tr>

  <tr>
    <td>**Discounts**</td>
    <td>Per-product %, coupon codes, plan credits</td>
    <td>Full vocabulary: order-wide %, minimum-spend, time-limited windows, contract credits, plan credits</td>
  </tr>

  <tr>
    <td>**Pricing authoring**</td>
    <td>—</td>
    <td>Create and edit pricing bricks, custom billing schedules</td>
  </tr>

  <tr>
    <td>**Documents & CRM**</td>
    <td>—</td>
    <td>SOW updates, MSA attachment, CRM account and opportunity linking</td>
  </tr>

  <tr>
    <td>**Exports & display**</td>
    <td>Structured JSON for the client to render</td>
    <td>Tables, order cards, CSV export</td>
  </tr>
</table>

## Frequently asked questions

**Can my AI actually change a live subscription?**

It can prepare one — priced, previewed, and confirmed — as a draft. A human closes it in Salesbricks. Nothing is signed or charged by the AI.

**What if the AI gets it wrong?**

Every change is previewed with exact pricing before commit; commits are refused if anything changed since the preview; recasts require an explicit acknowledgment; and an in-flight draft can be discarded without touching the live agreement.

**Which AI tools does it work with?**

Any MCP-compatible client: Claude, ChatGPT, Cursor, and the rest of the growing MCP ecosystem. It's a hosted endpoint with standard OAuth; no SDK, and no API keys to manage.

**Why can't it perform a certain task?**

The MCP exposes a deliberate subset of the platform. If something isn't supported (e.g., order-wide discounts on a change, renewals, coupon creation), your assistant will say so and point you to the Salesbricks app. The Deal Desk Agent covers the full toolset today.


# OIN Configuration Setup
Source: https://docs.salesbricks.com/integrations/okta/oin-configuration

How to set up Okta Single Sign-On integration

## Supported features

* Single Sign-On (OpenID Connect, IdP-initiated only)
* Automatically creates user accounts in Salesbricks when Single Sign-On is initiated by a member of an organization with an active Okta integration

<Info>
  To enable this feature on your company's Salesbricks account, you will need to work with Salesbricks Support to activate your instance.
</Info>

## Prerequisites

<Steps>
  <Step title="Install the Salesbricks application in your Okta admin dashboard.">
    The Salesbricks app is available to download via the [Okta Integration Network](https://www.okta.com/integrations/salesbricks/).
  </Step>

  <Step title="Sign up for a seller account on Salesbricks.">
    <Warning>
      To enable the Okta Single Sign-On integration, please reach out to Salesbricks Support.
    </Warning>
  </Step>

  <Step title="Verify that the email addresses of your existing Salesbricks users match their Okta accounts exactly." />
</Steps>

## Setup

After installing the application, you will need to obtain some information to send to Salesbricks.

### Gather information from Okta

<Steps>
  <Step title="In the Okta admin page, go to Applications -> Applications." />

  <Step title="Click on the Salesbricks application." />

  <Step title="Under the &#x22;General&#x22; tab, copy the values for Client ID and Client secret (click the eye button to toggle the visibility).">
    <Frame>
      <img alt="An image of the Okta admin dashboard. There are two red ovals: one around the clipboard icon that copies the client ID, and the other around the clipboard icon that copies the client secret." />
    </Frame>
  </Step>

  <Step title="Under the user dropdown menu in the top right corner of the page, copy your Okta organization's issuer URL (e.g. salesbricks.okta.com; usually located under the admin's email address).">
    <Frame>
      <img alt="An image of the Okta admin dashboard. There is a red oval around the clipboard icon that copies the issuer URL to the clipboard." />
    </Frame>
  </Step>
</Steps>

### Send the information to Salesbricks

Once you have all the required information below, email them to [support@salesbricks.com](mailto:support@salesbricks.com).

* Client ID
* Client Secret
* Issuer URL

<Warning>
  Salesbricks Integration Support will handle your request and follow up with you once the integration is configured.
</Warning>

## Login

Once Salesbricks support notifies you that you are ready to log in to Salesbricks using Okta:

<Steps>
  <Step title="Log in to your Okta account and access your end user dashboard." />

  <Step title="Click on the Salesbricks app to begin authenticating your access to Salesbricks.">
    If you don't have a pre-existing user account, one will automatically be created from your Okta details.

    <Frame>
      <img alt="end-user-dashboard" />
    </Frame>
  </Step>
</Steps>


# Private Integration Setup
Source: https://docs.salesbricks.com/integrations/okta/private-integration

How to set up a private Okta integration with Salesbricks

## Supported features

* Single Sign-On (OpenID Connect, IdP-initiated only)
* Automatically creates user accounts in Salesbricks when Single Sign-On is initiated by a member of an organization with an active Okta integration

<Info>
  To enable this feature on your company's Salesbricks account, you will need to work with Salesbricks Support to activate your instance.
</Info>

## Overview

The following steps ensure that your users can login to Salesbricks with Okta:

<Steps>
  <Step title="Set up the Salesbricks application in Okta manually." />

  <Step title="Gather information from Okta." />

  <Step title="Send the information to Salesbricks." />
</Steps>

## Prerequisites

<Steps>
  <Step title="Sign up for a seller account on Salesbricks.">
    <Warning>
      To enable the Okta Single Sign-On integration, please reach out to Salesbricks Support.
    </Warning>
  </Step>

  <Step title="Verify that the email addresses of your existing Salesbricks users match their Okta accounts exactly." />
</Steps>

## Setup

### Set up the Salesbricks application in Okta manually

<Steps>
  <Step title="Log in to your Okta Admin dashboard." />

  <Step title="Click Applications -> Applications from the left navigation tree." />

  <Step title="Click &#x22;Create App Integration.&#x22;" />

  <Step title="In the &#x22;Create a new app integration&#x22; dialog, select &#x22;OIDC - OpenID Connect&#x22; as the Sign-in method, and &#x22;Web Application&#x22; as the Application type." />

  <Step title="Click &#x22;Next.&#x22;" />
</Steps>

You will be directed to a page titled “New Web App Integration.”

1. For the “App integration name,” enter `Salesbricks`
2. For the “Sign-in redirect URI,” enter `https://api.salesbricks.com/sso/okta/callback`
3. For the “Sign-out redirect URI,” delete the default value so that the field is blank.
4. For “Assignments,” determine your company’s level of controlled access and immediate access (Note: Federation Broker Mode would disable your Okta End User Dashboard, so we would want to keep immediate access disabled).
5. Click “Save.”

You will be directed to the config settings page for your Salesbricks app integration.

1. Under the “General Settings,” click “Edit.”
2. Update “Login initiated by” to `Either Okta or App`.
3. For “Application visibility,” check the box for `Display application icon to users`. This will make the Salesbricks application icon visible in the end user dashboard.
4. For “Initiate login URI,” enter the Salesbricks Okta login URL (`https://api.salesbricks.com/sso/okta/login?client_id=`) followed by your client ID at the top of the Settings page. It should look like: `https://api.salesbricks.com/sso/okta/login?client_id=0ob8xfou2vZPZCbDk5d7`
5. Click “Save.”

After installing the application, you will need to obtain some information to send to Salesbricks.

### Gather information from Okta

<Steps>
  <Step title="In the Okta admin page, go to Applications -> Applications." />

  <Step title="Click on the Salesbricks application." />

  <Step title="Under the &#x22;General&#x22; tab, copy the values for Client ID and Client secret.">
    Click the eye button to toggle the visibility.
  </Step>

  <Step title="Under the user dropdown menu in the top right corner of the page, copy your Okta organization's issuer URL.">
    <Tip>
      This is usually located under the admin's email address, e.g. salesbricks.okta.com.
    </Tip>
  </Step>
</Steps>

### Send the information to Salesbricks

Once you have all the required information (summarized below), email them to [support@salesbricks.com](mailto:support@salesbricks.com).

* Client ID
* Client Secret
* Issuer URL

Salesbricks Integration Support will handle your request and follow up with you once the integration is configured.


# Quickbooks
Source: https://docs.salesbricks.com/integrations/quickbooks

Quickly and easily connect Salesbricks to Quickbooks to automate your invoice, billing, and accounting workflows.

## Overview

Linking Salesbricks to your Quickbooks Online account allows you to automatically sync invoices, customers, and payments from Salesbricks into Quickbooks.

Salesbricks is the source of truth for customers, invoices, and payments. Our integration will write this data into Quickbooks, and reads payment updates in Quickbooks for any invoice originating from Salesbricks.

If a customer pays their Salesbricks invoice through Stripe, or if they checkout directly through Stripe, Salesbricks will automatically push those invoice and payment details into Quickbooks.

If an invoice is paid outside of the Salesbricks paywall (e.g. the customer pays their invoice through check or wire to a bank account connected to Quickbooks), the payment then gets synced from Quickbooks to Salesbricks, and the invoice is auto-reconciled (see [Payment Sync](/integrations/quickbooks#payment-sync) below).

## Setup

<Card title="Take me there" icon="rocket-launch" href="https://app.salesbricks.com/admin/settings/integrations">
  [https://app.salesbricks.com/admin/settings/integrations](https://app.salesbricks.com/admin/settings/integrations)
</Card>

<Steps>
  <Step>
    In Salesbricks, navigate to **Settings** -> **Integrations** and click the **Finance** card.

    <Frame>
      <img alt="connect-finance" />
    </Frame>
  </Step>

  <Step>
    Find QuickBooks and click **Get Started**.

    <Frame>
      <img alt="get-started" />
    </Frame>
  </Step>

  <Step>
    At this point, you'll be redirected to the QuickBooks login screen.

    Salesbricks leverages an OAuth connection to QuickBooks, ensuring your username and password are secured and never stored by Salesbricks.

    <Frame>
      <img alt="login" />
    </Frame>
  </Step>

  <Step>
    Click **Sign In** and that's it. Your integration is complete!

    <Frame>
      <img alt="integrated" />
    </Frame>
  </Step>
</Steps>

## Field Sync

Below are the fields that are currently being synced for each object within Quickbooks:

### Invoice Fields

* **Bill Email**: The accounts payable email address the customer inputs when signing the order form within Salesbricks.
* **Due Date**: The date that the invoice is due, based on the order billing terms.
* **Product Line Items**: This includes Bricks sold, units, and amounts. Taxes and discounts are also included.

<Frame>
  <img alt="bill-email" />
</Frame>

<ConsecutiveImageGap />

<Frame>
  <img alt="invoice" />
</Frame>

### Customer Fields

Salesbricks will generate a customer within Quickbooks when a new subscription is created.

If you're interested in syncing current orders with existing Quickbooks customers, reach out to Salesbricks Support.

<Frame>
  <img alt="new-customer" />
</Frame>

### Payment Fields

As a payment is recorded in Salesbricks, the payment details will be passed in real-time to Quickbooks.

<Frame>
  <img alt="payment-sync" />
</Frame>

## Payment Sync

Our Quickbooks integration allows the seamless reconciliation of payments and deposits recorded in QuickBooks with unpaid invoices in Salesbricks. This automation reduces manual effort and ensures accurate financial tracking.

### How It Works

#### Payment reconciliation

Salesbricks reads Payments or Deposits recorded in QuickBooks and automatically applies them to unpaid invoices that are synced between the two platforms.

<Info>
  Only payments tied to existing invoices in Salesbricks will be processed.
</Info>

#### Deposit reconciliation

Salesbricks only reads deposits to bank accounts in QuickBooks.

<Warning>
  Payments categorized as “Undeposited Funds” in QuickBooks are excluded from the sync.
</Warning>

#### Daily sync

The sync runs automatically once every 4 hours.

### Troubleshooting

<Accordion title="Payment not synced">
  | Potential cause                                                                            | Resolution                                                                     |
  | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
  | *Your Salesbricks account has been connected to multiple QuickBooks accounts in the past.* | Contact Salesbricks Support to help rectify your Salesbricks account.          |
  | *The bank payment is for an invoice that does not exist in Salesbricks.*                   | None. Salesbricks cannot reconcile payments for invoices outside the platform. |
</Accordion>


# Managed Package
Source: https://docs.salesbricks.com/integrations/salesforce/managed-package



Our managed package enables sellers to click a button within Salesforce's opportunity layout which easily creates or links to an order in Salesbricks.

<Tip>
  Before installing the managed package, you will need to [connect your Salesforce account to Salesbricks](/integrations/salesforce/overview).
</Tip>

<Frame>
  <img alt="new-order" />
</Frame>

## Setup

Follow the steps below to install the managed package in Salesforce:

<Warning>
  **You will need to be a Salesforce administrator with access to install packages for all users.**
</Warning>

<Steps>
  <Step>
    Click on the install link below associated with the desired Salesforce environment.

    <Card title="Sandbox" icon="flask-vial" href="https://test.salesforce.com/packaging/installPackage.apexp?p0=04t5f00000074sS">
      [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t5f00000074sS](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t5f00000074sS)
    </Card>

    <Card title="Production" icon="rocket-launch" href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5f00000075fS&isdtp=p1">
      [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5f00000075fS\&isdtp=p1](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5f00000075fS\&isdtp=p1)
    </Card>
  </Step>

  <Step>
    Select the option **Install for All Users**.
  </Step>
</Steps>

Next, we'll install the component in your Opportunity Layout.

<Steps>
  <Step>
    In Salesforce, navigate to an opportunity.
  </Step>

  <Step>
    Click on the gear icon in the top left and select **Edit Page**.

    <Frame>
      <img alt="edit-page" />
    </Frame>
  </Step>

  <Step>
    In the search bar, type **order**. You should see an option called **order** under the **Custom - Managed** dropdown.

    <Frame>
      <img alt="order" />
    </Frame>
  </Step>

  <Step>
    Drag this component to your desired location in the opportunity layout, and click **Save**.
  </Step>
</Steps>

The component should now be available for use within the opportunities in Salesforce.


# Overview
Source: https://docs.salesbricks.com/integrations/salesforce/overview



## Overview

Salesbricks allows you to connect with your Salesforce org so you can:

* Create a new Order in Salesbricks
* Sync metadata from the Salesbricks Order to an associated Opportunity in Salesforce
* Sync metadata from the Salesbricks Customer to an associated Account in Salesforce
* Establish a repeatable process for future agreements between you and your customer

In order to successfully integrate Salesforce in Salesbricks, you will need to:

* Connect your Salesforce instance to Salesbricks
* Create the fields in Salesforce needed to host the Salesbricks data
* Map the Order fields in Salesbricks to the Opportunity fields you created in Salesforce
* Map the Customer fields in Salesbricks to the Account fields you created in Salesforce
* Test a Salesbricks Order with a test Salesforce Opportunity, and confirm the data is flowing properly

## Setup Salesforce Custom Fields

<Frame>
  <img alt="opportunity-fields" />
</Frame>

In Salesforce, you can either use existing fields or create custom fields to store the Salesbricks data. Here's how to review and set up fields:

1. Navigate to Setup:
   * Click the gear icon in the top right corner
   * Select "Setup"

2. Review and Create Fields:
   * In the left sidebar, go to "Object Manager"
   * Search for and select either "Opportunity" or "Account"
   * In the left sidebar, click "Fields & Relationships"
   * Review existing fields to see if they match your needs
   * If needed, click "New" to create custom fields

3. Field Types Available:
   * Text fields (e.g., Name, Legal Name)
   * Currency fields (e.g., Total Contract Value, Expected Renewal Value)
   * Picklist fields (e.g., Status with options: Active, Inactive, Terminated)
   * Date fields (e.g., Customer Since Date, Next Renewal Date)

<Note>
  You can use existing fields that match your needs or create new ones. Refer to the field mapping section below to determine which fields you need and their appropriate data types.

  For detailed instructions on creating and managing fields, see the [Salesforce Fields Documentation](https://help.salesforce.com/s/articleView?id=platform.adding_fields.htm\&type=5).
</Note>

## Connect Salesforce in Salesbricks

<Frame>
  <img alt="select-salesforce" />
</Frame>

<AccordionGroup>
  <Accordion title="1. Connect Salesforce" icon="link">
    In Salesbricks, go to <a href="https://app.salesbricks.com/admin/settings/integrations">**Settings** -> **Integrations**</a> and click on Salesforce.

    If this is your first time connecting Salesforce to Salesbricks, a modal will appear prompting you to connect your Salesforce account. Click "Connect."
  </Accordion>

  <Accordion title="2. Select Integration Level" icon="stairs">
    After you log in to Salesforce, you will return to Salesbricks where the next screen allows you to select the integration level between your Salesbricks and Salesforce accounts ("Basic" is selected by default).

    Select your integration level and click "Next."

    <Frame>
      <img alt="integration-level" />
    </Frame>
  </Accordion>

  <Accordion title="3. Map Order Fields" icon="list">
    Map the fields you would like to push from Salesbricks Orders to Salesforce Opportunities.

    Click the "Add a field" button to add new rows, or the X icon on the right side of a row to delete it.

    <Tip>
      We recommend mapping the following field out of the gate:

      Map Salesbricks Order `Grand Total` to your Salesforce Opportunity field `Salesbricks Grand Total`.

      To map additional fields, you can reference our docs on Salesbricks fields for <a href="https://docs.google.com/spreadsheets/d/17J8wWAxeeWno_JbbZj4eeQHh8-HTa3XYYJ15tlzSSCM">Salesforce</a>.
    </Tip>

    Click "Save."

    <Frame>
      <img alt="field-mapping" />
    </Frame>
  </Accordion>

  <Accordion title="4. Map Customer Fields" icon="list">
    Next, map the fields you would like to push from Salesbricks Customers to Salesforce Accounts.

    Click the "Add a field" button to add new rows, or the X icon on the right side of a row to delete it.

    <Tip>
      We recommend mapping the following fields out of the gate:

      * Map Salesbricks Customer `Name` to your Salesforce Account field `Name`

      To map additional fields, you can reference our docs on Salesbricks fields for <a href="https://docs.google.com/spreadsheets/d/17J8wWAxeeWno_JbbZj4eeQHh8-HTa3XYYJ15tlzSSCM">Salesforce</a>.
    </Tip>

    Click "Save."
  </Accordion>

  <Accordion title="5. Test the Integration" icon="circle-check">
    <Steps>
      <Step title="Create a test Opportunity in Salesforce">
        In Salesforce, create a new Opportunity and save it.
      </Step>

      <Step title="Create a new Order in Salesbricks">
        In Salesbricks, create a new Order.

        <Frame>
          <img alt="new-order" />
        </Frame>
      </Step>

      <Step title="Link the Order to Salesforce">
        In the CRM Account field, search for the Account associated with the Opportunity you created in Salesforce.
        Once you find the correct account, the CRM Opportunity field will be populated with all Opportunities associated with that company.

        <Frame>
          <img alt="crm-account-opportunity" />
        </Frame>
      </Step>

      <Step title="Verify the sync">
        After you save the Order, go to Salesforce and verify that the details from the Order were pushed from Salesbricks to the Salesforce Opportunity and Account.

        <Note>
          Each time the Salesbricks Order is updated, the updates will be synced to the Salesforce Opportunity and Account.
        </Note>
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Field Mapping

<Frame>
  <img alt="map-order" />
</Frame>

<AccordionGroup>
  <Accordion title="Salesbricks Order Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Order**–level fields to align data between the two systems effectively:

    | Field                           | Definition                                                                                                                  |
    | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
    | `self_service`                  | Indicates whether the order was placed via a self-service channel.                                                          |
    | `stage`                         | Represents the current phase or status of the order, indicating progression through your pipeline.                          |
    | `id`                            | A unique identifier for the order within Salesbricks, used for consistent reference across platforms.                       |
    | `subscription_id`               | The identifier for the Salesforce subscription associated with the order.                                                   |
    | `agreement_number`              | The index of the order within the subscription.                                                                             |
    | `order_type`                    | Specifies the type of order (e.g., standard, renewal, upgrade, recast) for categorization.                                  |
    | `created_at`                    | The timestamp marking when the order was created in Salesbricks.                                                            |
    | `updated_at`                    | The timestamp for the last update to the order, providing insight into its most recent activity.                            |
    | `starts_at`                     | Indicates when the order begins.                                                                                            |
    | `ends_at`                       | The expected end date of the order, marking its termination unless renewed.                                                 |
    | `closed_at`                     | The timestamp marking when the order was closed.                                                                            |
    | `point_of_contact_email`        | The email address of the main user or contact associated with the order.                                                    |
    | `primary_user`                  | The full name of the main user or contact associated with the order, typically the primary point of contact.                |
    | `metadata`                      | An open field for additional data, custom attributes, or notes specific to the order.                                       |
    | `billing_schedule`              | The frequency or schedule for billing, such as monthly, quarterly, or annually.                                             |
    | `payment_terms_text`            | `x` = `payment_terms_number_of_days`. If `x` is 0, returns "Due on receipt." Otherwise, returns "Net `x`" (e.g., "Net 30"). |
    | `owner_name`                    | The name of the account owner managing the order.                                                                           |
    | `owner_email`                   | The email address of the account owner managing the order.                                                                  |
    | `accounts_payable_emails`       | Email addresses responsible for processing payments on the buyer's side.                                                    |
    | `arr`                           | The Annual Recurring Revenue associated with the order, reflecting yearly revenue from subscriptions or ongoing contracts.  |
    | `contract_value`                | The total value of the contract over its entire duration.                                                                   |
    | `duration`                      | The length of the contract or order term, measured in months.                                                               |
    | `auto_renews`                   | Indicates if the order will automatically renew upon expiration.                                                            |
    | `buyer_name`                    | The name of the company purchasing the order.                                                                               |
    | `currency_iso_code`             | The ISO currency code (e.g., USD, EUR) used in the order.                                                                   |
    | `buyer_legal_name`              | The official legal name of the buying company.                                                                              |
    | `total_committed_current_spend` | The total contract value of the customer's current active agreement.                                                        |
    | `total_expected_renewal_spend`  | The forecasted total contract value of the customer's next renewal agreement.                                               |
  </Accordion>

  <Accordion title="Salesbricks Customer Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Customer**–level fields to align data between the two systems effectively:

    | Field                           | Definition                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
    | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `name`                          | Customer name.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
    | `legal_name`                    | Customer legal name.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
    | `status`                        | Refers to the current customer's status. A customer is `ACTIVE` if they have at least one active subscription. If the only active subscription is scheduled for termination, the status is updated to `TERMINATING`. If the last active subscription has terminated, the status is updated to `TERMINATED`.<br /><br />Options: Active, Terminating, Terminated, Order Needed, Scheduled, Open Order<br /><br />If the customer has multiple active subscriptions, the status will continue to read `ACTIVE` unless all subscriptions are terminating / terminated. |
    | `customer_since_date`           | First subscription's start date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
    | `next_renewal_date`             | Active subscription's next renewal date. If there are multiple active subscriptions, gets the subscription with the earliest end date. For example: Subscription A - Mar 1, 2024 - March 1, 2025, Subscription B - March 1, 2024 - April 1, 2024. Next renewal date is April 2, 2024.                                                                                                                                                                                                                                                                               |
    | `termination_date`              | If all customer subscriptions have been terminated, returns the termination date of the last subscription terminated.                                                                                                                                                                                                                                                                                                                                                                                                                                               |
    | `churn_notes`                   | Notes from the last terminated subscription.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    | `total_committed_current_spend` | Sum of `subscription_grand_total` of all subscriptions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
    | `total_expected_renewal_spend`  | Sum of `renewal_value` of all subscriptions.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    | `primary_user`                  | Primary user full name of the recently closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
    | `product_name`                  | Product name of the recently closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    | `total_arr`                     | Total ARR of the recently closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
    | `auto_renews`                   | Whether the recently closed/updated order auto renews. Options: Yes, No.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
    | `duration`                      | Number of months of the last closed/updated order.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    | `billing_frequency`             | Billing frequency of the last closed/updated order. Options: Monthly, Quarterly, Semi-annually, Annually, All upfront.                                                                                                                                                                                                                                                                                                                                                                                                                                              |
    | `brick_a`                       | All brick names will be available for mapping and can be mapped to any CRM field. The value will be the total quantity/entitlements for the mapped brick. For example: If you sell licenses and have "Starter Seat", "Professional Seat", "Enterprise Seat", and "Viewer Seat" as bricks in your plans, you can map these to custom fields in your CRM to track total quantities.                                                                                                                                                                                   |
    | `brick_b`                       | Additional brick field for mapping to CRM custom fields.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
  </Accordion>

  <Accordion title="Salesbricks Brick Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Brick**–level fields to align data between the two systems effectively:

    | Field              | Definition                                                                                                 |
    | ------------------ | ---------------------------------------------------------------------------------------------------------- |
    | `id`               | A unique identifier for the brick within Salesbricks, used for consistent reference across platforms.      |
    | `name`             | The displayed name of the brick on the order line.                                                         |
    | `summary`          | A punch description of the brick that appears in the order builder.                                        |
    | `code`             | Your internal SKU code for this offering.                                                                  |
    | `cogs`             | The cost of goods sold.                                                                                    |
    | `sku_type`         | Denotes the type of brick being sold. Options: Software, Service.                                          |
    | `sku_schedule`     | The type of billing schedule associated with the brick. Options: Subscription, One-time, Milestone, Usage. |
    | `custom_unit_text` | Your custom unit of measurement for the brick.                                                             |
  </Accordion>

  <Accordion title="Salesbricks Order Brick Fields" icon="list">
    When connecting Salesbricks to your CRM, map the following **Order Brick**–level fields to align line item data between the two systems effectively:

    | Field                                     | Definition                                                                                                                                                                                             |
    | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | `name`                                    | The displayed name of the brick on the order line (uses the brick's custom name if set, otherwise the default brick name).                                                                             |
    | `quantity`                                | The quantity for this brick on the order. For usage SKUs this is the pre-commitment amount (or `1` if none is set); for other SKUs it is the ordered quantity (or the quantity delta when configured). |
    | `opportunity_id`                          | The CRM opportunity identifier linked to the order that this brick belongs to (e.g. Salesforce `Opportunity.Id`).                                                                                      |
    | `pricebook_entry_id`                      | The CRM price book entry ID associated with this brick and currency (e.g. Salesforce `PricebookEntry.Id`), used to tie the line item to the correct price book entry.                                  |
    | `product_id`                              | The CRM product ID mapped to this brick in the given currency (e.g. Salesforce `Product2.Id`).                                                                                                         |
    | `sub_total`                               | The line item value **before** any discounts are applied, in the order currency (0 when revenue schedule sync is enabled).                                                                             |
    | `total_discount`                          | The total discounts applied to this brick, including line-level and contract-level discounts (e.g. sales, one-time, duration, and contract/buyout discounts), in the order currency.                   |
    | `grand_total`                             | The final total value for this brick **after** all discounts are applied, in the order currency (0 when revenue schedule sync is enabled).                                                             |
    | `effective_unit_price`                    | The effective price per unit for this brick. By default this is the net price per unit after discounts; when discount-line-item mode is enabled it becomes the gross unit price before discounts.      |
    | `effective_unit_price_without_discount`   | The weighted average unit price **before** any discounts, after tiers are applied (i.e. pure list price per unit for this brick).                                                                      |
    | `first_year_unit_price`                   | An annualized unit price representing **only the first year's** revenue for this brick, derived by slicing the total contract value into a year-one equivalent (ignores ramping).                      |
    | `annual_unit_price`                       | The annualized unit price per unit **excluding** contract-level discount (buyout), but including line-item discounts, normalized to a 12-month period.                                                 |
    | `annual_unit_price_net_contract_discount` | The annualized unit price per unit **including all discounts**, both line-item and contract-level (i.e. "net of buyout"), normalized to a 12-month period.                                             |
    | `duration_months`                         | The total duration of the order that this brick belongs to, measured in whole months.                                                                                                                  |
    | `duration_days`                           | The total duration of the order in days, inclusive of both the start and end dates.                                                                                                                    |
  </Accordion>
</AccordionGroup>

## Resources

<CardGroup>
  <Card title="Field Definitions" icon="link" href="https://docs.google.com/spreadsheets/d/17J8wWAxeeWno_JbbZj4eeQHh8-HTa3XYYJ15tlzSSCM">
    View the complete list of Salesbricks fields, data types, and definitions for Salesforce integration.
  </Card>

  <Card title="Order Builder Guide" icon="link" href="https://drive.google.com/file/d/1kNlZiARtiaK4mQ-JsmL_o18Yb8f0PKdg/view">
    Learn how to navigate and use the Order Builder effectively.
  </Card>
</CardGroup>

If you have any questions or concerns, feel free to reach out to the Salesbricks Support team via your Slack Connect channel.


# Slack
Source: https://docs.salesbricks.com/integrations/slack



## Why your Slack integration matters

<Frame>
  <img alt="slack-notifications" />
</Frame>

Our Slack integration allows your sales, leadership, finance, and customer success teams to stay updated on order and subscription progress in real-time. Getting notifications directly within Slack accelerates your communication cycles, and helps your teams respond faster to changes.

<Tip>
  Set up one or more dedicated Slack channels for sales, renewals, and payments. Point your notifications to these channels to avoid missing critical updates.
</Tip>

## Setup

**1.** In Salesbricks, go to <a href="https://app.salesbricks.com/admin/settings/integrations">Settings -> Integrations</a>.

**2.** Click Slack and follow the prompts to connect.

**3.** Select which Salesbricks events you want to push notifications to your Slack channels.

## Events

You can set up notifications for the following types of events in Salesbricks:

### Company-wide

🎉 **Order completed**: Notify a team or the company of new deals that have been won.

### Sales

🚀 **Order stage changed**: Alert your sales team and leadership when a deal moves from `Open` to `Seller-signing` and finally to `Closed won`.

🔓 **Order share link opened**: Notify your sellers when a prospect opens a shared link.

### Leadership & Operations

📝 **Signature required**: Notify those at your company responsible for countersigning orders about deals that require a counter-signature to be fully executed.

### Finance & Collections

💳 **Payment successful**: Notify your team when a successful payment has been processed.

⏰ **Payment past due**: Notify your finance team when a payment becomes past due.

❌ **Payment failed**: Alert your team of payments that have failed.

### Customer Success

🔄 **Auto renewals**: We'll roll up a weekly list of customers set to renew automatically.

🤝 **Mutual renewals**: Your team will be alerted about upcoming and late mutual renewals.


# Sphere
Source: https://docs.salesbricks.com/integrations/sphere



## Overview

Integrating Salesbricks with Sphere enables a seamless data import from Salesbricks to Sphere, as well as live tax calculation within Salesbricks checkout & invoices.

This **two-part guide** provides step-by-step instructions on:

**1.** retrieving your Salesbricks API key and linking it to Sphere for a secure data sync

**2.** linking your Sphere Tax API key within Salesbricks to ensure accurate tax calculations

## Setup

### Part 1: Configure data synchronization from Salesbricks to Sphere

**1.** In your Sphere account, go to **Integrations**, select the **Salesbricks** tile and click **Connect**.

<Frame>
  <img alt="sphere-select-salesbricks" />
</Frame>

**2.** A modal will appear — click **Get Started** to proceed.

<Frame>
  <img alt="sphere-get-started" />
</Frame>

**3.** In Salesbricks, navigate to <a href="https://app.salesbricks.com/admin/settings/integrations">Settings -> Integrations</a>. Under the **Billing and payment** section, click **Sphere**.

<Frame>
  <img alt="salesbricks-select-sphere" />
</Frame>

**4.** Copy your **Salesbricks public API key** to your clipboard.

<Frame>
  <img alt="salesbricks-copy-key" />
</Frame>

**5.** In Sphere, paste the Salesbricks API key and click **Next**.

<Frame>
  <img alt="sphere-paste-salesbricks-key" />
</Frame>

**6.** If the connection is successful, data will begin importing, and after some time, your plans and bricks will appear in **Sphere**.

<Frame>
  <img alt="sphere-data-import" />
</Frame>

<Warning>
  **Continue on to part 2 of the setup below to ensure that the integration is fully set up, and tax is applied correctly to Salesbricks orders.**
</Warning>

### Part 2: Configure Sphere Tax API key for tax calculation

**1.** In Sphere, click **Generate API Key** to generate the Sphere Tax API key. Be sure to save the newly generated key, as it cannot be viewed again later.

<Frame>
  <img alt="sphere-generate-key" />
</Frame>

<Frame>
  <img alt="sphere-copy-key" />
</Frame>

**2.** In Salesbricks, return to the Sphere integration page, paste your Sphere Tax API key, and click **Validate**.

<Frame>
  <img alt="salesbricks-paste-sphere-key" />
</Frame>

Once configured, taxes will be calculated automatically on orders and invoices in Salesbricks.

<Frame>
  <img alt="integration-details" />
</Frame>

<Warning>
  Enabling your Sphere integration will disable any previously selected “taxed states” under <a href="https://app.salesbricks.com/admin/settings/finance">Settings → Finance</a>, as well as any custom tax codes for bricks that were previously set in Salesbricks.
</Warning>


# Overview
Source: https://docs.salesbricks.com/integrations/stripe/overview



<Tip>
  Ready to connect your Stripe account to Salesbricks? Follow our [Setup guide](/integrations/stripe/setup) to get integrated within minutes.
</Tip>

<div>
  <img alt="salesbricks-vs-stripe" />
</div>

## Stripe is for moving money

With its reliability and status as an industry standard, Stripe serves as the backbone for payment processing in Salesbricks. Stripe is integrated seamlessly into the purchasing experience on Salesbricks for payment processing, aka "money movement."

When you connect your Stripe account to Salesbricks, Stripe creates a Connect account that acts as a shared intermediary between your company and Salesbricks. Each time a buyer initiates a payment in Salesbricks, we link the transaction to the associated Customer object in your Stripe Connect account. This setup ensures that both parties have controlled access, without granting Salesbricks full read/write permissions to your primary Stripe account.

<Note>
  Other than payment processing, Salesbricks does not leverage other Stripe objects like subscriptions, invoices, or quotes; these are all functionalities we support within Salesbricks.
</Note>

## Salesbricks is for closing deals

Although Stripe drives the underlying payment infrastructure, Salesbricks offers many features that are designed to empower your B2B SaaS sales team, providing functionalities beyond what traditional Stripe features offer.

### Pricing and packaging

Pricing and Packaging in Salesbricks offers extensive support for pricing models both common and complex. Subscriptions, one-time services, usage-based billing, and percent-based pricing are some of the many features available to help customize pricing for your software or service.

### Deal shaping

Deal shaping in Salesbricks allows for bespoke control of contract periods, payment terms, ramping deal structures, order-specific pricing, discounts, and more.

### Sales-led motions

Sales-led motions are streamlined in Salesbricks, with features such as URL-based order sharing, buyer checkout, electronic payments, auto-generated order forms, and e-signatures developed in-house.

### Order management

Order management involves complicated mid-flight upsells, downsells, renewals, and deal restructuring. Salesbricks simplifies the calculations and workflows so sellers can build orders mid-flight with a few clicks of a button.

### Sales and finance analytics

Robust, interactive reports and charts provide critical insights to how your sales and finance operations are performing. With our Sales and Finance analytics, you get clarity and visibility on how your business is performing just by closing deals on Salesbricks.

Gone are the days of buying tools for your sales team from a dozen different companies – Salesbricks facilitates a seamless journey from building an order to successfully closing deals, empowering your business to drive revenue growth efficiently.

## Troubleshooting

This section contains scenarios you may encounter when configuring payment options or authorizing Stripe payments.

### ACH transactions

**Error message**: `You've exceeded your weekly ACH volume limit. To request an increased limit, please contact us via https://support.stripe.com/contact`

**Cause**: New accounts are limited to \$6,000 USD a day and \$10,000 USD a week for the first 4 months after activating your Stripe account.

**Solution**: [Contact Stripe support](https://support.stripe.com/contact) and request to raise the weekly volume limit for your ACH transactions.


# Setup
Source: https://docs.salesbricks.com/integrations/stripe/setup

Connect your Stripe account to collect credit card and ACH payments. Skip this guide if you're not using credit card or ACH payments in Salesbricks, or not using Salesbricks for billing.

## Why the Stripe integration matters

Our Stripe integration allows you to collect payments through **credit card** or **ACH** in Salesbricks, then move the money to your existing payout accounts.

To make this work, Salesbricks creates a **connected account** under your parent Stripe account. This gives us the permissions needed to manage your Salesbricks transactions — without access to the rest of your primary Stripe account.

<Warning>
  <b>Important to note:</b> The Stripe integration does not link directly to your existing Stripe account. You will be required to set up a <b>new connected (shared) account</b>, though you may be able to reuse company details already saved in Stripe (more on that in the next section below.)
</Warning>

Salesbricks leverages Stripe solely to collect payment; it does not use Stripe's subscription or invoicing functionalities. When a credit card or ACH payment needs to be processed, Salesbricks handles all of the logic around subscription, billing frequency, and payment terms, and creates a Customer object within Stripe only.

## Connecting Stripe to Salesbricks (\~10-20 mins)

<Info>
  The first few steps happen inside Salesbricks and take just a couple of clicks.

  The remaining steps happen on **Stripe's side**, where Stripe verifies your business before it can process payments. Stripe's onboarding screens vary by country and business type, so what you see may differ from the examples below.
</Info>

<Tip>
  **Have these ready before you start** (Stripe will ask for them if you're creating a new business):

  * Business details (legal name, address, and tax ID / EIN)
  * A bank account for payouts
  * Identity details for an authorized representative and any business owners
  * Public details (statement descriptor, support contact)
</Tip>

### Step 1: In Salesbricks

<Steps>
  <Step>
    In Salesbricks, navigate to <a href="https://app.salesbricks.com/admin/settings/integrations">**Settings** -> **Integrations**</a>, and click **Connect** on the Stripe card.

    <Frame>
      <img alt="click-stripe" />
    </Frame>
  </Step>

  <Step>
    Click **Connect to Stripe**. This will hand you off to Stripe to complete the rest of the setup.

    <Frame>
      <img alt="connect-to-stripe" />
    </Frame>
  </Step>
</Steps>

### Step 2: On Stripe

<Note>
  You're now on Stripe. The steps below are part of **Stripe's standard account verification** — the same process Stripe requires of any business that collects payments. The number of fields depends on your country and business type.
</Note>

<Steps>
  <Step>
    Log in to your Stripe account.

    <Frame>
      <img alt="login-to-stripe" />
    </Frame>
  </Step>

  <Step>
    If you've already set up a Stripe account, you may be able to reuse those details. Otherwise, select **Create a new account/business** and click **Continue**.

    Otherwise, If you already have a business created in Stripe but don't see the option listed, you may not have administrative permissions within Stripe to perform the integration for that account (see "Troubleshooting").

    If you are still not able to see your saved details after troubleshooting, you can create a connected account as if it were a new business. It will still link to your primary Stripe account, but you will need to fill in business details from scratch.

    <Frame>
      <img alt="select-account" />
    </Frame>
  </Step>

  <Step>
    **Complete Stripe's business verification.** If you selected an existing business, you'll mostly **review and confirm** pre-filled details. If you're creating a new business, Stripe will walk you through several screens to collect:

    * **Business details** — legal entity type, business name, address, and tax ID / EIN
    * **Bank account** — where Stripe deposits your payouts
    * **Representative & ownership** — Identity details for an authorized representative and any business owners
    * **Public details** — statement descriptor and a support contact your customers will see

    <Tip>
      This is the longest part of setup. Take your time — Stripe saves your progress, so you can pause and return if you need to gather a detail like your EIN or bank information.
    </Tip>

    <Frame>
      <img alt="enter-business-details" />
    </Frame>
  </Step>

  <Step>
    Review everything on Stripe's summary screen, then click **Agree & Submit**.

    <Frame>
      <img alt="review-details" />
    </Frame>
  </Step>
</Steps>

Congratulations! Your Stripe business account is now connected to Salesbricks.

<Frame>
  <img alt="stripe-integrated" />
</Frame>

You can now enable your customers to use credit card and/or ACH during checkout, or when paying an invoice.

<Tip>
  Read the guide on [Checkout & Invoice Payment Options](/quickstart-guide/checkout-invoice-payment-options).
</Tip>

## Troubleshooting

This section contains scenarios you may encounter when connecting your Stripe account to Salesbricks.

### Integration setup

#### You have a saved business in Stripe but it does not appear as a selectable option.

**Potential cause #1**: If you have a business created in Stripe, but do not see it listed when onboarding your connected account, you likely do not have admin permissions within Stripe to perform the integration for that account.

**Solution**: Ask the admin/owner of your Stripe business account to add admin permissions to your user.

**Potential cause #2**: Your primary Stripe account may not be linked to the email address you used for login.

**Solution**: Verify that your business is linked to the email you used for login.

**Potential cause #3**: Your business may not be available to use with Stripe's <a href="https://support.stripe.com/questions/legal-entity-sharing">Legal Entity Sharing</a> feature.

**Solution**: You will need to create the connected account as a new business. It will still link to your primary Stripe account, but to complete the integration you will need to fill in business details from scratch.


# Duration Discounts
Source: https://docs.salesbricks.com/orders/duration-discounts



## Overview

Duration discounts provide an alternative deal shaping approach to line item discounts. This method involves applying an upfront discount for a portion of the contract term.

These discounts are calculated based on the order's total contract value (TCV) and apply to subscription-based (recurring) bricks.

<Frame>
  <img alt="duration-discounts" />
</Frame>

## Setup

**1.** <a href="https://app.salesbricks.com/admin/orders">Create an order</a> and select a product, plan, and bricks.

**2.** Under the "Discounts and billing" section, click "Add/Edit discount."

**3.** Use the "Discounts by month" section to add a duration discount to the order.

## How duration discounts work

* **Contract-level discounts:** Duration discounts are applied to the TCV, rather than individual line items.
* **Recurring bricks only:** Duration discounts apply to recurring charges (plan and/or subscription-based bricks), but excludes non-recurring charges such as usage and bricks charged one-time upfront.
* **One-time discounts:** Duration discounts are one-time discounts, and do not carry over into subsequent agreements.
  * **Example 1:** You close a **15-month initial contract** with automatic renewal terms, and a **50% discount for the first 3 months**.<br />This order would autorenew as another 15-month contract (having inherited the original contract length). However, the duration discount from the initial deal would not apply to the renewal.
  * **Example 2:** You close a **7-month initial contract** with automatic renewal terms, and a **100% discount for all 7 months**.<br />This order would autorenew as another 7-month contract with no duration discount applied.

## Formula

<Info>
  #### **Discount (in dollars) = grand total of subscription bricks × (*n* ÷ total contract months) × (*r* ÷ 100)**

  * *n* = number of months the discount applies
  * *r* = discount rate
</Info>

**Example calculation:**

* **Grand total of subscription bricks:** \$1,000
* **Total contract months**: 12 months
* **Number of discounted months** (*n*): 6 months
* **Discount rate** (*r*): 10%
* **Discount amount** = \$1,000 × (6 ÷ 12) × (10 ÷ 100) = **\$50**

## Use case 1

In this example, we apply duration discounts to a contract with a quarterly billing schedule.

**Order details:**

|                                                                  |                            |
| ---------------------------------------------------------------- | -------------------------- |
| **TCV**                                                          | \$1200                     |
| **Duration discount**                                            | 50% off the first 5 months |
| **Total duration discount**<br />*(Per month × rate × duration)* | \$250                      |
| **Expected revenue**<br />*(TCV - discounts)*                    | \$950                      |

**Invoices:**

|        | Grand total | Total months discounted | Total period discount       | Expected bill |
| ------ | ----------- | ----------------------- | --------------------------- | ------------- |
| **Q1** | \$300       | 3                       | \$150                       | \$150         |
| **Q2** | \$300       | 2                       | \$100                       | \$200         |
| **Q3** | \$300       | 0                       | 0                           | \$300         |
| **Q4** | \$300       | 0                       | 0                           | \$300         |
|        |             |                         | **Total expected bill**     | **\$950**     |
|        |             |                         | **Total discounted months** | **5**         |

Alternatively, you may also apply a combination of discount durations and line item discounts to an order, such as in this example:

**Order details:**

|                            |                                                         |
| -------------------------- | ------------------------------------------------------- |
| **TCV**                    | \$1200                                                  |
| **Discount per line item** | 10% sales rate = \$120                                  |
| **Adjusted TCV**           | \$1080                                                  |
| **Discount by duration**   | 50% off the adjusted TCV for the first 5 months = \$225 |
| **Expected revenue**       | \$855                                                   |

**Invoices:**

|        | Grand total<br />*(after line item discounts)* | Total months discounted | Total period discount       | Expected bill |
| ------ | ---------------------------------------------- | ----------------------- | --------------------------- | ------------- |
| **Q1** | \$270                                          | 3                       | \$135                       | \$135         |
| **Q2** | \$270                                          | 2                       | \$90                        | \$180         |
| **Q3** | \$270                                          | 0                       | 0                           | \$270         |
| **Q4** | \$270                                          | 0                       | 0                           | \$270         |
|        |                                                |                         | **Total expected bill**     | **\$855**     |
|        |                                                |                         | **Total discounted months** | **5**         |

## Use case 2

If you upsell a deal with duration discounts before the end of the discounted period, the duration discounts would not apply to the co-termed upgrade, but will continue to apply to the base deal.

**Initial order details:**

|                          |                                                      |
| ------------------------ | ---------------------------------------------------- |
| **Start date**           | Jan 1 2024 - Jan 1 2025                              |
| **TCV**                  | \$1200                                               |
| **Discount by duration** | 50% off the first 5 months = \$250 or \$50 per month |
| **Expected revenue**     | \$950                                                |

**Upgrade order details:**

|                |                         |
| -------------- | ----------------------- |
| **Start date** | Feb 1 2024 - Jan 1 2025 |
| **TCV**        | \$1100                  |

**Invoices:**

|                            | Jan - March                             | Apr - June | Jul - Sep | Oct - Dec |
| -------------------------- | --------------------------------------- | ---------- | --------- | --------- |
| **Initial order**          | \$150                                   | \$200      | \$300     | \$300     |
| **Upgrade order**          | \$200<br />*(prorated for Feb & March)* | \$300      | \$300     | \$300     |
| **Combined expected bill** | \$350                                   | \$500      | \$600     | \$600     |


# Usage Alerts
Source: https://docs.salesbricks.com/products/usage-alerts



## Overview

Usage alerts keep sellers and customers informed when a usage-based brick approaches or exceeds a defined threshold.

Overages may introduce unexpected costs to sellers, especially in cases involving cloud infrastructure with penalty rates. Usage alerts help you monitor and plan capacity proactively.

This feature prevents surprise overages by triggering timely emails to the appropriate parties, which is important for managing your operational costs and maintaining transparency with your customer.

<Frame>
  <img alt="usage-alert-email" />
</Frame>

## Key components

* **Threshold-based email notifications**: automatically send email alerts when a customer has crossed one of the following types of thresholds for a certain brick:
  * **Pre-committed**, e.g. the customer has used 90% of their pre-committed units
  * **Units**, e.g. the customer has used 100 units this month
  * **Monetary**, e.g. the customer has spent \$100 on usage this month
* **Dual-party visibility**: notify both internal teams and the customer so that proactive steps can be taken on either side.

## Setup

1. Go to <a href="https://app.salesbricks.com/admin/products">Products</a>.
2. Select a product, then select a plan.
3. Click the edit icon.
4. Scroll to the "Bricks" section, and click "Edit bricks."
5. On the right side of the Bricks page, hover over a **usage brick** and click the edit icon.
6. For the question "Do you want to set usage thresholds to trigger notifications for this brick?" click "Yes."

<Frame>
  <img alt="usage-alerts" />
</Frame>

7. Add one or more usage thresholds.
8. Save your changes and republish the plan.

Now you will be able to select this plan and brick when building an order. Once the order is closed won and this customer's usage is logged in Salesbricks, be on the lookout for these alerts!


# Adding Team Members
Source: https://docs.salesbricks.com/quickstart-guide/adding-team-members



## Who should be added to Salesbricks?

As you configure and rollout Salesbricks within your organization, you will need to add a variety of different individuals, usually in the order below:

<AccordionGroup>
  <Accordion title="Product Marketing">
    Responsible for configuring your company's logo, branding, and marketing copy.
  </Accordion>

  <Accordion title="Pricing & Packaging expert">
    This individual or team will build your bricks, plans, and products that make up your pricing and packaging.
  </Accordion>

  <Accordion title="Legal">
    Will ensure that all legal documents, such as Master Service Agreements (MSA) and Commercial Terms are up-to-date and ready for use.
  </Accordion>

  <Accordion title="Finance">
    Configure the connection to finance systems like Stripe, and help implement the flow of any revenue schedules pushed from Salesbricks to your CRM or accounting systems. They will also handle sales tax.
  </Accordion>

  <Accordion title="IT & CRM Admins">
    Facilitate connecting to your CRM like Salesforce or HubSpot.
  </Accordion>

  <Accordion title="Sales">
    After your sales team is trained, they will be building orders within Salesbricks, communicating with your customers, and closing deals 🤑!
  </Accordion>
</AccordionGroup>

## Adding a team member

**1.** Navigate to <a href="https://app.salesbricks.com/admin/settings/team">Settings -> Team</a> and click the **New team member** button.

<img alt="new-team-member" />

**2.** Fill out the team member details and click **Save**.

<Frame>
  <img alt="team-member-details" />
</Frame>

**3.** Your team member will receive an email to **activate their account** and **create a password**.

<Frame>
  <img alt="activation-email" />
</Frame>

## Company admin vs. non-admin permissions

Salesbricks provides distinct roles for admin and non-admin users, tailored to support different levels of access and functionality within your team. Below is a comparison of their permissions and capabilities:

### Shared capabilities

Both admin and non-admin users can:

* **Create, share, and close orders** in Salesbricks.
* **Access the Billing page**, where they can view and manage all customer invoices.
* **View reports and charts**, which provide aggregated company-wide data.

### Admin capabilities

Admins have advanced access to manage platform-wide settings and operations, including:

* **View and manage all orders and subscriptions** across the team.
* **Manage products, plans, and bricks** (pricing and packaging settings).
* **View and manage company settings**, including branding, financial, and legal settings.
* **Manage integrations** and customer-facing notifications.

### Non-admin capabilities

Non-admins have limited access:

* **View and manage orders and subscriptions** they created, or are attributed to.
* **Read-only access to pricing and packaging** (products, plans, and bricks).
* **Read-only access to company settings**.

| Capability                                | Admins | Non-admins                  |
| ----------------------------------------- | ------ | --------------------------- |
| Create, share, and close orders           | ✅      | ✅                           |
| Access Billing page & manage all invoices | ✅      | ✅                           |
| Access Reports & Charts                   | ✅      | ✅                           |
| View/manage all orders & subscriptions    | ✅      | Limited to assigned/created |
| Manage products, plans, & bricks          | ✅      | Read-only                   |
| View & manage company settings            | ✅      | Read-only                   |
| Manage integrations & notifications       | ✅      | ❌                           |


# Building an Order
Source: https://docs.salesbricks.com/quickstart-guide/building-an-order



## Initiate the Order

In Salesbricks, navigate to <a href="https://app.salesbricks.com/admin/orders">Orders</a> and click "New order."

Choose the order intent:

**New subscription**: Create a fresh agreement for a customer.

**Existing subscription**: Upgrade, renew, or recast an existing agreement.

## Customer Details

**Customer name:** The name of the customer.

<Accordion title="Note: If you have a CRM connected...">
  Salesbricks streamlines data entry by pulling records directly from your connected CRM (e.g., Salesforce or HubSpot).

  **Customer:** Search for an existing account from your CRM. Any fields mapped from Salesbricks to your CRM will be synced to the associated customer.

  **Customer legal name:** You may provide the customer's legal name to be displayed during checkout, as well as on the front page of the order form PDF.

  **CRM opportunity:** A search field to pull the opportunity or deal from your CRM. Data from this order will be synced to the associated opportunity or deal in your CRM.
</Accordion>

<Info>
  Pre-populating other customer info (address, point of contact, etc.) is optional. Your customer will have the opportunity to complete these fields during checkout.
</Info>

**Account representative:** The team member who is in charge of managing the order.

**Account co-owners:** You may assign other users who will manage this subscription, in addition to the account representative.

**Order description:** Brief description of the order.

## Deal Structure

This section defines the timelines and billing logic for the agreement:

**Start date and Contract period (number of months):** The end date will update dynamically based on your selections.

**Billing frequency:** How often would you like this customer to receive invoices? Choose one of the following options:

* Monthly
* Quarterly
* Semi-annually
* Annually
* All upfront

**Currency:** Select one of the currency options supported by your company. New orders default to USD.

<Tip>
  You may update your supported currencies under <a href="https://app.salesbricks.com/admin/settings/finance">Settings -> Finance</a>.
</Tip>

**Payment terms:** How many days after the billing date will an invoice be considered past due? Choose one of the following options:

* Due on receipt
* Net 10 (Due after 10 days)
* Net 15 (Due after 15 days)
* Net 30 (Due after 30 days)
* Net 45 (Due after 45 days)
* Net 60 (Due after 60 days)
* Net 90 (Due after 90 days)

**First charge/invoice date:** When would you like this customer to be charged/invoiced for their first payment? Choose one of the following options:

|                         | If the customer checks out via order form:                                                    | If the customer checks out via electronic payment:                                                                                                                    |
| ----------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Contract start date** | they will receive the invoice on the declared "Start date"                                    | they will be prompted to enter their payment info (credit card or ACH) during checkout, and their payment method will be charged on the declared "Start date"         |
| **Checkout date**       | they will receive the invoice immediately upon signing the order form and completing checkout | they will be prompted to enter their payment info (credit card or ACH) during checkout, and their payment method will be charged immediately upon completing checkout |

<Info>
  The first charge/invoice date applies whether the customer completes checkout, or you close the order manually.
</Info>

## Product

**Product:** Select the product for this order.

**Plan:** Select the plan for this order.

**Add-ons:** Add the desired bricks to this order.

## Discounts

**Sales discount:** Discounts which carry over to the next agreement.

**One-time discount:** Discounts which only apply to this specific agreement, and do not carry over to the next agreement.

**Expiration date:** When should this discount expire?

**Minimum spend:** The minimum TCV required for the discount to apply.

## Agreements

**Terms and Conditions:** Your Master Service Agreement. When you create a new Order, Salesbricks automatically includes the terms document you uploaded in the Settings page.

**Commercial Terms:** Any terms specific to this order.

<Tip>
  If you need to adjust and redline your terms, click on the download cloud button, redline the terms with your prospect, and then click the upload cloud button to attach the clean terms to the Order.
</Tip>

**Renewal Type:** Choose one of the following options:

* Auto-renewal (Renews when contract expires)
* Mutual (Buyer must agree to renewal)

**Renewal contract period:** if the current order autorenews, it inherits the current contract length by default. You may override this by specifying a contract length for subsequent renewals.

## Share the Order

After you save the order, click on the Share order button to email the link to your customer, or to copy the URL to your clipboard.

Your customer has the opportunity to review the order and request changes, or approve and continue on to checkout and closing the deal.

<Frame>
  <img alt="share-order-button" />
</Frame>


# Checkout & Invoice Payment Options
Source: https://docs.salesbricks.com/quickstart-guide/checkout-invoice-payment-options



## Overview

Checkout and invoice billing options can be configured to meet your business's and buyer's needs.

## Checkout payment options

During the final step of the buyer checkout process, your customer can select how they would like to execute the order.

You can customize the payment options available to your customer at checkout:

### Order form checkout

<img alt="order-form-checkout" />

<a href="/quickstart-guide/checkout-invoice-payment-options#order-form-e-signature">Order Form e-signature</a> must be enabled to make this option visible to buyers.

With this option, the customer will need to provide a signatory, the individual authorized to sign the order form in Salesbricks.

If the signatory is the same person as the one checking out, they will be able to review an electronic version of the order form and provide an e-signature.

If the signatory is a different person than the one at checkout, they will receive an email containing a link that leads them to review and sign the order form.

After the signatory has signed the order form, your company's designated **document signer** will be notified to countersign.

<Warning>
  Please note that both buyer and seller must sign for the order to be fully executed and move to closed won.
</Warning>

Customers can also enter a purchase order number and their accounts payable at checkout.

An invoice with net terms applied to the due date will be emailed to the point of contact and accounts payable.

### Electronic checkout

<img alt="credit-card-checkout" />

Either <a href="/quickstart-guide/checkout-invoice-payment-options#credit-card">credit card</a> or <a href="/quickstart-guide/checkout-invoice-payment-options#ach-debit">ACH debit</a> must be enabled to make this option visible to buyers.

With this option, no signatures are required to close the order. Instead, buyers must click a checkbox indicating that they agree to your company's terms and conditions.

The customer will receive a receipt via email after the payment is processed successfully.

Payments are billed immediately (net terms do not apply).

Customers will be enrolled in autopay for future payments.

<Info>
  The credit card and bank transfer options are powered by Stripe, and Stripe processing fees may apply.
</Info>

### Pros and cons

When setting up your checkout options, it's important to balance customer convenience with operational efficiency. Here's a quick comparison of using order form vs electronic checkout:

#### Order form checkout

<table>
  <thead>
    <tr>
      <th>Pros</th>
      <th>Cons</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * **Formal contract execution:** requires both parties to sign a clear, legally binding document that can be referenced down the line.
        * **Streamlined recordkeeping:** signed order forms can reduce disputes and provide clarity in long-term agreements.
      </td>

      <td>
        * **Slower closing process:** collecting signatures can add friction, leading to delays in deal closure.
        * **Invoice management:** without upfront payment, your team may spend more time chasing down payment methods and outstanding invoices.
      </td>
    </tr>
  </tbody>
</table>

#### Electronic checkout

<table>
  <thead>
    <tr>
      <th>Pros</th>
      <th>Cons</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        * **Frictionless checkout:** customers can complete transactions quickly by simply entering payment details and agreeing to your terms.
        * **Immediate payment:** collecting electronic payment methods at checkout reduces the risk of past due invoices.
        * **Lower administrative overhead:** electronic payment processing is automated, freeing up your team to focus on other priorities.
      </td>

      <td>
        * **Less formal documentation:** the customer agrees to your terms by clicking a checkbox. While this motion is as binding as a contract pre-signed by the seller party, a fully executed formal document may offer more peace of mind.
        * **Delayed payment processing:** Bank transfer (ACH processing) may take up to 4 business days.
      </td>
    </tr>
  </tbody>
</table>

#### Which should you choose?

<table>
  <thead>
    <tr>
      <th>Enable order form checkout if...</th>
      <th>Enable electronic checkout if...</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        ...you prioritize a formal B2B purchasing process and fully executed contract
      </td>

      <td>
        ...you prefer automated, scalable transactions with minimal administrative overhead
      </td>
    </tr>
  </tbody>
</table>

## Setup

Navigate to <a href="https://app.salesbricks.com/admin/settings/finance">Settings -> Finance</a>.

<img alt="global-payment-options" />

### Order Form e-signature

This option allows your customers to close via order form.

#### Minimum Total Contract Value required to use Order Form e-signature

If you enable Order Form e-signature, you can also set a minimum TCV (total contract value) amount in order for the customer to select order form at checkout.

<Frame>
  <img alt="minimum-tcv-required" />
</Frame>

In the image above, the minimum TCV requirement is set to \$1,000. This means that if the TCV of a given order is less than \$1,000, the order form option will be hidden during checkout.

### Credit card

Your customer will be able to pay by credit card during checkout.

### ACH debit

Your customer will be able to pay by bank transfer.

<img alt="ach-debit-checkout" />

## Invoice payment options

Each invoice has a clickable link that leads your customer to an electronic paywall powered by Salesbricks.

You can customize the payment options available to the customer at the time of paying the invoice.

Opt in or out of the following options:

### Credit card

Your customer will be able to pay the invoice by credit card, and can save credit card details for future payments.

### ACH debit

Your customer will be able to pay the invoice by providing their bank details, and can save bank details for future payments.

<Info>
  The credit card and ACH debit options are powered by Stripe, and Stripe processing fees may apply.
</Info>

### Wire transfer

<img alt="wire-transfer" />

Include wire instructions on your invoices.

Currently, this option is included by default on all invoices and will reflect the banking information entered under <a href="https://app.salesbricks.com/admin/settings/finance">Settings -> Finance</a>.

<Note>
  Buyers will be enrolled in autopay after their first invoice payment.
</Note>


# Company Details & Branding
Source: https://docs.salesbricks.com/quickstart-guide/company-details-and-branding

Tailor your Salesbricks site to your organization

**1.** Navigate to <a href="https://app.salesbricks.com/admin/settings/company">Settings -> Company</a>.

**2.** Click the edit icon. <img alt="edit-icon" />

**3.** Fill out your company information.

<Frame>
  <img alt="company-details" />
</Frame>

**4.** Navigate to <a href="https://app.salesbricks.com/admin/settings/branding">Settings -> Branding</a>.

**5.** Click the edit icon. <img alt="edit-icon" />

**6.** Upload your company logos.

<div>
  <img alt="logo-upload" />
</div>

<Tip>
  We recommend uploading your logo in **.png** format, with a transparent background.

  Logos in **.jpg** format are supported as well.
</Tip>

**7.** Add a primary color by entering your hexadecimal color code.

<Note>
  This color will be listed on your company's branding guide, if available. You can also easily capture the background color of your company's website with a tool like the [ColorPick Eyedropper Chrome Extension](https://chrome.google.com/webstore/detail/colorpick-eyedropper/ohcpnigalekghcmgcdcenkpelffpdolg).
</Note>


# Getting Started
Source: https://docs.salesbricks.com/quickstart-guide/getting-started



Welcome to Salesbricks!

This guide will help you prepare your team to build and close your first order.

Whether you want to provide your customers a frictionless checkout experience, automate your subscription billing, offer flexible pricing and contract terms, or manage customer subscriptions seamlessly, setting your team up on Salesbricks is the key to your success.

## Overview

1. <a href="/quickstart-guide/getting-started#1-update-your-company-settings">Update your company settings</a>

2. <a href="/quickstart-guide/getting-started#2-integrate-your-stripe-account">Integrate your Stripe account</a>

3. <a href="/quickstart-guide/getting-started#3-select-your-customers-payment-options">Select your customers' payment options</a>

4. <a href="/quickstart-guide/getting-started#4-set-up-pricing-and-packaging">Set up pricing & packaging</a>

## 1. Update your company settings

**a.** In Salesbricks, go to <a href="https://app.salesbricks.com/admin/settings/company">Settings</a>.

**b.** Complete the following sections:

* <a href="https://app.salesbricks.com/admin/settings/company">Company</a> (set company details & contact info)
* <a href="https://app.salesbricks.com/admin/settings/team">Team</a> (add users & define roles)
* <a href="https://app.salesbricks.com/admin/settings/branding">Branding</a> (upload company logo & set brand color)
* <a href="https://app.salesbricks.com/admin/settings/legal">Legal</a> (upload terms & set document signer)
* <a href="https://app.salesbricks.com/admin/settings/finance">Finance</a> (provide banking info & set payment options)

<Tip>
  This <a href="https://sendspark.com/share/ey4uuhgu1r78fh60">video guide</a> walks you through how each field is used in the platform.
</Tip>

### Why your company settings matter

<Frame>
  <img alt="buyer-checkout" />
</Frame>

When you customize your settings, you tailor the Salesbricks platform to your company's image and goals: order links showcase your logo and product; invoices include your address and bank instructions. Completing this step means that your branding, legal, and financial information are ready for a seamless sales process.

## 2. Integrate your Stripe account

**a.** In Salesbricks, go to <a href="https://app.salesbricks.com/admin/settings/integrations">Settings -> Integrations</a>.

**b.** Click Stripe and follow the prompts on screen (along with our <a href="/integrations/stripe/setup">detailed setup guide</a>) to create a Stripe Connected account.

### Why your Stripe integration matters

<div>
  <img alt="salesbricks-vs-stripe" />
</div>

Salesbricks leverages Stripe for credit card & ACH payments. Integrating your Stripe account ensures that your payment process is compliant and automated, minimizing manual intervention.

<Tip>
  Read more about how we use Stripe within the Salesbricks platform <a href="/integrations/stripe/overview">here</a>.
</Tip>

## 3. Select your customers' payment options

**a.** In Salesbricks, go to <a href="https://app.salesbricks.com/admin/settings/finance">Settings -> Finance</a>.

**b.** Click the Edit icon and select the payment options you want to enable for **checkout** (customer purchase), as well as how your customers can **pay an invoice**.

### Why your customers' payment options matter

Now that your Stripe account is integrated, you can enable secure, instant transactions online by allowing your customers to pay via credit card or ACH debit.

<Tip>
  <a href="/quickstart-guide/checkout-invoice-payment-options">Click here</a> to read a detailed guide about our variety of payment options.
</Tip>

## 4. Set up pricing & packaging

**a.** In Salesbricks, go to <a href="https://app.salesbricks.com/admin/products">Products</a>.

**b.** Create a product.

<Card title="Read our guide on creating a product:" icon="book" href="/quickstart-guide/products-plans-bricks/creating-a-product">
  [https://docs.salesbricks.com/quickstart-guide/products-plans-bricks/creating-a-product](https://docs.salesbricks.com/quickstart-guide/products-plans-bricks/creating-a-product)
</Card>

**c.** Within your product, create a plan.

<Card title="Read our guide on creating a plan:" icon="book" href="/quickstart-guide/products-plans-bricks/creating-a-plan">
  [https://docs.salesbricks.com/quickstart-guide/products-plans-bricks/creating-a-plan](https://docs.salesbricks.com/quickstart-guide/products-plans-bricks/creating-a-plan)
</Card>

**d.** Within your plan, click "Edit bricks" to start adding bricks to your plan.

**e.** Click "+ New brick" to create a brick, which you could then add to your plan.

<Card title="Read our guide on creating a brick:" icon="book" href="/quickstart-guide/products-plans-bricks/creating-a-brick">
  [https://docs.salesbricks.com/quickstart-guide/products-plans-bricks/creating-a-brick](https://docs.salesbricks.com/quickstart-guide/products-plans-bricks/creating-a-brick)
</Card>

**f.** Define your pricing and publish your plan.

### Why pricing & packaging matters

<Frame>
  <img alt="brick-relationship-diagram" />
</Frame>

Configuring your pricing in advance will set you up for repeatable sales motions. From here, you will be able to build orders using your preset pricing.

Alternatively, our order builder allows you override your preset pricing at the time of order creation, to build out an entirely bespoke proposal for your customer.

## Next Steps

Once you complete these steps, you'll be ready to hit the ground running and start managing deals on Salesbricks.

You could use this opportunity to continue connecting other integrations:

<AccordionGroup>
  <Accordion title="CRM">
    Currently, we support integration with <a href="/integrations/salesforce/overview">Salesforce</a> or <a href="/integrations/hubspot">HubSpot</a>.

    #### Why your CRM integration matters

    Integrating your CRM will enable you to quote and close orders in Salesbricks, and allow the order data to sync across both systems for org-wide visibility and continuity.
  </Accordion>

  <Accordion title="Slack">
    <a href="/integrations/slack">Click here</a> to start setting up your Slack integration.

    #### Why your Slack integration matters

    Our Slack integration allows your sales, leadership, finance, and customer success teams to stay updated on order and subscription progress in real-time. Getting notifications directly within Slack accelerates your communication cycles, and helps your teams respond faster to changes.
  </Accordion>

  <Accordion title="Quickbooks">
    <a href="/integrations/quickbooks">Click here</a> to start setting up your Quickbooks integration.

    #### Why your Quickbooks integration matters

    Our Quickbooks integration allows you to automate your invoice, billing, and accounting workflows by seamlessly syncing invoices, customers, and payments from Salesbricks into Quickbooks.
  </Accordion>
</AccordionGroup>

Aside from these, it's time to build your very first order - you can read more about that <a href="/quickstart-guide/building-an-order">here</a>.

For any additional help or troubleshooting, please reach out to Salesbricks Support via Slack.


# Introduction
Source: https://docs.salesbricks.com/quickstart-guide/introduction

Close more deals faster with the simplest way to buy and sell software.

<Tip>
  Ready to start using Salesbricks? Check out our guide to [Getting Started](/quickstart-guide/getting-started).
</Tip>

<Frame>
  <img alt="selling-made-easy" />
</Frame>

## Overview & value proposition

Salesbricks is the Shopify for B2B SaaS companies. Whether you are the founder of a new company or part of a larger organization, Salesbricks facilitates:

* **Building the sales infrastructure** to power SaaS transactions for your organization.
* **Automating administrative processes** around pricing, quoting, billing, and invoicing.
* **Setting guardrails** for your sales teams, ensuring best practices are followed.
* **Ensuring consistency** across all your deals, including contract management.
* **Making the purchase** experience magical for your team and customers alike.
* **Managing entitlements** for the features your customers have purchased.

Most importantly, Salesbricks **establishes the foundation** for your SaaS transactions, allowing push-button access to mission-critical data in the event of an IPO, acquisition, or other exit event -- data that otherwise is locked away in PDFs and spreadsheets.

Enjoy the only platform that lets buyers close, sign, and pay in one seamless motion.


# Navigating Salesbricks
Source: https://docs.salesbricks.com/quickstart-guide/navigating-salesbricks



To help you get started, this page offers an overview of the platform's core sections, their key features, and best practices to maximize efficiency.

## Orders

<Frame>
  <img alt="orders" />
</Frame>

The <a href="https://app.salesbricks.com/admin/orders">Orders</a> page allows you to view and manage all customer agreements efficiently.

### Actions

**View an order:** Access contract terms and export order forms.

**Create an order:** Generate net new orders or next agreements for existing customers.

**Edit an order:** Update the terms of an open order before sharing the checkout link with the customer.

**Search for an order:** Locate orders using order ID, customer name, subscription ID, or invoice ID.

### Notable columns

**Contract value:** Shows the total contract value (TCV) and indicates the method used to close an order (order form e-signature, credit card, ACH, auto-renewal, manual close).

**Status:** Displays real-time updates (e.g. open, awaiting countersign, closed won).

### Best practices

* Double-check order details before sharing an order link with the customer.
* Monitor the status column to stay updated on the progress of orders.
* Alternatively, set up your Slack notifications to receive real-time updates any time an order's status changes.

## Customers

<Frame>
  <img alt="customers" />
</Frame>

Use the <a href="https://app.salesbricks.com/admin/customers">Customers</a> page to manage all customer relationships and subscriptions.

### Actions

**View subscription details:** access entitlements, usage, current spend, and renewal expectations.

**Update subscriptions:** Execute upgrades, renewals, or recasts.

**Terminate subscriptions:** End agreements when necessary.

**Edit customer details:** Update legal and DBA names, addresses, point of contact, and accounts payable.

**Manage usage:** View and upload usage for each of your customers.

**Mark milestones:** Log milestone completion to trigger billing processes.

### Notable columns

**Current spend:** Displays total spend, including recurring and non-recurring charges, as well as pre-committed usage (pay-as-you-go usage is not included).

**Renewal expectation:** Projects the total contract value (TCV) for renewals.

### Best practices

* Send your customer their <a href="https://support.salesbricks.com/articles/6616036172-change-credit-card-details">Customer portal link</a> to self-manage their invoices, payment methods, and company info securely.
* To find a specific customer, use the search function on the Customers page the same way you would on the Orders page.

## Billing

<Frame>
  <img alt="billing" />
</Frame>

The <a href="https://app.salesbricks.com/admin/billing">Billing</a> page is our central hub for managing your customers' invoices. It provides real-time visibility into unpaid and at-risk invoices, empowering your team with the tools to track, collect, and reconcile outstanding revenue.

### Key features

**Default view:** unpaid and at-risk invoices

Upon viewing the Billing page, users see a list of invoices requiring attention. The default view includes invoices with the following statuses:

* Outstanding: Unpaid invoices
* Due: Invoices with an upcoming payment due
* Past due: Invoices overdue for payment
* Partially paid: Outstanding balance has not been fully paid
* Paid: Invoice has been paid in full

**Search**

Enter the ID of a specific invoice, or the name of a customer, for a holistic view of their billing history. Filter your search results based on status, dates, payment methods, and invoice amounts.

### Actions

**View invoice:** Access the full invoice details for review or sharing.

**Share invoice:** Send invoices directly to customers' emails.

**Edit invoice:** Adjust invoice details, such as modifying the amount. Useful for resolving disputes or making corrections.

**Record a payment:** Log payments manually for invoices, typically those completed via check or wire.

### Notable columns

**Autopay**: Informs whether the customer will be charged automatically for future invoices. You can opt to charge a customer immediately after the invoice is issued, or wait until payment is due.

If you turn off autopay, the customer will need to visit the payment link on the invoice to make payment.

**Payment:** Offers visibility into the status of the latest payment:

* Failed: Payment was attempted and requires follow-up
* Processing: Transactions in progress
* Matched with QuickBooks: Payments matched with QuickBooks records
* Manual reconciliations: Partial or full payments completed via check or wire, and recorded manually

**Invoiced Date:** Indicates the billing date, which is the start date of the service period

### Best practices

* Check the Billing page regularly to address outstanding and past due invoices promptly.
* Review invoice statuses regularly to maintain accurate records of manual and Quickbooks-synced payments.
* Use the search functionality to quickly locate specific invoices or check payment histories during audits.

## Renewals

<Frame>
  <img alt="renewals" />
</Frame>

The <a href="https://app.salesbricks.com/admin/renewals">Renewals</a> page gives sellers centralized visibility into all customer subscriptions approaching renewal. Use it to proactively monitor upcoming renewals, track statuses, and take action to maximize retention and revenue.

### Key features

**Default view:** subscriptions approaching renewal

Upon viewing the Renewals page, users see a table of subscriptions with key renewal details, including customer info, renewal dates, spend amounts, and current status.

Quick-view metric cards at the top surface total renewal value, upcoming renewals, and past due renewals, with one-click filters to drill into each segment.

**Search:** Locate renewals quickly by searching for a customer name or subscription ID. Use sort and filter controls to narrow down renewals requiring immediate attention.

**Renewal details:** Click into any renewal to access subscription terms, contract details, billing history, and renewal activity — ideal for preparing effective renewal conversations.

**Export functionality:** Export renewal data as a CSV for reporting, team collaboration, and integration with external tools.

### Actions

**View renewal details:** Drill into a subscription to see entitlements, current spending, and renewal history.

**Create renewal order:** Generate a renewal order based on the existing subscription, with options to modify entitlements and contract terms.

**Terminate subscription:** End the subscription if the customer plans to churn or not renew.

**Flag for upsell:** Mark a renewal as a growth opportunity — ideal for coordination with account managers.

To access these actions, click the three-dot menu on the right-hand side of each row.

### Notable columns

**Renewal date:** Shows the renewal date, as well as amount of days until then, helping you prioritize outreach.

**Status:** Displays the current renewal state so you can quickly identify which renewals need attention.

**Current spend:** Indicates the customer's current contract value, useful for gauging renewal importance.

### Best practices

* Review regularly to catch past-due renewals before they slip.
* Use the "Flag for upsell" action to coordinate growth opportunities with your account management team.

Read our in-depth docs for Renewals Management <a href="/renewals/renewals-management">here</a>.

## Products

<Frame>
  <img alt="products" />
</Frame>

The <a href="https://app.salesbricks.com/admin/products">Products</a> page allows you to centralize and customize your product offerings and pricing strategies.

### Actions

**Manage products:** Build and refine your price book.

**Manage plans:** Develop multiple plans within a product, each with tailored offerings and a unique price point.

**Configure bricks:** Customize add-ons (bricks) to enhance plan flexibility.

### Best practices

* Group comparative plans under the same product for simple, straightforward organization.
* Any time a plan's pricing structure changes, re-publish the plan to use this version when building an order.

<Tip>
  Read more on [products](/quickstart-guide/products-plans-bricks/creating-a-product) and [plans](/quickstart-guide/products-plans-bricks/creating-a-plan).
</Tip>

## Bricks

<Frame>
  <img alt="bricks" />
</Frame>

<a href="https://app.salesbricks.com/admin/bricks">Bricks</a> allow you to add modularity to your plans by incorporating a variety of add-ons.

### Actions

**Manage bricks:** Create and configure different types of add-ons for your plans: subscription, one-time, usage-based, and milestone.

### Best practices

* Use milestone bricks to streamline billing tied to project completion.
* Regularly review usage and subscription bricks for potential optimizations.
* Ensure all bricks align with your overarching sales strategy.

<Tip>
  Learn more about bricks [here](/quickstart-guide/products-plans-bricks/creating-a-brick).
</Tip>

## Reports

<Frame>
  <img alt="reports" />
</Frame>

Use the <a href="https://app.salesbricks.com/admin/reports">Reports</a> page for actionable insights from real-time revenue and customer analytics.

### Key features

Access a suite of reports and charts to monitor business trends, including monthly revenue, customer count, bookings, renewals, and invoicing.

<Tip>
  Read our in-depth docs for Reports & Charts [here](/documentation/reports-and-charts).
</Tip>

### Best practices

* Schedule regular reviews of key metrics to identify opportunities and risks.
* Use filters to narrow the focus of reviewable data.
* Share insights with your team to drive collaboration and informed decision-making.

## Settings

<Frame>
  <img alt="settings" />
</Frame>

The <a href="https://app.salesbricks.com/admin/settings">Settings</a> page is where you can customize the platform to align with your company's branding, processes, and integrations.

### Key features

**Manage company details:** Update your company info and contact details.

**User management:** Add and edit users within your seller org.

**Branding:** Customize customer-facing documents and platform visuals.

**Legal:** Manage your boilerplate terms & conditions, privacy policies, and related documents.

**Financial settings:** Manage bank details, supported currencies, and upload your W-9.

**Integrations:** Connect your CRM, finance system, and Stripe account.

**Notifications:** Set up Slack notifications for real-time updates.

**API & webhooks:** Leverage webhooks and the public API for custom integrations.

### Best practices

* Review and update company branding periodically to maintain relevance.
* Test integrations to verify that data flows seamlessly from Salesbricks.
* Use webhooks to automate recurring tasks and improve efficiency between Salesbricks and your system.


# Creating a Brick
Source: https://docs.salesbricks.com/quickstart-guide/products-plans-bricks/creating-a-brick



## What's a Brick?

**Bricks** are a crucial part of your pricing and packaging structure. They are the lowest-level data point within a SaaS transaction where pricing is assigned.

You can think of a brick as a line-item SKU on your transaction.

When checking out at the store, your receipt will have several lines (especially if you're like me and can't stop grabbing things you don't really need). Each line item (block of cream cheese, pellet grill, smart-controlled heated socks, etc) represents a SKU (stock keeping unit).

Just as the name denotes, these are items that you are interested in keeping track of in your SaaS inventory.

## How to Create a Brick

<Card title="Take me there" icon="rocket-launch" href="https://app.salesbricks.com/admin/bricks">
  [https://app.salesbricks.com/admin/bricks](https://app.salesbricks.com/admin/bricks)
</Card>

<Steps>
  <Step>
    Navigate to **Bricks** and click **New brick**.

    <img alt="new-brick" />
  </Step>

  <Step>
    Fill out your Brick details.

    <Frame>
      <img alt="brick-details" />
    </Frame>
  </Step>
</Steps>

## Schedule

Subscriptions, one-time, and usage (oh my!)

Use the guide below to determine which pricing schedule to select.

<Warning>
  Make sure to get it right the first time, as this cannot be edited after your brick is saved (more on that in a minute).
</Warning>

### Subscription

Use the Subscription payment schedule type any time your customers agree to make a recurring payment in exchange for ongoing access to the Brick.

For example, you may set up your schedule so that users agree to pay for a license to your platform for 12 months.

### One-time

One-time payment schedules are used for non-recurring purchases, such as implementation fees or service hours for services outlined in a statement of work.

### Usage

Usage pricing denotes billing in arrears for software or services consumed, or allowing your clients to `pay-as-you-go`.

Note that Usage Bricks require additional integration for your platform to send usage data to Salesbricks. For usage, you will be presented with two measurement options: `final value` and `prorated`.

#### Final value

Uses a running counter that tallies up total usage over a billing cycle (generally, per month)

#### Prorated

Uses a running counter that tallies up usage over a period of time over a billing cycle (generally, per month)

### Milestone

Milestone payment schedules allow you to defer payment for a task or service until it has been completed.

For example, you may require your customer to complete a virtual onboarding/orientation session. Once you mark this as completed in Salesbricks, the customer would then be invoiced for the milestone.

<Note>
  ### Some pricing options are dependent on the Brick pricing schedule

  Whenever you create a Brick, either **Subscription**, **One-time**, **Usage**, or **Milestone** is set for the Brick schedule.

  Selecting the correct Brick schedule will impact the options available when setting the pricing on the Brick within the Plan.

  For example, if **Usage** is selected you will have the option to input a **pay-as-you-go** and **pre-committed** rate, which can be in fractional cents (not available for Subscription nor One-time purchase schedules).
</Note>

## Why is the Brick framework so important?

Just like when building a brick house (like The Commodores?), your Bricks need to have structure and a framework. The Salesbricks Brick framework restricts SKU proliferation - when an organization creates a new underlying SKU each time an item needs to be sold at a different price point or schedule.

A brick can belong to one or many Products and Plans, as depicted below.

<Frame>
  <img alt="brick-relationship-diagram" />
</Frame>

Brick pricing is decoupled from from the Brick creation process, and applied when only when adding a Brick to a Plan. This enables your company with the flexibility to innovate on pricing structures, while still allowing those price variations to be tied back to a singular Brick unit.

Without the the Brick framework, obtaining SKU/Brick data for a single Brick across all customers and price variations be a Herculean effort.

With Salesbricks, this data is only a few clicks away.


# Creating a Plan
Source: https://docs.salesbricks.com/quickstart-guide/products-plans-bricks/creating-a-plan



## What's a Plan?

A **Plan** is a specific offering or bundle of your software and/or services at a certain price point.

Plans can be set up with the following configurations:

* **Many** bricks (Platform, Seats, API call volume, and optional bricks like Implementation Services)
* **One** brick (User Licenses)
* **Zero** bricks (the Plan gives access to the platform)

Each Plan variation can be targeted toward a segment of your customers.

As your customers mature with your offerings (requiring additional licenses, features, etc.), it's extremely easy to upsell them to a higher Plan within Salesbricks.

## How to Create a Plan

<Card title="Take me there" icon="rocket-launch" href="https://app.salesbricks.com/admin/products">
  [https://app.salesbricks.com/admin/products](https://app.salesbricks.com/admin/products)
</Card>

<Steps>
  <Step>
    Navigate to **Products** and click the Product you want to add the Plan to.

    <Frame>
      <img alt="select-product" />
    </Frame>
  </Step>

  <Step>
    Click **New plan**.

    <img alt="new-plan" />
  </Step>

  <Step>
    Fill in your new Plan's **name**, **definition**, and **summary**.

    <Frame>
      <img alt="fill-plan-details" />
    </Frame>

    These fields are typically displayed in the following key areas of the platform:

    **Order builder:** visible to your sales team, and customer order checkout page if the plan is not marked private.

    <Frame>
      <img alt="order-builder" />
    </Frame>

    **Order form:** seen in the customer contract.

    <Frame>
      <img alt="order-form" />
    </Frame>

    **Invoice:** displayed if the customer checks out with an order form (no invoices are sent if paying electronically via Stripe at checkout).

    <Frame>
      <img alt="invoice" />
    </Frame>
  </Step>

  <Step>
    Input the plan pricing options.

    <Frame>
      <img alt="input-plan-pricing" />
    </Frame>

    **Example 1:** Displayed billing schedule amortized by

    <Frame>
      <img alt="no-amortization" />
    </Frame>

    <Frame>
      <img alt="amortized-by-months" />
    </Frame>

    <Frame>
      <img alt="amortized-by-days" />
    </Frame>

    <Frame>
      <img alt="amortized-by-hours" />
    </Frame>

    **Example 2:** Postscript

    <Frame>
      <img alt="pricing-page" />
    </Frame>

    **Example 3:** Allowed billing schedules

    <Frame>
      <img alt="allowed-billing-schedules" />
    </Frame>

    <Note>
      ### Do I have to include a Brick on my Plan?

      It is not required to add Bricks to a Plan.

      However, if you are looking to include a quantity of units as part of the Plan (e.g. 5 user licenses included in the Plan price) and would like to charge per additional unit, you must include the unit Brick.
    </Note>
  </Step>

  <Step>
    Add Bricks.

    <Steps>
      <Step>
        Click **Edit bricks**.
      </Step>

      <Step>
        To add additional Bricks, click the **New brick** button. Check out the [Creating a Brick](/quickstart-guide/products-plans-bricks/creating-a-brick) guide for details on the Brick builder.
      </Step>

      <Step>
        Select the bricks to be added to the plan by clicking on them.

        <Frame>
          <img alt="select-brick" />
        </Frame>
      </Step>

      <Step>
        Hover over the **Pricing not set** and click on the dollar sign.

        <Frame>
          <img alt="set-pricing" />
        </Frame>
      </Step>
    </Steps>
  </Step>

  <Step>
    Configure your Brick pricing and packaging.

    See the section on [Pricing Structures](/quickstart-guide/products-plans-bricks/creating-a-plan#pricing-structures) for guidance on structuring the pricing.

    <Frame>
      <img alt="brick-pricing-packaging" />
    </Frame>
  </Step>

  <Step>
    Once you've added all the Bricks to your Plan and configured pricing for each, click **Done**.
  </Step>

  <Step>
    Decide if the plan should be private, and click **Publish**.

    Marking a Plan as private excludes it from any self-serve views and makes it available exclusively through your sales-led Orders.
  </Step>

  <Step>
    **One last important step!**

    After publishing your Plan, don't forget to go back into your product and click **Activate**. This will turn your product live for the world (or, at least your team and customers).

    <Frame>
      <img alt="successfully-activated" />
    </Frame>
  </Step>
</Steps>

Well done! You just did in minutes what would take weeks or months in a traditional CPQ tool.

For those crazy enough to try and scale with manual processes and spreadsheets, we just gave you back your nights, weekends, and holidays - not to mention saving you from getting a plethora grey hairs! 🧓🏼 👵🏼

You're welcome. 🙌 😁

## Pricing Structures

A **pricing structure** is a pre-defined discounting mechanism that is designed to incentivize customers as they purchase more of your Product.

There are 4 pricing structures that can easily be designed in Salesbricks:

### Flat-rate

Flat-rate structure is used when you want to **set the unit price equally**, regardless of how many units your customer is buying.

<Accordion title="Flat-rate example - Buying apples 🍎">
  At the grocery store, each apple costs 50¢.

  Frank wants to buy 3 apples: $$\$0.50 * 3 = \$1.50$$.

  Rita wants to buy 100 apples: $$\$0.50 * 100 = \$50$$.

  Under flat-rate pricing, the 1st apple costs as much as the 100th apple, with no discount for having purchased a larger quantity.
</Accordion>

### Tiered

Tiered is a pricing structure where your customers are charged the **sum of each tier** as unit counts reach tier thresholds.

In the example below, there are several pricing tiers and the buyer passes fully through the first two tiers and partially into the third. There are also five licenses included at no additional charge, which are taken from the highest tier.

<Frame>
  <img alt="tiered-pricing" />
</Frame>

<ConsecutiveImageGap />

<Accordion title="Tiered example - Booking a hotel 🏨">
  Tiana wants to book a room at a hotel:

  * The first two nights are priced at \$100 per night.
  * The next two nights are discounted at \$80 per night.
  * Any night after that is \$50 per night.

  Tiana plans to stay for 7 nights: $$(\$100 * 2) + (\$80 * 2) + (\$50 * 3) = \$510$$.

  Under tiered pricing, the buyer's total cost is calculated according to the sum of each respective tier.
</Accordion>

<Tip>
  #### Tradeoff to consider when using tiered pricing

  **Pro:** Tiered pricing allows your customers to enjoy a lower per-unit price point as they purchase additional units, while minimizing the overall discount for you as the seller.

  **Con:** Tiered pricing adds complexity to the pricing for your buyers especially when trying to forecast growth and may require additional explanation and support.
</Tip>

### Volume

Volume pricing is used when you want to provide a quantity discount for volume purchases, but want the discounted unit cost to be the **same for all units** in the Order.

<Frame>
  <img alt="volume-pricing" />
</Frame>

<ConsecutiveImageGap />

<Accordion title="Volume example - Baseball game tickets ⚾">
  Vernon wants to buy tickets to a baseball game:

  * 1-5 tickets: \$50 per ticket
  * 6-15 tickets: \$40 per ticket
  * 16-30 tickets: \$25 per ticket

  Vernon is buying a row of seats for himself and 9 of his friends: $$10 * \$40 = \$400$$.

  Unlike tiered pricing, Vernon is getting the same discount for each of the 10 tickets under volume pricing. Each of his friends owes him the same amount.
</Accordion>

### Block

Block structures are used when you want to **sell your units in blocks instead of individually**.

Similar to buying eggs where you must purchase by the dozen (12, 24, 36, etc.), you can package your units together and sell them in blocks.

This strategy can be useful if your buyer's unit needs to fluctuate within a billing period, eliminating the need for upgrades or overages, assuming they stay within the block.

<Accordion title="Block example - Buying eggs 🥚">
  Bob needs 16 eggs for his recipe.

  At the farmer's market, eggs are sold by the dozen:

  * 1 dozen: \$5
  * 2 dozen: \$8
  * 3 dozen: \$10

  Although he only needs 16, Bob will need to purchase a full 2 dozen eggs at \$8.

  Under block pricing, the seller defines how many units are included in each block.

  The buyer pays for, and receives, the entire quantity of units for the block they purchased.
</Accordion>

<Tip>
  #### Pricing guide when building an order

  When activating Tiered, Volume, or Block pricing, a help text icon appears on the order builder to guide both your sales teams and self-service users on the pricing structure (see below for example).

  <Frame>
    <img alt="pricing-help-icon" />
  </Frame>
</Tip>


# Creating a Product
Source: https://docs.salesbricks.com/quickstart-guide/products-plans-bricks/creating-a-product



## What's a Product?

A Product can be thought of as your company's price book. Within the Product, you will create Plans and within those Plans, Bricks can be added.

Building within the Product structure allows for versioning and flexibility as you roll out new pricing structures and deprecate old ones.

## How to Create a Product

<Card title="Take me there" icon="rocket-launch" href="https://app.salesbricks.com/admin/products">
  [https://app.salesbricks.com/admin/products](https://app.salesbricks.com/admin/products)
</Card>

<Steps>
  <Step>
    Navigate to **Products** and click **New product**.

    <Frame>
      <img alt="new-product" />
    </Frame>
  </Step>

  <Step>
    Edit the Product details. Input your logo, primary color, and fill out the Product fields. Note that Product details will not be visible to your customers.

    <Frame>
      <img alt="product-details" />
    </Frame>
  </Step>

  <Step>
    Click **Create** or **Update** to save your changes.
  </Step>

  <Step>
    Once you've added and published your Plan(s) (see [Creating a Plan](/quickstart-guide/products-plans-bricks/creating-a-plan)) within your Product, you'll be ready to activate it. You can easily do this by clicking the **Activate** button. This will make your Product live for the world (or, your team and customers, for now).

    <Frame>
      <img alt="activate-product" />
    </Frame>
  </Step>
</Steps>


# Overview
Source: https://docs.salesbricks.com/quickstart-guide/products-plans-bricks/overview



The diagram below outlines the relationship between products, plans, and bricks:

* Each <a href="/quickstart-guide/products-plans-bricks/overview#whats-a-product">**product**</a> has one or more plans
* Each <a href="/quickstart-guide/products-plans-bricks/overview#whats-a-plan">**plan**</a> has a specific offering of entitlements at a certain price point
* Each <a href="/quickstart-guide/products-plans-bricks/overview#whats-a-brick">**brick**</a> can be reused (added to more than one plan) with distinct pricing for each

<Frame>
  <img alt="brick-relationship-diagram" />
</Frame>

Here is an example of an AI company using our architecture to build out their good-better-best pricing.

<Frame>
  <img alt="brick-relationship-diagram-detailed" />
</Frame>

## What's a Product?

A **product** can be thought of as a price book. Within the product, you will create plans and within those plans, bricks can be added.

Products can be activated or deactivated as they are phased in or out of use by your team.

As your sales team begins creating orders in the Salesbricks order builder, they are able to select active products under the product dropdown.

Read more: [How to Create a Product](/quickstart-guide/products-plans-bricks/creating-a-product#how-to-create-a-product)

## What's a Plan?

A **plan** is a specific offering of your software and/or services at a certain price point.

Plans can include no bricks (where pricing is set for the entire plan), a single brick, or many bricks. Each plan variation can be targeted toward a segment of your customers.

As your customers develop additional depth with your products or require additional features, it's extremely easy to upsell them to a higher plan within Salesbricks.

Read more: [How to Create a Plan](/quickstart-guide/products-plans-bricks/creating-a-plan#how-to-create-a-plan)

## What's a Brick?

A **brick** is the lowest-level data object within your SaaS transaction, where pricing is assigned and represents the items that you are interested in keeping track of in your SaaS inventory.

Read more: [How to Create a Brick](/quickstart-guide/products-plans-bricks/creating-a-brick#how-to-create-a-brick)


# Renewals Management
Source: https://docs.salesbricks.com/renewals/renewals-management



## Overview

The Renewals Management dashboard gives sellers clear, centralized visibility into all customer subscriptions approaching renewal. It’s built to help teams proactively monitor upcoming renewals, track renewal statuses, and take appropriate actions to maximize customer retention and revenue.

<Frame>
  <img alt="renewals-table" />
</Frame>

## Key components / actions

* **Renewals table:** a central dashboard showing subscriptions with key renewal details — including customer info, renewal dates, spend amounts, and status. Sort, filter, and search to quickly identify renewals requiring attention.
  * Several actions are available on each subscription. Click the dots on the right-hand side of each row, and choose from the following options:
    * **View renewal details:** drill into the subscription to see details of the current contract, including entitlements, current spending, and renewal history.
    * **Create renewal order:** generate a renewal order based on the existing subscription, with the option to modify entitlements and contract terms.
    * **Terminate subscription:** end the subscription if the customer plans to churn or not renew beyond the current agreement.
    * **Flag for upsell:** mark this renewal as a growth opportunity — ideal for coordination with account managers.
    * **View customer profile:** jump to the full customer profile for broader context of the active subscription.
    * **View active order:** see the current active order that the renewal will build upon.
    * **View billing history:** access detailed invoice and payment history to inform renewal strategy.

<Info>
  For larger datasets, the table may take a few extra seconds to load. Applying filters can improve performance.
</Info>

* **Renewal metrics cards:** quick-view metrics showing total renewal value, past-due renewals, and upcoming renewals. One-click filters help you drill down into each segment.
* **Renewal details view:** dive deep into individual renewals with access to subscription terms, contract details, billing history, and renewal activity — perfect for preparing effective renewal conversations.

<Frame>
  <img alt="renewal-details" />
</Frame>

* **Export functionality:** export renewal data in various formats for board reporting, team collaboration, and integration with external tools.

## Renewal uplift

**Renewal uplift** lets you apply a percentage price increase across all plan and brick rates at renewal. Every brick on the subscription will be uplifted by the percentage you select. Use it to account for annual price increases, contractual escalation clauses, or to adjust pricing on multi-year deals.

<Warning>
  Auto renewals will continue as expected when an uplift is applied. The subscription will automatically renew with the uplifted value.
</Warning>

### Applying an uplift

1. In the Renewals page, select one or more renewals using the checkboxes on the left side of each row.
2. Click ***Uplift renewal value ↑*** in the action bar that appears at the bottom of the page.
3. Enter the percentage increase in the ***Renewal contract value uplift*** field.
4. Click ***Apply uplift***.

<Frame>
  <img alt="Uplift renewal value panel" />
</Frame>

Once applied, the renewal row will display an **↑ X% uplift on renewal** tag next to the customer name so your team can see at a glance which renewals have an uplift scheduled.

<Tip>
  You can apply an uplift to multiple renewals at once by selecting several rows before clicking ***Uplift renewal value ↑*** to update them all in a single step.
</Tip>


# Pricing Display
Source: https://docs.salesbricks.com/settings/finance/pricing-display



## Overview

The Pricing Display setting allows sellers to control whether order pricing is shown to customers as a monthly or annual breakdown.

Keeping the seller's view consistent with the figures and calculations that customers see, this setting applies to buyer checkout, the order builder, and the order form.

## Setup

Navigate to <a href="https://app.salesbricks.com/admin/settings/finance">**Settings -> Finance**</a> to configure this setting for your team.

By default, it is set to **monthly breakdown**. Changing this setting will update the default option for all **new** orders created by your team.

<Frame>
  <img alt="settings" />
</Frame>

## Order-level pricing display

Sellers can override the default pricing display when creating or updating an order.

In the order builder, under "Deal setup," you can select the preferred breakdown for that specific order.

<Frame>
  <img alt="order-builder" />
</Frame>

## How it works

Let's use an example of an Enterprise plan, priced at a monthly rate of \$1,000, or an annual rate of \$10,000.

If **monthly breakdown** is selected for an order with a contract period of 12 months or longer, the system calculates the monthly rate by dividing the annual rates of each brick (**monthly rate = annual rate ÷ 12**).

<Frame>
  <img alt="multi-year-monthly-rate" />
</Frame>

If **annual breakdown** is selected, the system uses your defined annual rates.

<Frame>
  <img alt="multi-year-annual-rate" />
</Frame>

For contracts shorter than 12 months, the pricing display automatically defaults to **monthly breakdown** and uses your defined monthly rates, rather than deriving them from annual pricing.

<Frame>
  <img alt="6-month-monthly-rate" />
</Frame>


# Role-based access control (RBAC)
Source: https://docs.salesbricks.com/settings/team/rbac



## Overview

Role-based access control (RBAC) lets you define exactly what each team member can see and do inside Salesbricks.

Instead of granting every user full admin access, you **assign each person a role that matches their job function**. Salesbricks ships six built-in system roles (read more below) and enforces those permissions automatically across every part of the platform — orders, customers, billing, products, reports, and settings.

<Frame>
  <img alt="roles" />
</Frame>

## Requirements

RBAC must be enabled on your Salesbricks seller org. Settings tabs and buttons that depend on RBAC will be hidden or disabled until the feature is active.

<Warning>
  **Note:** If you do not see a **"View roles" button** at the top of the <a href="https://app.salesbricks.com/admin/settings/team">Team Settings</a> page, reach out to Salesbricks Support to enable this feature.
</Warning>

To set up roles for your team, your Salesbricks user must have the **Admin** role, or a role with full access to **Team management** and **Role management** permissions, to invite team members and change role assignments.

## Built-in system roles

Salesbricks provides the following system roles out of the box. System roles cannot be deleted or modified.

| Role                     | What it can do                                                                                       |
| ------------------------ | ---------------------------------------------------------------------------------------------------- |
| Admin                    | Full, unrestricted access to all resources                                                           |
| Sales Manager            | Full access to orders and customers; read-only billing and reports; can create and manage coupons    |
| Sales Representative     | View all records; create and edit only records they own; manage their own orders end-to-end          |
| Customer Success Manager | View all records; edit own customers; read-only orders; manage milestones and contacts               |
| Finance                  | Full billing and invoicing access; read-only orders; manage finance settings and revenue recognition |
| View Only                | Read-only access across all areas of the platform                                                    |

<Tip>
  To see a full breakdown of permissions across all 6 system roles, visit our <a href="https://app.salesbricks.com/admin/settings/team/roles?tab=docs">System role access comparison guide</a> in Salesbricks.

  To view permissions for each role, follow the steps in <a href="/settings/team/rbac#view-a-role%E2%80%99s-permissions">"View a role's permissions"</a> below.
</Tip>

## Add a new team member & assign a role

<Steps>
  <Step>
    In Salesbricks, go to <a href="https://app.salesbricks.com/admin/settings/team">Settings -> Team</a>.

    <Frame>
      <img alt="team" />
    </Frame>
  </Step>

  <Step>Click **"New team member"** in the top-right corner of the page.</Step>

  <Step>
    A drawer slides in from the right. Fill in the following fields:

    * **First name (required)**

    * **Last name (required)**

    * **Email (required)** — must be a valid email address

    Under **Role & permissions**:

    * Use the **"Role"** dropdown to select one of the available system roles.

    * Use the **"Job title"** dropdown to select a title, or choose **"Add a title"** to type a custom one.

    * Set a **"Maximum discount threshold"** (0–100%) to cap how large a discount this user can apply to orders.

    Under **Signatory**, you may allow this user to complete orders by countersigning order forms.
  </Step>

  <Step>Click **"Create"** to send the invitation.</Step>
</Steps>

## Edit a team member's role

<Frame>
  <img alt="edit-role" />
</Frame>

<Warning>
  Only users with full access to **Team management** and **Role management** permissions (e.g. Admins) can see and use the Edit button. If the button is hidden or disabled, you do not have sufficient permissions.
</Warning>

<Steps>
  <Step>In **Settings -> Team**, find the team member in the table. Click the row to open and edit their profile.</Step>

  <Step>Select the new role in the **Role** dropdown.</Step>

  <Step>Update any other fields as needed and click **"Save"**.</Step>
</Steps>

## View a role's permissions

Each system role has a detail page that shows its full permission matrix.

<Frame>
  <img alt="sales-manager-role-details" />
</Frame>

<Steps>
  <Step>
    In **Settings -> Team**, click **"View roles"** in the top-right corner.
  </Step>

  <Step>
    You are redirected to the **Roles** list. Click any role name to open its detail page and view the permissions for that system role.
  </Step>

  <Step>
    The <a href="https://app.salesbricks.com/admin/settings/team/roles?tab=docs">System role access comparison guide</a> allows you to compare access levels of all 6 system roles side-by-side.
  </Step>
</Steps>

## Deactivate a team member

<Frame>
  <img alt="deactivate" />
</Frame>

<Steps>
  <Step>In **Settings -> Team**, click the **action menu** on the right side of the team member's row.</Step>

  <Step>
    Select **"Deactivate"** to revoke the user's access immediately.

    <Info>
      Deactivating a team member does not delete their historical data — their orders, customers, and other records they created in Salesbricks remain intact.

      Admins may reassign a deactivated user's open orders and active subscriptions to new account representative under **Customers**.

      Their user account can be restored by reaching out to Salesbricks Support.
    </Info>
  </Step>
</Steps>

## Reset a team member's password

<Frame>
  <img alt="reset-password" />
</Frame>

<Steps>
  <Step>In **Settings -> Team**, click the **action menu** on the right side of the team member's row.</Step>

  <Step>
    Select **"Reset password."**

    Salesbricks sends a **password reset email** to the email address the team member uses for login. If successful, a confirmation dialog appears, along with the email address for verification.
  </Step>
</Steps>

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Can I create my own custom roles?">
    Custom roles are on the roadmap. At launch, only the six built-in system roles are available.
  </Accordion>

  <Accordion title="What happens if I assign someone the View Only role by mistake?">
    A user with the proper access can edit the team member and select the correct role. Permission changes take effect immediately on the user's next page load.
  </Accordion>

  <Accordion title="Who can see the full team list?">
    A user with the proper access can see all team members. Users with more restricted roles, such as View Only, can only see their own record.
  </Accordion>

  <Accordion title="Does RBAC apply to the Salesbricks API?">
    API token requests run with full Admin permissions and are not restricted by role assignments.
  </Accordion>
</AccordionGroup>