# Accounts receivable agent
Source: https://docs.sequencehq.com/agents/ar-agent
Let an agent action customer billing requests over email, with human review before anything changes
The accounts receivable (AR) agent lets your customers and team action routine billing requests by email. Forward a request to your workspace's agent address and the agent interprets it, prepares the change, and flags it in Watchtower for a human to review and approve.
## Overview
Instead of manually handling every "can you update our billing address?" email, let the agent do the interpretation for you. It reads the request, drafts the corresponding change to the customer record, and surfaces it in [Watchtower](/agents/watchtower) so nothing is applied until a person reviews and approves it.
Today the agent can action two kinds of request.
**Customer detail changes:**
* **Company name**: update a customer's legal or trading name
* **Billing address**: update the billing address, including reformatting unstructured addresses
* **Billing contacts**: add or update contacts who receive invoices
**Invoice updates**, on an invoice that has already been sent:
* **Purchase order number**: add or correct the PO number on the invoice
* **Billing address**: update the address shown on the invoice
* **Reference**: change the invoice reference
* **Memo**: update the memo or notes on the invoice
Every change is prepared as a proposal for review. The agent never writes to your data without human approval.
The AR agent is an early-access feature in **Sequence Labs**. Before it can act on any request, an admin needs to enable both **Sequence Labs** and the **AR agent** in [Settings > Labs](https://dashboard.sequencehq.com/settings/labs). See [Enabling the agent](#enabling-the-agent) below. Behavior and scope will expand over time.
## Enabling the agent
The AR agent is turned on per workspace and can only be enabled by an admin.
Go to [Settings > Labs](https://dashboard.sequencehq.com/settings/labs) and toggle on **Enable Sequence Labs** to opt in to early-access features.
Under **AR agent**, toggle on **Enable AR agent** to allow the Sequence agent to act on customer queries on your behalf.
Each workspace gets a unique agent email address, derived from your account name (for example, `acme-corp@agents.seqhq.io`). Copy this address to start forwarding requests.
## Emailing the agent
Send or forward a customer request to your workspace's agent address. A plain-language description of the change is enough. The agent parses the request, identifies the customer, and works out which fields to update. There's no required subject line or format.
For security, only people registered as users in your workspace can email the agent. Requests from unrecognised senders are ignored.
Processing can take a minute or two, as the request passes through several steps before it appears in Watchtower. If a request falls outside what the agent can action, it posts a notification in Watchtower explaining why, so nothing is silently dropped.
## Review and approval
Once the agent has processed a request, the proposed change appears in [Watchtower](/agents/watchtower) under **Needs Action**. Each item shows the original email as its source alongside the change the agent has prepared.
Open the item and choose **Review changes** to see a before-and-after comparison — the customer's details, or the proposed edits shown against the sent invoice. You can edit any field before applying. The agent's proposal is a starting point, with a human always in the loop.
From here you can:
1. **Review changes**: apply the update to the customer record
2. **Edit**: adjust any field before applying
3. **Dismiss**: discard the proposed change
Once approved, the change is written to the customer and reflected across Sequence.
All agent activity and approvals are logged in Watchtower's audit trail, so you keep a complete record of who approved what and when.
## Best practices
* Name the customer clearly so the agent can match the right record
* Include the full set of details for the change (for example, the complete new address)
* One request per email keeps changes easy to review
* Always check the before-and-after comparison before approving
* Verify billing addresses, which affect tax calculation
* Confirm the agent matched the correct customer
* Edit any field directly in the review view before applying
* Dismiss a proposal if it isn't correct and re-send a clearer request
* Check Watchtower for a notification if a request didn't produce a change
## Next steps
After approving a change:
* The customer record is updated with the new details
* The change is reflected everywhere the customer is used, including future invoices
* The full history stays available in Watchtower's audit trail
# Contract intake agent
Source: https://docs.sequencehq.com/agents/contract-intake
Automatically parse sales contracts and extract pricing, customer details, and terms
Contract intake unlocks a seamless quote to cash workflow for your sales and finance teams. Go from signed contract to automated billing with minimal intervention.
The contract intake agent automatically processes sales contracts, extracting customer information, pricing details, and terms to set up billing schedules in Sequence.
## Overview
Instead of manually transcribing contract details into billing schedules, let an agent read your contracts and extract the key information needed to begin billing. This eliminates manual data entry and reduces errors when onboarding new customers. Review, edit and approve any extracted data point before you start billing.
## Uploading contracts
There are two ways to submit contracts for processing:
### Option 1: Drop contracts directly into Sequence
Upload one or multiple PDF contracts directly into Sequence:
1. Navigate to Watchtower in the dashboard and drag and drop PDF files
2. Alternatively, go to Schedules, then click to browse and select files from your computer
You can upload multiple contracts at once for batch processing.
### Option 2: Email forwarding
Forward contracts directly from your inbox to Sequence using your dedicated forwarding address:
1. Go to **Settings** → **Contract forwarding**
2. Copy your unique forwarding address
3. Forward contract PDFs to this address from your email, Slack or CLM
You can also the contract forwarding email to set up automated workflows from DocuSign, Salesforce or Attio.
Your forwarding address is unique to your Sequence workspace. Contracts sent to this address are automatically queued for processing. You can send at most 5 contracts at once.
## Contract processing
Once uploaded, the Contract Intake Agent processes your contracts automatically:
* **Processing time**: Approximately 20 seconds per contract
* **Behind the scenes**: The agent reads the contract, identifies key sections, and extracts structured data
* **Status updates**: Track processing progress in [Watchtower](/agents/watchtower)
While processing, the agent extracts:
* Customer details (company name, billing contact, address)
* Pricing information (products, quantities, prices, billing frequency)
* Contract terms (start date, end date, payment terms)
* Special conditions or discounts
## Review and approval
After processing completes, review the extracted information in Watchtower:
### Customer details
Review and verify:
* Company name
* Primary billing contact
* Billing address
* Tax status
### Pricing information
The agent extracts pricing as line items, including:
* Product or service names
* Unit prices or pricing tables
* Billing frequency (monthly, quarterly, annually)
* Billing type (in-advance or in-arrears)
### Making adjustments
You can modify any extracted information before approval:
1. Click into any field to edit the extracted value
2. Add missing information that wasn't in the contract
3. Correct any misinterpreted data
4. Assign products to prices
### Approval workflow
Once you've reviewed and adjusted the extracted data:
1. **Approve**: Creates the customer record and billing schedule in Sequence
2. **Reject**: Declines the extracted data if the contract can't be processed
3. **Make changes**: Edit items that require modification
All contract processing and approvals are logged in Watchtower's audit trail, maintaining a complete record of who approved what and when.
## Best practices
Set up your product catalog in Sequence before processing contracts:
* Create all products that appear in your sales contracts
* Configure usage metrics for usage-based billing products
* Set up seat metrics for seat-based pricing
* Define standard pricing tiers and frequencies
The contract intake agent will map extracted line items to your existing products during the review process.
* Use text-based PDFs rather than scanned images for best results
* Ensure pricing tables are clearly formatted
* Include clear headers for sections like "Pricing", "Customer", and "Terms"
* Always verify customer billing addresses for tax calculation
* Check that billing frequencies match your customer's expectations
* Confirm start dates align with the contract effective date
* Map extracted line items to the correct products in your catalog
* Complex pricing structures may require manual adjustment during review
* Custom discounts can be applied in the billing schedule after approval
## Next steps
After approving a contract:
* The customer record is created in Sequence (if the contract is for a new customer)
* A billing schedule is automatically set up with the extracted pricing
* Invoices will generate according to the billing frequency
# Payment reminders
Source: https://docs.sequencehq.com/agents/payment-reminders
Automate invoice chasing (dunning) with reminder workflows
Payment reminder workflows let you chase overdue invoices automatically. Build a sequence of reminders on the [Workflows](/agents/workflows) canvas, decide when each one sends, and optionally route reminders through [Watchtower](/agents/watchtower) for human review before they reach your customer.
## How it works
Create a workflow and choose the **Invoice sent** trigger. The workflow starts when Sequence sends an invoice to the customer. (Invoices you manually mark as sent do not trigger reminder workflows.)
Drop one or more **Reminder** nodes onto the canvas and connect them in order. Each node represents one reminder in your dunning sequence. For example, a nudge before the due date followed by escalating reminders after it.
Use a **Switch** node to send different customers or invoice sizes down different reminder paths.
Publish the workflow to make it live for every invoice sent from then on.
## The Reminder node
The Reminder node packages a complete reminder step into a single node on the canvas. Internally it waits, checks the invoice is still owed, composes the email, optionally routes it for review, and sends it. Chain several Reminder nodes to model a full dunning sequence.
### Timing
Each Reminder node has its own send timing:
* **Relative to the due date**: a set number of days **before** or **after** the invoice due date (e.g. 7 days before, 1 day after).
* **Immediately**: send as soon as the run reaches the node.
The node shows its configured timing as a subtitle on the canvas so the sequence is readable at a glance.
### The email
Configure the **To**, **CC**, **BCC**, **Subject**, and **Body**. Reminders are addressed to the customer's billing contacts by default; add your own company address in CC so customers can reply directly to your team.
The body supports template variables, which are filled in from the invoice and customer when the email is generated:
| Variable | Inserts |
| - | - |
| `{{contact name}}` | Primary billing contact's name |
| `{{contact email}}` | Primary billing contact's email |
| `{{invoice number}}` | Invoice number |
| `{{amount}}` | Invoice amount |
| `{{due date}}` | Invoice due date |
| `{{days late}}` | Days past the due date |
| `{{url}}` | Link to the invoice in the customer portal (shown as **Invoice URL**) |
The invoice PDF and any attachments sent with the original invoice are attached automatically. Reminder emails are intentionally sent **unstyled** (plain). Our testing shows plain reminders are more effective at prompting payment.
If a template variable can't be resolved (for example a typo or missing data), the reminder is routed to a review task instead of sending a broken email, even when review is otherwise turned off.
### Require approval
Turn on **Require approval** to insert a human checkpoint: instead of sending automatically, the reminder is composed and paused as a task in [Watchtower](/agents/watchtower) for the approvers you assign. See [Reviewing reminders in Watchtower](#reviewing-reminders-in-watchtower) for the review-and-send path. With approval off, the reminder sends automatically once its timing is reached.
### Stopping automatically
While a Reminder node is waiting, Sequence keeps watching the invoice. If it's paid, voided, or written off as uncollectible, the run ends on its own and no further reminders are sent.
## Reviewing reminders in Watchtower
When a reminder requires approval, assigned reviewers are notified by email and the reminder appears in [Watchtower](/agents/watchtower). From there it follows a three-step path before it reaches the customer.
The reminder lands in Watchtower as a task (e.g. "Invoice is 10 days overdue"), showing the drafted email, the recipient, and the attached invoice PDF.
Open **Review reminder** to edit the recipients, subject, and body. A live preview on the right shows exactly what the customer will receive, including the invoice PDF.
Confirm to send the reminder to the customer, or cancel to stop it. Once sent, Watchtower records it in the execution summary.
Watchtower's execution summary tracks every reminder through its states (Waiting, Flagged for review, Sending, Sent, and Invoice paid/uncollectible), with email previews and timestamps, giving a full audit trail of what was sent and when.
## Routing by customer or invoice
Add a **Switch** node to branch the dunning flow. Conditions relevant to reminders include:
| Condition | Use |
| - | - |
| Customer | Include or exclude specific customers |
| Invoice total | Branch on invoice amount (less than / greater than / equals) |
For example, route high-value invoices through a path that requires approval, while smaller invoices send automatically.
## Webhooks
Two webhook events let you observe dunning from external systems:
| Event | Fires when |
| - | - |
| `INVOICE_REMINDER_SENT` | A reminder email is sent |
| `WATCHTOWER_TASK_ASSIGNED` | A review task is assigned to an approver |
Subscribe to these in your notification policies to mirror reminders into a CRM, Slack, or your own dashboards.
## Related
* [Workflows](/agents/workflows): the visual builder, nodes, triggers, and publishing
* [Watchtower](/agents/watchtower): review and approve reminders, track runs
* [Invoicing customers](/invoicing/invoicing-customers): send and manage the invoices reminders chase
# Watchtower
Source: https://docs.sequencehq.com/agents/watchtower
A centralized command center to review, approve, and audit work completed by agents
Watchtower is a centralized command center where finance operators review and approve autonomous work, making AI actions visible, auditable, and controllable.
## Overview
When AI agents work autonomously in the background, creating transparency around completed tasks is essential for trust. Watchtower surfaces all agent-completed work in a unified interface, giving you full visibility and control over what's happening.
## Key capabilities
### See what's completed and what needs review
Watchtower displays all work completed by your agents through activity feeds. View `Needs review` to see which tasks require your attention. The number of tasks requiring your attention is also shown in the navigation.
### Full auditability
Every action an agent takes is logged and traceable. Review what it did, what data it used, and what reasoning led to each outcome.
## Getting started
Open Watchtower to immediately see:
* What your agents have completed
* Items requiring your review or approval
* Full audit trails for any action
* Exceptions that need manual attention
For more context and principles behind Watchtower, read our blog post on [Building a human in the loop interface](https://www.sequencehq.com/blog/building-a-human-in-the-loop-interface).
# Workflows
Source: https://docs.sequencehq.com/agents/workflows
Design multi-step automations with a visual builder
Workflows let you design quote approvals, contract intake, and other multi-step processes on a visual canvas. When a run requires human review, it sends a notification to [Watchtower](/agents/watchtower).
**Use Workflows to:**
## Getting started
Go to Workflows in the sidebar and create a new workflow. Click the Start node and choose a trigger: Quote approval (when a sales rep submits a quote), Contract uploaded (when a contract PDF is uploaded or forwarded), or Invoice sent (when an invoice is sent to a customer, used for [payment reminders](/agents/payment-reminders)). Publishing a workflow makes it the active workflow for its trigger; see [Publishing](#publishing).
Use the toolbar at the bottom to add Switch, Review, Action, Reminder, End, and Note nodes. Connect them by dragging edges between nodes. Click any node to open its configuration panel. Save to preserve your draft; Publish when the workflow is ready to go live.
## Node types
| Node | Purpose |
| - | - |
| Switch | Route the run down different branches based on conditions |
| Review | Pause the run and create an approval task in Watchtower |
| Action | Run a Sequence operation (publish quote, create schedule, etc.) |
| Reminder | Send a payment reminder for an invoice, with optional review (see [Payment reminders](/agents/payment-reminders)) |
| End | Terminate a branch |
| Note | Canvas annotation; does not execute |
## Switch node
The Switch node evaluates conditions against the quote or contract data and routes the run down the matching branch. Add branches with + and remove them with −. The final branch is always Else (catch-all for runs that do not match any condition).
Each branch has one or more conditions; multiple conditions on a branch use AND logic.
The available properties depend on the workflow's trigger. **Quote approval** workflows can use the full list below:
| Property | What it checks | Available comparisons |
| - | - | - |
| Total contract value | The quote's total contract value | Less than, More than, Equals |
| Total discount value | The total discount applied across the quote | Less than, More than, Equals |
| Total duration | The combined duration of all phases on the quote | Shorter than, Longer than, Equals, Does not equal |
| Products | Which products are on the quote | Includes all, Excludes all, Includes, Excludes |
| Product | A specific product's discount, whether it has a discount, or its pricing model | See below |
| Quote template | The quote's attachments, or its raw text content | Attachments, Raw text |
| Customer | The customer on the quote, including their custom properties | Includes, Excludes |
| Currency | The quote's currency | Equals, Does not equal |
| Deal type | The quote's deal type | Equals, Does not equal |
| Raw text | Free text entered on the quote | Includes, Excludes |
| Requestor | Who submitted the quote | Includes, Excludes |
| Comment | The comment left when the quote was submitted | Is empty, Is not empty, Includes, Excludes |
| Previous approval | Compare the quote against the version last approved at a specific Review node, only available once the workflow has one (see [Re-approvals](#re-approvals)) | See below |
Choosing **Product** opens a second row to narrow further:
| Sub-option | Available comparisons |
| - | - |
| Discount | Equals, Less than, More than |
| Has discount | Yes, No |
| Pricing model | Is, Is not, against standard, linear, volume, graduated, package, or seat-based pricing (see [Products and pricing](/plans-products/product-catalogue)) |
**Contract uploaded** workflows don't currently expose Switch conditions on the trigger's own data. **Invoice sent** workflows (used for [payment reminders](/agents/payment-reminders)) use a smaller set instead:
| Property | What it checks | Available comparisons |
| - | - | - |
| Invoice amount | The invoice's gross total | Less than, More than, Equals |
| Customer | The customer on the invoice, including their custom properties | Includes, Excludes |
## Review node
The Review node pauses the workflow and creates a task in Watchtower assigned to the approvers you configure. The run holds until someone completes it. The node exposes Approved and Rejected output paths; connect each to the appropriate next step.
## Action node
The Action node runs a Sequence operation when a condition is met or a review is approved. Available actions: Publish quote, Create schedule, Contract extraction.
## Reminder node
The Reminder node sends a payment reminder for an invoice. It packages a configurable wait, an invoice check, email composition, an optional review step, and the send into a single node. Chain several to build a dunning sequence. Use it with the Invoice sent trigger. See [Payment reminders](/agents/payment-reminders) for full configuration (timing, template variables, approval, and webhooks).
## Note node
The Note node is a canvas annotation. It does not execute. Use it to explain branches, record policy decisions, or leave context for future editors.
## Publishing
Workflows start as drafts. Save and return as needed. When ready, Publish. The workflow then runs for every new trigger event. Version history records what was running at any point in time. Edit the draft and republish to update logic without interrupting in-flight runs.
Only one workflow is active per trigger at a time. If you publish a workflow whose trigger is already used by another active workflow, the existing one is deactivated and yours takes its place, with no gap in coverage, and the confirmation names and links to the workflow being deactivated. You can keep as many draft workflows as you like for the same trigger.
## Quote approval flow
A sales rep submits a quote for approval in Sequence. The request comment is captured and attached to the run.
The workflow runs the Switch node against your conditions (deal size, discount, currency, products). The run takes the first matching branch.
The run pauses at the Review node. A task appears in Watchtower for the assigned approvers with the full quote, requestor details, and sales rep comment.
The approver opens the task in Watchtower and approves or rejects.
On approval, the workflow continues to the Action node and publishes the quote (or executes the configured action).
Every branch, approval, and action is logged in Watchtower's audit trail.
## Re-approvals
A quote is locked for editing while it has a pending review. Once the review resolves, whether approved or rejected, the lock lifts and the quote can be edited again.
By default, every **Publish**, **Publish changes**, and **Republish** action sends the quote through the workflow again, regardless of whether an earlier version of the same quote was already approved. Edit an approved quote and republish it, and it goes back to the top of the flow: the Switch node evaluates conditions again and a new Review task is created.
You don't have to leave it there. Add a **Previous approval** condition to a Switch node to compare the quote against the version that was last approved at a specific Review node further downstream, and route around review when nothing material has changed, for example when someone only adds a recipient or tweaks the cover page.
A **Previous approval** condition has three parts:
| Part | What you choose |
| - | - |
| Review step | Which Review node (Quote review only) in this workflow to compare against. Only relevant once you have more than one. |
| Field | What to compare: All contract terms, All prices, All discounts, All minimums, Raw text, or Attachments |
| Comparison | Is equal or Is not equal (the row reads as "are equal" for plural fields like prices or attachments) |
Add several Previous approval conditions on the same branch to gate on more than one field at once, for example: always re-review if prices changed, but let discount-only tweaks through without one.
If the quote has never been approved at the chosen review step, or its last attempt there was rejected, the comparison always reads as not equal. There's no version to compare against, so it routes to review rather than silently skipping it.
## Monitoring
All workflow runs are tracked in Watchtower. Visibility is role-based:
| Role | Contract intake runs | Quote approval runs |
| - | - | - |
| Admin | All runs | All runs |
| Quote owner (non-admin) | All runs | Their own |
| Approval requestor (non-admin) | All runs | Runs they requested |
| Other non-admin | All runs | Not visible |
Enable Admin mode in Watchtower to see all tasks across your workspace. You can manually override and approve tasks from there. Cancel any in-progress run from Watchtower if a quote was submitted in error or needs to restart.
## Permissions
Users assigned to a Review task can complete it; admins can complete any task, assigned or not. The quote requestor is excluded from approving their own request. See [Review node](#review-node) for how contract reviews additionally restrict who can be assigned. Finer-grained approver roles for quote reviews are planned.
## Best practices
Sketch the happy path and edge cases first. Who approves what? What happens on rejection? Use Note nodes to capture decisions.
Only one workflow runs per trigger at a time, so model variation within a single workflow using Switch branches rather than relying on several workflows for the same trigger. Publishing a second workflow for a trigger deactivates the first.
Combine conditions on a branch (e.g. total contract value more than \$50,000 and currency equals USD). Route the Else branch somewhere sensible.
Walk through each branch before going live. Confirm Approved and Rejected paths on every Review node lead somewhere meaningful.
Update the Review node when approvers change role or leave the team.
## Related
* [Approving a quote](/cpq/approve-quote): what an approver sees and can do with a submitted quote
* [Watchtower](/agents/watchtower): review tasks, track runs, audit decisions
* [Contract intake agent](/agents/contract-intake): end-to-end contract processing built on Workflows
* [Payment reminders](/agents/payment-reminders): automate invoice chasing (dunning) with Reminder nodes
# Concepts
Source: https://docs.sequencehq.com/billing/billing-concepts
Use phases in billing schedules to represent pre-agreed price changes, trial periods or pricing ramps
Use schedules to automate billing and invoicing. A schedule ties one or more prices to a customer over a period of time, reflecting their contract or subscription.
## Understanding billing schedules
Billing schedules tie one or more prices to a customer over a period of time, reflecting their contract or subscription.
| | |
| - | - |
| Start date | Date when the billing schedule begins |
| End date | Date when the billing schedule ends |
| Billing day | Aligns billing periods with a specific day of the month (useful to align contracts starting mid-month) |
| Billing period | Time interval covered by each invoice |
| Billing frequency | One-time, Monthly, Quarterly, Semi-annually, Annually |
| Billing type | In-arrears (billing period end) or in-advance (billing period start) |
| Phase | Distinct periods within a schedule with different pricing or terms |
| Partial billing period | Period where fees may be prorated |
### Lifecycle of a billing schedule
New billing schedules are created in `draft`. Once started, schedules become `active`. If the start date is in the future, the status is set to `upcoming`. The end of the last billing period marks a schedule `complete`. While a schedule is active, price changes and additional phases can be added. Once completed, a schedule cannot be edited.
The schedule start date determines when the first billing period begins. If the start date is in the past, backdated draft invoices are generated for all retrospective billing periods. A schedule with an `open-ended` duration continues billing indefinitely until manual cancellation.
### Invoice creation
Invoices are created based on the schedule's dates and the billing frequency and type of the included prices.
**In-advance billing**: Invoices generate at the start of each billing period
**In-arrears billing**: Invoices generate at the end of each billing period
A single schedule can include prices with monthly, quarterly and annual billing frequencies and different billing types to accommodate advanced contracts. When invoice creation dates for multiple prices overlap, Sequence combines them into a single invoice.
**Example**: For a schedule starting Jan 1 with both quarterly and monthly in-arrears prices, the end-of-March invoice will include line items for both prices (and so on).
Some pricing models can result in an additional invoice at the end of a billing period (for example, to bill for seat overages). If that end-of-period invoice creation event coincides with other charges, Sequence may combine them into a single invoice.
When a single invoice includes charges that relate to different service periods, each line item retains its own service period (for example, for revenue recognition). In that case, the invoice-level billing period can span multiple months.
## Phases
Phases enable scheduled price changes within a single billing schedule. Each phase represents a distinct period with sequential, non-overlapping time frames.
### Phases and billing periods
When a phase transition occurs in the middle of a billing period, Sequence creates partial billing periods with prorated charges for any prices that change between phases. This makes it easy to co-term price changes or up-sells into a customer's existing contract. To avoid unexpected proration, align phase start/end dates with billing period boundaries.
Phases determine when price changes take effect but don't change *when* invoices are created (except if billing day is reset).
**Example**: A 12 month schedule includes a price billed monthly in-arrears with a first phase from Jan 1 - Apr 15 and a second phase from Apr 16 - Dec 31. The price changes from \$100 per month during the first phase to \$250 in the second phase.
At the end of April, an invoice with two prorated line items is created (one for each partial period): \$100 \* 15/30d + \$250 \* 15/30 = \$50 + \$125 = \$75
* **Trials**: Create a short initial phase with special pricing
* **Pricing ramps**: Set up multiple phases with gradually increasing prices
* **Renewals**: Manage contract renewals within the same schedule through new phases
* **Up-sells**: Add a phase to co-term an up-sell into a schedule
**Billing day reset**: With each phase, the billing day can optionally be reset to the start date of the phase. Resetting the billing day impacts future billing periods and when subsequent invoices are created. By default, the billing day is not reset. Once a phase starts, billing day can no longer be reset.
**Example**: A 12 month schedule with a quarterly billed price starts on Jan 1 (with 1st of the month as billing day). A new phase is added starting on May 1 with the billing day reset to May 1. The result is a partial billing period from Apr 1 - 30 and a new quarterly billing period starting on May 1. If the schedule's duration remains unchanged (12 months), the last billing period is also prorated as a result (Nov 1 - Dec 31).
### Aligning the first billing period
The billing day setting aligns billing periods to specific calendar dates (like the 1st of each month), which simplifies accounting and financial reporting. By default, billing starts on the schedule's start date with the billing day set to the first of the month. Changing the billing day setting:
1. Creates a prorated first period from the start date to the first aligned billing day. The last period is also prorated.
2. Aligns all future billing periods to the specified day
3. Applies to all prices in the schedule
**Example**: For a 12 month schedule starting Jan 15 2024 with billing day set to the 1st, the first period is from Jan 15 - 31 2024 (prorated). Subsequent billing periods cover full calendar months, starting on the 1st. The last billing period is from Jan 1 - 14 2025 (prorated).
**Partial billing periods**: Occur when the actual billing period is shorter than the price's billing frequency. For example, a quarterly price in a schedule that only runs for two months results in a partial billing period.
## Change management
### Price changes
While a schedule is active, prices billed in-arrears can be changed directly, impacting the current (unbilled) billing period and subsequent periods. Prices billed in-advance require a new, separate phase for price changes. Prices in future phases can be edited without restrictions.
### Canceling an active schedule
Update the schedule end date to cancel a schedule ahead of time. If the new end date falls into an active billing period, in-arrears billed prices will be prorated and in-advance billed prices will be refunded pro-rata based on the unused time. Unbilled billing periods are unimpacted.
**Example 1**: A 12 month schedule starting Jan 1 with a monthly price billed in-arrears is canceled, with a new end date of Jun 15. On Jun 15, a final invoice for the partial billing period is created.
**Example 2**: A 12 month schedule starting Jan 1 with an price billed annually in-advance is canceled, with a new end date of Jun 15. On Jun 15, a credit note refunding the unused portion is created.
### Modifying schedule phases
**Completed phases**: Once a phase end date has passed, it's marked as `completed` and can no longer be modified.
**Active phases**: While a phase is active (current date falls within the phase), you can adjust its end date or change pricing for upcoming billing periods (for prices billed in-arrears).
**Adding new phases**: New phases can be added at any time while a schedule is active. Each new phase automatically aligns with the end date of the preceding phase, ensuring continuous coverage.
**Phase transitions**: When adding a new phase, you can choose to either align it with a billing period boundary (to avoid pro-rated fees) or set a specific date (which may result in partial billing periods).
**Example**: A customer on a 12-month contract with a monthly billing frequency completes 6 months and then requests an upgraded plan. To implement this:
1. End the current phase on the day of the change request
2. Add a new phase with the upgraded pricing that starts immediately after
3. Set the new phase to end on the original contract end date
# Phases
Source: https://docs.sequencehq.com/billing/billing-schedule-phases
Use phases in billing schedules to represent pre-agreed price changes, trial periods or pricing ramps
Create phases in billing schedules to setup a scheduled price change for a customer contract, such as ramped pricing. Phases are always sequential and cannot overlap, meaning that the end date of a phase is followed by the start date of a new phase.
Phases are a flexible tool to accomplish advanced billing scenarios, such as:
* **Introductory pricing**: Create a three month phase to set up introductory pricing that only applies in the first three months of a one year contract.
* **Pricing ramps**: For a three year contract, set up three distinct one year phases where pricing gradually increases by 25% each year.
* **Renewals**: Set up a new phase for a contract renewal instead of managing separate billing schedules or subscriptions.
Phases are different from billing periods and do not affect when invoices are generated. Phases determine when a pricing change should take place as part of a billing schedule or when a discount should be applied.
To avoid unexpected behavior, we recommend aligning phase start and end dates with billing periods.
While it is possible to set custom start and end dates for phases to exactly match your contract, Sequence will provide you with an option to align the configured phase dates with your schedule's billing periods.
When the start date of a phase does not coincide with a billing period, you cannot add discounts, minimums or edit prices.
### Credit grants on a phase
You can attach a recurring, prepaid [credit grant](/billing/credit-based-billing) directly to a phase from the schedule editor. A grant can apply to every price in the phase or be scoped to a subset, and is staged with the rest of the phase's edits until the schedule is saved.
### Reset billing periods
Use this setting to flexibly configure how to prorate fees for prices across multiple phases.
This feature is in beta.
Enable this setting to start new billing periods for all prices from the start of the new phase. If disabled (default), existing billing periods will continue as before.
By default, prices added as part of subsequent phases are co-termed into the billing schedule's previous billing periods and may be pro-rated (depending on the price's billing frequency). For some contracts, you might want to reset and start new billing periods from a subsequent phase to prevent proration. For example, if your contract includes a 3 month trial phase, followed by a year long phase including an annual advance fee. In this case, it is preferable to reset billing rather than co-term the annual fee into the existing billing period.
**Example**:
* Phase 1: 3 months (1st January to 31 March)
* Phase 2: 12 months (1 April to 31 March 2026)
By default, the second phase will continue using the existing billing periods. The annual fee starting in the second phase will be prorated to 9 months. At the end, the remaining 3 months of the annual fee are charged.
Reset billing periods to prevent the annual fee from getting pro-rated. Instead, the full annual fee is charged from the start of the second phase. Billing periods for existing prices also reset from here.
# Create billing schedules
Source: https://docs.sequencehq.com/billing/create-billing-schedules
Automatically generate invoices with a billing schedule
If your contracts are multi-year or include ramped pricing, you can model these as phases within a schedule. This avoids the need for multiple schedules per customer, ensuring a contract is captured as a single object in its entirety. Phases can also be used to manage renewals, addons, or price changes.
With billing schedules, you can automate the billing process for:
* Complex billing models, such as usage-based billing
* Multi-year contracts with ramped pricing and usage minimums
* Variations in pricing across customers
## Uploading contracts
Upload contracts, MSAs or commercial agreements and get a side-by-side view as you're configuring billing for a customer. When you convert a signed Sequence quote into a billing schedule, signed documents are attached automatically.
## Components of a billing schedule
A billing schedule is where the different concepts in Sequence come together and get applied to a specific customer.
A billing schedule contains the following elements:
* **Customer**: The customer you want to bill
* **Billing schedule dates and phases**: The start and end dates of the schedule, and what day of the month you want to bill the customer. You can optionally also configure [Phases](/billing/billing-schedule-phases)
* **Prices**: The prices you want to charge the customer, for the products they use
* **Optional discounts or minimums**: Discounts or minimum fees that apply to configured prices
* **Payment terms**: Net 30, Net 60, or custom payment terms for invoices
* **Optional settings**: Add a PO number or Invoice reference.
* **Attachments**: Upload any relevant attachments such as the sales contract to the schedule for a side-by-side view.
After a schedule is created, Sequence will automate the process of generating invoices for the customer.
### Payment terms
Configure payment terms at the billing schedule level to automatically apply them to all generated invoices. Select from Net 30, Net 60, or enter custom terms.
Payment terms set on a billing schedule override account-level defaults. When a billing schedule is created from an accepted quote, payment terms transfer automatically from the quote. You can still update payment terms on the draft invoice.
When an invoice needs to be generated, Sequence will calculate the charges for the customer and create a draft invoice. The charges will be based on the pricing, the customer's usage and any discounts applied.
### Pricing
After choosing a customer, the primary aspect of a billing schedule is pricing. In Sequence, pricing can be configured while creating your schedule, or separately within the product catalog.
You can read about the possible pricing models available with Sequence in full [here](/plans-products/subscription-pricing).
In summary, pricing can be one of these models:
* Fixed fee: a fixed fee charged on a recurring basis
* Usage-based: a fee charged based on the customer's usage
* Seat-based: a fee charged based on the number of seats a customer uses
Additionally, pricing can be either:
* In advance: the customer is charged at the start of the billing period
* Seat-based prices can also be configured to bill in advance (for example, monthly in advance with monthly overages). Usage-based prices cannot be billed in advance.
* In arrears: the customer is charged at the end of the billing period
Pricing also has a billing frequency, which determines how often the customer is charged. The billing frequency can be:
* Monthly
* Quarterly
* Annually
In general, you can combine all different types of pricing within a billing schedule. Sequence will determine when an
invoice is required to charge for each of the prices.
In-advance billing is not compatible with usage-based pricing models. To charge in advance for usage-based fees, use [credits](/credits/overview).
**Combining multiple billing frequencies**
You can combine prices with different billing frequencies (monthly, quarterly, annually) and types (in advance, in arrears) in a schedule. For example, combine:
* Annual in-advance fee with a monthly usage-based fee charged in arrears
* Quarterly in-arrears fees with monthly in-arrears fees.
* Monthly in-advance fee with a monthly usage-based fee charged in arrears
Sequence is designed to optimize and consolidate invoices where possible. For example, if you set up a Sequence billing schedule to bill your customers a fixed fee at the start of each month and a usage-based fee at month end, month-end invoices will also include the in-advance fee of the upcoming billing period.
### Discounts
Discounts can be applied to a billing schedule to reduce the amount charged to a customer.
Discounts can be either:
* Percentage: reduces charges by a specified rate (e.g. 10% off)
* Fixed: a set amount off the total (e.g. £100 off)
Discounts can be applied to any or all of the products being charged for in a schedule.
A discount can be applied for a specific period of time, or indefinitely.
**Discounts and partial billing periods**: For percentage discounts, the rate applies to the prorated charge amount. For fixed discounts, the full amount is applied regardless of billing period length.
**Example**: For a £500 monthly fee prorated to 15 days (£500 \* 15/30 = £250):
* 10% discount: £250 \* 10% = £25 off (calculated on prorated amount)
* £100 fixed discount: £100 off (full amount applied)
### Billing periods
Sequence generates invoices for a customer based on the billing periods configured in a schedule.
* **Billing start date**: The start date is when billing begins for the customer (often the contract start date)
* **End date**: The end date is the last day of the final billing period, such as the last day of a 12-month contract (often the contract end date)
* **Recurrence date**: If you are billing monthly, you can also configure when you want billing periods to start, such as 1st of the month.
To start billing immediately, set the start date to today's date. You can optionally configure the recurrence date to the 1st of the month. This will generate a prorated charge for the first billing period and align future billing periods to month end. Alternatively, to bill the customer starting from the next month, set the start date to the first of next month to begin billing then.
The billing frequency determines how often invoices are generated, such as monthly or annually. The billing schedule uses the frequency of the attached prices (monthly, quarterly or annually).
**Calendar and monthly billing**: When you create a billing schedule, you can flexibly define what day of the month or week you want new billing periods to start. If you want to bill your customers on a monthly basis, you might choose to start new billing periods every 1st of the month, for example. Alternatively if your company uses a Calendar billing model, you can choose today as the day new billing periods should start on.
## Viewing billing schedules
Billing schedules have a dedicated view mode that provides a comprehensive overview of the schedule without entering edit mode. This view offers a complete picture of the billing relationship with your customer.
### Billing timeline
The timeline displays the full history and lifecycle of a billing schedule:
* Contract start and end dates
* Billing period milestones
* Phase transitions for ramped or multi-year contracts
* Upcoming billing events
* Historical changes and modifications
Use the timeline to quickly understand where a customer is in their contract lifecycle and what billing events are coming next.
### Invoices in context
View all invoices generated from a billing schedule directly within the schedule view. This contextual view shows:
* Past invoices with their status (sent, paid, overdue)
* Upcoming in-progress invoices
* Invoice amounts and billing periods
* Quick access to individual invoice details
This eliminates the need to navigate between billing schedules and invoices to understand a customer's billing history.
### Change management workflows
From the schedule view, initiate different types of changes to manage the customer relationship:
Add new products or increase quantities mid-contract:
* Changes take effect immediately or at the next billing period
* Prorated charges may apply for mid-period upgrades
* Existing products and pricing remain unchanged
Extend the contract for another term:
* Set new contract end dates
* Adjust pricing for the renewal period
* Maintain continuity of service and billing
Modify existing schedule details:
* Update pricing, discounts, or other terms
* Add or remove products
* Change billing settings or customer information
End billing at a specific date:
* Choose immediate cancellation or end-of-term
* Final invoices generated based on cancellation date
* Option to preserve historical billing data
Each workflow guides you through the appropriate changes while maintaining billing accuracy and audit trails.
## Lifecycle of a billing schedule
A customer may have a billing schedule in place for an extended period of time. During this time, the schedule will go through different states.
### States
The states a schedule can transition through are:
* **Draft**: Draft schedules can still be edited without affecting billing or invoicing.
* **Upcoming**: Upcoming schedules are active schedules with a future start date.
* **Active**: The schedule is active and will produce invoices for the customer.
* **Completed**: The schedule has been completed and will no longer produce invoices.
Additionally, a schedule can have new prices and discounts added, and existing ones can be updated or removed.
### Draft schedules
You can create billing schedules as drafts. With draft mode, you can easily review schedules and make sure pricing, terms and start dates are correct before starting the billing process.
When you're ready, a draft schedule can be started.
### Duplicate billing schedules
Duplicate existing billing schedules to quickly create new schedules with the same pricing structure and terms. The new schedule is created as a draft, allowing you to select a different customer and modify details before activating.
Prices, discounts, minimums, tax rates and credit grants are always copied to the new schedule. Attachments and custom fields belong to the customer rather than to the schedule, so what carries across depends on whether you keep the same customer:
| | Same customer | Different customer |
| - | - | - |
| Attachments | Copied, referencing the same files | Not copied |
| Custom fields | Keys and values copied | Keys copied, values left blank |
Custom field keys are kept for a different customer so the copy prompts you to fill in the new customer's values, rather than inheriting the previous customer's answers. Attachments are never carried across customers, so a document such as a signed contract cannot appear on another customer's schedule.
Invoices are never copied. The duplicate starts with no billing history and issues its own invoices from its start date.
### Backdated billing schedules
You can create billing schedules with a start date in the past. Backdated billing schedules will create invoices for past billing periods.
For example, if today is the 1st of March and you set the billing schedule start date to 1st of February, recurring monthly, the schedule will automatically create the first invoice for the 1-28 February period.
Backdated billing schedules can be helpful for testing or to migrate existing customer contracts.
### Proration
Sequence automatically calculates charges for partial billing periods. For example, if you set the start date of your billing schedule to today (14/03/2023), but want new billing periods to start on the 1st of each month, the first billing period will be prorated (14/03 - 31/03).
For a billing schedule that has a price with a `£500` monthly recurring fee, Sequence calculates the prorated charges for you.
**Example calculation**:
* Billing start date: 14/03/2023
* Start new billing periods on: 1st of each month
* First billing period (prorated): 14/03/2023 - 31/03/2023 (18 days)
* Invoice total (pre tax): `£500 * (18 days / 31 days) = £290.32`
Proration is only supported for schedules with a single billing frequency.
### Archiving billing schedules
You can archive billing schedules via the dashboard. When you archive a billing schedule, any remaining draft invoices will be voided. Finalized and sent invoices will remain.
# Credit-based billing
Source: https://docs.sequencehq.com/billing/credit-based-billing
Bill customers upfront for a pool of credit and draw it down against later charges
Credit-based billing charges a customer upfront for a pool of credit tied to their contract, then automatically draws it down against later charges as they're incurred. It's the billing model behind prepaid usage commitments, recurring credit packages, and contract-length allowances.
### Bill for prepaid, recurring credit
Attach a credit grant to a phase of a customer's billing schedule
Scope a grant to specific products, so it only offsets the charges it's meant to
Refresh a grant's balance monthly, quarterly, semi-annually or annually, or grant it once for the whole phase
Charge a discounted price for the credit you grant
See a grant's balance and status alongside the rest of the schedule, and how much credit an invoice has drawn down
Credit-based billing is available on request. [Contact Sequence support](mailto:support@sequencehq.com) to have it enabled for your account.
## How it works
A credit grant attached to a schedule phase behaves like a prepaid balance for that contract. A customer is invoiced for the grant, and from that point its balance draws down as they're charged for the prices it covers, whether that's usage arriving throughout the period or a fixed price on the schedule.
This is different from a [standalone credit grant](/credits/grant-credits) created directly on a customer, which isn't tied to a schedule or contract term. Use credit-based billing when the credit belongs to the contract you're configuring, for example a prepaid usage commitment, a signup allowance, or an entitlement scoped to an introductory phase. See [Credits overview](/credits/overview) for how the two approaches compare.
### Adding credit to a phase
From the billing schedule editor, open the phase you want to attach credit to and choose **Add credits**.
Configure the grant:
* **Display name**: appears on the invoice as the credit line item's label
* **Amount**: the amount of credit to grant
* **Charge a discounted price for these credits**: optional. The customer receives the full credit amount but is invoiced less for it, for example charging \$0.90 for every \$1 of credit granted
* **Apply to**: either every product in the phase, or specific products. Scoping a grant to specific products restricts what it can be drawn down against, so a usage allowance doesn't accidentally offset a fixed platform fee
* **Refresh**: how often the grant's balance refreshes and is re-charged, such as monthly, quarterly, semi-annually or annually
Changes to a grant are staged with the rest of the phase and applied together when you save the schedule.
Once a schedule is live, a grant's definition is locked. To change it, remove the grant and add a new one instead of editing it in place. This preserves the integrity of any balance already drawn down against it.
### Drawing down against a grant
As a customer is charged for the prices a grant covers, its balance draws down automatically. Usage-based prices draw down in real time as events arrive, so a customer's remaining balance reflects activity as it happens rather than only at the end of the billing period.
If a customer holds more than one credit grant, Sequence draws down from whichever grant would forfeit its balance soonest, so credit is never left to lapse when a later-expiring grant could have been used instead. Ties are broken by the older grant. See [Consuming credits](/credits/consuming-credits) for the full drawdown order.
### Seeing credit on invoices
Once an invoice is finalized, Sequence itemizes the credit contributed by each grant as its own row, labeled `Credit applied - {grant name}`, alongside any other totals. This appears in the invoice editor and on the customer-facing PDF, so both you and the customer can see which grants contributed to the amount due. Where credit can't be attributed to a single grant, the row is shown without a grant name rather than guessed, so the rows still sum to the total credit received.
While an invoice is still a draft, Sequence shows an **Expected credit** row between the total and the total due, estimating how much credit the invoice will receive once it's finalized. This is an estimate: it can move before finalization if usage accrues or the credit ledger changes, and it's replaced by the settled *Credit applied* rows once the invoice is finalized.
### Grant status and balance
Once a schedule with credit attached is saved, its detail view shows a **Credit grants** section, with a status badge for every grant:
| Status | Meaning |
| - | - |
| Pending | The grant is configured but its invoice hasn't been sent yet, so it has no balance to spend |
| Active | The invoice charging for the grant has been sent, and its balance is available to draw down |
| Depleted | The grant's balance has been fully drawn down |
| Expired | The grant is past its expiry, and any remaining balance has been written off |
A grant shows as Pending as soon as it's added to a saved schedule:
It becomes Active once the invoice charging for the grant is sent, at which point its balance is available to draw down:
## Example
Modular sells Acme a contract that includes a prepaid API usage allowance:
* \$8,000 of credit, scoped only to the API usage price
* Refreshed, and re-charged, monthly
Modular's billing operator adds a credit grant to Acme's phase, sets the amount to \$8,000, scopes **Apply to** to the API usage price, and sets **Refresh** to monthly. Acme is invoiced \$8,000 at the start of each month, and the balance draws down automatically as their API usage arrives.
## Frequently asked questions
Once a grant's balance is fully drawn down, its status shows as Depleted and further charges against the prices it covers are billed as normal. If the grant refreshes, it releases a new balance at the start of its next period.
Any remaining balance from the previous period is written off when the grant refreshes and releases its next allowance.
The customer receives the full credit amount you grant, but Sequence invoices them for less than that face value. For example, a \$1,000 grant can be invoiced at \$900, so the customer gets \$1,000 of usable credit for \$900.
Not in place. Remove the grant and add a replacement with the new configuration. This keeps the drawdown history against the original grant intact.
## Next steps
* Learn how [billing schedule phases](/billing/billing-schedule-phases) work, since a credit grant is always attached to one
* See how credit is [drawn down and prioritized](/credits/consuming-credits) across multiple grants
* Compare with [standalone credit grants](/credits/grant-credits) for credit that isn't tied to a schedule
# Milestone billing
Source: https://docs.sequencehq.com/billing/milestone-billing
Create billing schedules phases with milestones
Milestone billing allows you to set up billing schedules for contracts with milestone or success-based periods. With milestone billing, you can bill customers or transition to the next contractual phase once a milestone is marked as complete.
### Automate billing for milestone-based contracts
Create billing schedules for contracts with milestone or success-based periods
Mark a billing milestone as complete to start the next phase of a contract
Capture a contract with milestone-based phases in a single billing schedule
### Example
Amara has sold Acme a multi-year contract that includes a paid for pilot period:
* Pilot period: \$12500 billed upfront. Completion of pilot period is depending on success criteria (e.g. successful roll-out)
* Year 1: \$1500 billed monthly in arrears
In Sequence, Amara can configure the following billing schedule:
Once the success criteria have been met, Amara can mark the billing schedule milestone as complete, initiating year 1 of the contract and starting a regular monthly arrears billing process for platform access.
### Billing behavior in milestone phases
**Prices with one-time fees**
If a milestone-based phase includes a price with a one-time fee billed in-advance, an invoice will be generated at the start of the phase.
If the one-time fee is billed in-arrears, an invoice will be generated when the phase ends, once the milestone is marked as completed.
**Prices with recurring billing frequencies**
Prices with monthly, quarterly or annual billing frequencies are billed as normal. When a milestone is marked as complete, active billing periods may be cut short, resulting in proration.
### Frequently asked questions
When you mark a milestone as complete, you choose the completion date. You can choose a date in the past or a future date. The default completion date is today. If a milestone-based phase is marked as completed today, the phase will be completed and the subsequent phase will start.
The completion date is the date on which the phase ends. On this date, the milestone phase will be marked as `completed` and a subsequent phase may start.
Yes, you can set completion date in the future.
# Multi-entity support
Source: https://docs.sequencehq.com/billing/multi-entity-support
Run quoting and billing across separate legal entities
Multi-entity support lets finance and revenue teams run quoting and billing for separate legal entities. Each entity keeps its own customers, quotes, billing schedules, invoices, and connectors.
## Switch workspace
Open the workspace menu in the top-left of the dashboard and select **Switch workspace** to move between legal entities. Customers, quotes, billing schedules, invoices, and user access stay scoped to the entity you are working in.
Use this when you operate more than one legal entity or business unit that should not share billing data.
Additional entities are available at an additional cost. Reach out to the Sequence team to add more entities to your account.
## Quoting by entity
Quotes are created and managed within the active entity. Product catalog, pricing, and deal terms apply to that entity only, so sales teams issue proposals under the correct legal entity.
For quote creation and lifecycle, see [Create quotes](/cpq/create-quotes).
## Billing and invoices by entity
Billing schedules, draft invoices, and sent invoices belong to the active entity. Merchant details, tax registrations, payment collection, and invoice branding apply to invoices issued from that entity.
For invoice workflows, see [Invoicing customers](/invoicing/invoicing-customers).
## Approval workflows by entity
[Workflows](/agents/workflows) run within the active entity. Quote approvals, contract intake, and other review steps route to the right team for that entity. Tasks in [Watchtower](/agents/watchtower) only include work for the entity you are signed into.
## ERP and accounting sync
Connect each entity to the accounting or ERP instance it should use. Entities can sync to separate instances, such as different Xero organizations or QuickBooks companies, or share one instance when your finance setup allows.
For supported accounting connectors and sync behavior, see [Accounting and ERP overview](/connectors/accounting-overview).
## Switch environment
Select **Switch environment** to move between sandbox and production. Use sandbox to test quoting, billing runs, and connectors. Use production for live customer billing.
**Sandbox**: `https://dashboard.sandbox.sequencehq.com`
**Production**: `https://dashboard.sequencehq.com`
For rollout steps, see [Onboarding](/getting-started/onboarding).
## Entity settings
Open **Settings** from the workspace menu to configure merchant details, tax registrations, payment collection, and invoice branding for the active entity. Connectors that depend on merchant address or currency use these settings.
## Access across entities
[Roles & permissions](/users/roles-permissions) control what users can see and do within each workspace. Assign roles per workspace so teams only access the entities they need.
# On-demand billing
Source: https://docs.sequencehq.com/billing/on-demand-billing
Bill customers for usage on-demand
Instead of monthly usage-based billing, bill customers on demand for usage. On-demand billing is ideal for businesses that need to bill customers for discrete events, such as batch orders or one-time purchases.
### Bill customers on-demand for discrete events
Instant invoice generation when usage events occur
Cumulative usage tracking across multiple events
Support for tiered pricing based on historical usage
Invoices are generated **daily** by default. Hourly billing can be enabled to generate invoices at the top of each hour (UTC). For example, submit usage data at 1:30pm UTC and the invoice will be generated at 2:00pm UTC.
**Updating an event after its invoice has been generated will cause it to be counted twice.** Because on-demand invoices are generated automatically (hourly or daily), the window an event belongs to may already have been invoiced. If you then re-submit an event with the same `customerEventId` but a changed `eventTimestamp` that moves it into a *different* billing window, the already-generated invoice is **not** corrected and the event is billed again in its new window.
To correct usage safely, update or void events **before** their window's invoice is generated. If an event has already been invoiced, [get in touch with support](mailto:support@sequencehq.com) rather than moving its timestamp.
### Getting started with on-demand billing
1. Create a usage metric.
2. Configure a new product and price with a usage-based pricing model.
3. Set the billing frequency to `on-demand`.
4. Create and start a billing schedule including the new price.
5. Submit an event for the customer and metric used in the price.
6. An invoice will be generated at the top of the next hour (or next day, depending on your configuration).
On-demand billing is only compatible with usage-based pricing models. Usage is accumulated throughout the billing schedule's phase. For tiered pricing, each new event considers the total historical usage to determine the applicable tier rate.
### Invoice timing
By default, invoices are generated daily, consolidating all usage events from the previous day.
Hourly billing can be enabled to generate invoices at the top of each hour (UTC). For example, submit usage data at 1:30pm UTC and the invoice will be generated at 2:00pm UTC.
### Example Use Cases
* **Batch order processing**: Bill customers when they place orders for physical goods
* **Usage-based services**: Bill customers immediately after service consumption
### Frequently asked questions
Usage is cumulative across all events in the phase. For tiered pricing, each new event considers the total historical usage to determine the applicable tier.
By default, invoices are generated once per day for all events from the previous day. Hourly billing can be enabled to generate invoices at the top of each hour (UTC) for events submitted during the previous hour.
On-demand billing is currently only available for usage-based prices. It cannot be used with fixed pricing models.
# Per-event billing
Source: https://docs.sequencehq.com/billing/per-event-billing
Generate a separate invoice for every usage event
Per-event billing generates a separate invoice for **every usage event** you submit. As soon as an event is received, it is billed on its own, so one event produces one invoice. This is ideal when each event represents a discrete, individually-billable transaction and you want the invoice to map exactly to the event that triggered it.
### How per-event billing works
Every usage event generates its own invoice (one event, one invoice)
Invoices are generated as soon as the event is received
Set per product, so a single billing schedule can mix per-event and other billing frequencies
### How it differs from on-demand billing
[On-demand billing](/billing/on-demand-billing) **aggregates** usage over a window (hourly or daily) and produces one invoice per window. Per-event billing does **not** aggregate. Each event is billed independently and immediately.
| | On-demand (hourly/daily) | Per-event |
| - | - | - |
| Invoice grouping | One invoice per hour/day window | One invoice per event |
| Timing | At the close of each window | As soon as the event is received |
| Deduplication by `customerEventId` | Yes, only the latest event in a window is counted | **No**, every submission is billed |
### Getting started with per-event billing
1. Create a usage metric.
2. Configure a product and price with a usage-based pricing model.
3. Set the billing frequency to `per-event` on the product.
4. Create and start a billing schedule including the new price.
5. Submit an event for the customer and metric used in the price.
6. An invoice is generated for that event as soon as it is received.
Per-event billing is only compatible with usage-based pricing models. It is configured per product, so you can mix per-event products and [on-demand](/billing/on-demand-billing) products within the same billing schedule.
### Deduplication and re-submitting events
**Per-event billing does not deduplicate by `customerEventId`.** Because every submission is billed on its own, re-sending an event with the same `customerEventId` generates an **additional** invoice rather than replacing the original, and re-sending with a changed `eventTimestamp` charges the customer again. This differs from monthly and on-demand billing, where only the latest event for each `customerEventId` is counted.
As a result, **`customerEventId` cannot be used as an idempotency key with per-event billing.** Only submit an event once, and do not attempt to correct an event by re-submitting it. Contact support to correct an already-issued invoice.
### Example use cases
* **Transactional billing**: Bill customers for each individual transaction as it happens
* **One-to-one invoicing**: Where each event must map to exactly one invoice for reconciliation
### Frequently asked questions
An invoice is generated for each event as soon as it is received. There is no aggregation window.
Both submissions are billed, producing two invoices. Per-event billing does not deduplicate by `customerEventId`, so only submit each event once. Contact support to correct an already-issued invoice.
Yes. Billing frequency is set per product, so a single billing schedule can include some products billed per-event and others billed on-demand.
No. Per-event billing is only available for usage-based prices.
# Roll-up billing
Source: https://docs.sequencehq.com/billing/roll-up-billing
Aggregate usage charges from multiple child customers into a single invoice
Roll-Up billing allows you to aggregate usage charges from multiple customers into a single invoice, provided they are in a parent-child [relationship](/customers/create-customer-relationships). This feature can be enabled for billing schedules where the customer is the parent.
Once enabled, Sequence will automatically combine the usage of all child customers and provide a detailed breakdown of each one’s usage in the consolidated invoice.
Usage-based pricing is only applied after all usage has been rolled up to the parent. Usage tiers **do not** separately apply to each child account's usage.
## Example use-classes
A parent account has three child accounts. Each child account has incurred some usage.
The invoice is billed to the parent account and includes a breakdown of each child account's usage.
On the invoice PDF, the breakdown is displayed on separate invoice page. Usage is broken down per customer and metric (in this order).
# Overview
Source: https://docs.sequencehq.com/compliance/overview
Sequence values transparency into how we secure your data and protect our Service.
Sequence is **GDPR compliant**, certified for **SOC 2 Type II** and **ISO 27001** compliant. Sequence is hosted on Google Cloud and data is **encrypted at rest and in transit**. Sequence provides **passwordless authentication** via magic links, and **enterprise single sign-on (SSO)** over SAML or OIDC with providers like Okta, Microsoft Entra ID and Google Workspace. See [Single sign-on](/users/single-sign-on).
The SLAs that we offer on our APIs and Service.
See the uptime and any planned maintenance of our APIs and Service.
How and why we use cookies on our website and our Service.
Finding out how we handle and secure your personal information.
How to report vulnerabilities as part of our bug bounty program.
Terms and conditions of using Sequence's Service.
Details on our obligations for complying with UK + EU GDPR regulation.
How we protect Sequence and the data of our customers.
The affiliates and third parties who help us offer our Service.
The enterprise-level security standards and certifications we are compliant with.
Sign in to Sequence with your company identity provider.
Contact us to exercise your rights under GDPR.
# Privacy policy
Source: https://docs.sequencehq.com/compliance/privacy-policy
Finding out how we handle and secure your personal information.
**Last updated: February 2026**. We periodically review the contents of the Privacy Policy to ensure it's accurate.
## Introduction
Hello. We’re Sequence, a software-as-a-service financial operations platform. We provide a web platform and API that allows businesses to simplify their financial and payment operations.
Altogether, these are our "Services". At Sequence, we're committed to protecting the privacy and security of all data we collect, store and process when we provide our Services, in accordance with the UK General Data Protection Regulation (UK GDPR) and the Data Protection Act 2018. This Privacy Policy is meant to help you to understand how we use the information we collect in order to provide our Services and to build trust in our system. We may need to update this Privacy Policy from time to time, so we recommend you check back periodically.
Our Services are designed for business use, and we do not knowingly collect personal data from individuals under the age of 18.
If we make any substantial changes, we may notify you via email or by posting a notice on our website.
## Contact us
We are Sequence HQ Ltd, incorporated in England and Wales under the company number `13585168`. In this Privacy Policy, we are referred to as "Sequence", "we", "us" or "our".
* You can find us at `27 New Dover Road, Canterbury, England, CT1 3DN`.
* Our ICO Registration number is `ZB304614`.
* Questions, comments and requests about this Privacy Policy can be addressed to `compliance@sequencehq.com`.
* Alternatively you can write to us at our address.
In the event of any I.T. security or data incidents, you can email us at `security@sequencehq.com` to alert us.
## The information we collect, use and hold
The information we collect, use and hold depends on the service we are providing, who we are providing that service to and how our customers, our customers’ users, and our customers’ end customers interact with us.
Terms we use: our customers are businesses, our users are the staff of those businesses, and end customers are counterparties or customers of those businesses.
Below we detail out: the information collected, how that information is used and how it is held – according to which service is being provided, and how.
### When a customer creates or uses an account in the Sequence platform
Our customers and their staff give their information in order to use the Sequence platform or sandbox. This information may include the user’s name, email address, job title, login information, company billing information, usage information, and other company information including business name, company address and company number.
For this information, we are the controller of the data and will hold it securely in line with our [Security Measures](/compliance/security). Some of this information may also be shared with our product or service providers or [subprocessors](/compliance/subprocessors), for instance to check if it is an existing customer or in order for us to deliver our services.
### When our customers use our financial operations platform for and on behalf of their end customers
Our customers are businesses and when they use our financial operations platform and services we are acting on their behalf as their service provider and processor. Our customers, and not us, are the controllers of the data submitted when they use our services to interact and provide a service to their end customers; we are the data processor.
The exact information processed depends on how our customer is using our service, which of their end customers they are interacting with and the purpose of the usage.
For instance, when a Sequence customer uses the Sequence API to program a payment to or from their end customers or a counterparty, then Sequence will process certain payment information such as payment recipient name and bank information. Or for instance, when a Sequence customer uses the Sequence platform to send communications to their end customers or counterparties, then Sequence will process certain contact information like email or recipient name. We use this information in order to meet our contractual obligations and provide our service to our customer.
From time to time we may need to assist our customers regarding, for example, payment or account failures and will use certain information such as debugging, time logs, nature and detail around complaints etc. We use this information in order to meet our obligation to provide Customer Services around our services. Some of this information may also be shared with our product or service providers or sub-contractors, in order for us to deliver our services to our customer.
For additional information about how your specific data is being collected and used, and if you are an end customer or counterparty of a business who is our customer, please also review the privacy policy of the business who is using our services.
### When on our website or when you otherwise interact with us
We collect the information you decide to provide when browsing our websites or when you otherwise interact with us. For example, we collect information when you inquire about the Sequence Services, sign up for our newsletter, submit a request, submit information, comment on a blog post, or otherwise contact us. This information might include your name, email address, address, phone number, company information, billing and purchase information, and any other information you choose to provide.
In addition, we also automatically collect certain information from you when browsing our website.
This includes:
* Log Information: we log information about your use of the website, including the type of browser you use, access times, pages viewed, your IP address and the page you visited before navigating to the website.
* Device Information: we collect information about the computer or mobile device you use to access our website, including the hardware model, operating system and version, unique device identifiers and mobile network information.
* Information Collected by Cookies and Other Tracking Technologies: we and our service providers use various technologies to collect information, including cookies and web beacons. Cookies are small data files stored on your hard drive or in device memory that help us improve our website and your experience, see which areas and features of our website are popular and count visits. Web beacons are electronic images that may be used on our website or emails and help deliver cookies, count visits and understand usage and campaign effectiveness. For more information about cookies, and how to disable them, please see your browser settings.
We use the information we collect to:
* Provide, maintain and improve the website;
* Send you technical notices, updates, security alerts and support and administrative messages;
* Respond to your comments, questions and requests and provide customer service;
* Communicate with you about products, services, offers, promotions, rewards, and events offered by Sequence and others, and provide news and information we think will be of interest to you;
* Monitor and analyze trends, usage and activities in connection with the websites; and
* Carry out any other purpose for which the information was collected.
Some of this information may also be shared with our product or service providers or sub-contractors, in order for us to deliver our services.
We use information for the above purposes where it is necessary to meet our contractual obligations, where it is necessary in our legitimate interest to do so, where we have a legal obligation, or where an individual has provided their consent.
## Change of purpose
We will only use your personal information for the purposes for which we collected it, unless we reasonably consider that we need to use it for another reason and that reason is compatible with the original purpose. If we need to use your personal information for an unrelated purpose, we will notify you and we will explain the legal basis which allows us to do so.
We may process your personal information without your knowledge or consent, in compliance with the above rules, where this is required or permitted by law.
## Data sharing
In addition to the data sharing and specific purposes described above, Sequence may also share information with other companies, organizations, government bodies, and individuals outside Sequence where we have a legitimate legal reason for doing so (for example, in connection with any merger or acquisition or to comply with a court order) or where we have been instructed to share the information on behalf of our customers.
Whenever legally possible, we seek to protect the information we share by imposing contractual privacy and security safeguards on the recipient of the information. This is particularly important in cases where the recipient is located in a country that has different or lesser privacy laws than those of the country where the information was originally collected. In some cases, however, it’s not possible for us to do so — for example, when we have a legal obligation to disclose information to a government authority and that government authority isn’t willing to enter into such contractual safeguards.
## Processing information outside the UK
Where we, or our partners, process your personal information outside the UK, we will look to limit the jurisdictions to the EU and US so that you can expect an essentially equivalent degree of protection to your personal information (and certainly no less than expected in the data protection legislation regarding the countries and entities which process your information).
Where we do process your personal data outside the UK, we would only do so in order to carry out activities to operate our business and provide our services. In most circumstances, we rely on approved standard contract clauses (SCC) which we include in our agreements with data processors and service providers, but may also rely on other mechanisms recognized in data protection legislation.
We maintain a list of the subprocessors and third parties with whom we may share data in order to provide our Services. This list also includes, where possible, the locations in which the data will reside or be processed.
## Data retention
We will only retain data for as long as necessary to fulfill the purposes we collected it for, including for the purposes of satisfying any legal, accounting, or reporting requirements. To determine the appropriate retention period for personal data, we consider the amount, nature, and sensitivity of the personal data, the potential risk of harm from unauthorized use or disclosure of your personal data, the purposes for which we process your personal data and whether we can achieve those purposes through other means, and the applicable legal requirements.
In some circumstances we may pseudonymize or anonymize personal information so that it can no longer be associated with an individual person, in which case we may use such information without further notice to you.
## Your rights
If you would like to access a copy of, delete, or otherwise exercise control over your personal information, please contact us via [the Data Requests form](/compliance/data-requests). Please be aware, for many requests Sequence may need to notify our relevant customer (as described above detailing how Sequence may collect, use and hold information) and so our customer (and not Sequence) may fulfill the request. This is necessary where Sequence is acting on the customer’s behalf.
## Information security
We take the security of the information that we process very seriously, and endeavor to operate enterprise-grade information security measures. We are certified for SOC2 Type II and shortly to be certified for ISO27001 (see more on [our certifications](/compliance/certifications)).
We take appropriate administrative, physical, technical and organizational measures designed to help protect user information from loss, theft, misuse and unauthorized access, disclosure, alteration and destruction. More detail on how we secure and protect data can be found on the [Security Measures page](/compliance/security).
Transmission of information via the internet is not completely secure. Although we will do our best to protect your personal data, we cannot guarantee the security of your data transmitted to our website or to us, for instance, by email; any transmission is at your own risk. Once we have received your information, we will use strict procedures and security features to try to prevent unauthorized access, loss or damage.
## How to complain
You have the right to make a complaint at any time to your local supervisory authority. In the UK that is the Information Commissioner's Office (ICO) ([www.ico.org.uk](http://www.ico.org.uk)). We would, however, very much appreciate the chance to deal with your concerns before you approach the ICO, and you can contact us in the first instance by contacting us directly.
Our ICO Registration number is: `ZB304614`
# Responsible disclosure
Source: https://docs.sequencehq.com/compliance/responsible-disclosure
How to report vulnerabilities as part of our bug bounty program.
We encourage everyone that practices responsible disclosure to participate in our bug bounty program.
To take part, please make sure that you:
* abide by our [terms of service](/compliance/terms-of-service)
* avoid the use of automated testing frameworks
* only perform testing with your own data
* include a proof of concept on how the vulnerability could be exploited
* do not disclose any information regarding vulnerabilities until we have a fix in place
Rewards are given at our discretion depending on the criticality of the vulnerability reported.
You can report vulnerabilities by contacting [security@sequencehq.com](mailto:security@sequencehq.com).
We will respond as quickly as possible to all submissions that follow the rules above, and will consider them as part of the bug bounty program.
## Bug bounty scope
We've defined the scope of the bug bounty to exclude some services which are not critical to business or pose no risk to our customer data, or which we consider not suitable for the program at this time.
### In scope
* our dashboard and APIs, and other content hosted on the [https://eu.sequencehq.com](https://eu.sequencehq.com) subdomain.
### Not in scope
* [https://www.sequencehq.com](https://www.sequencehq.com)
* [https://docs.sequencehq.com](https://docs.sequencehq.com)
* Phishing or social engineering, or otherwise trying to engage Sequence employees
* Denial of service attacks
* DNSSEC warnings
# Service level agreement
Source: https://docs.sequencehq.com/compliance/service-level-agreement
The SLAs that we offer on our APIs and services.
The purpose of our Service Level Agreement ("SLA") is so we maintain the scope and quality of our services, as well as our relevant maintenance and support commitments.
## Service level
The Services shall be available 99.9% of the time, measured monthly, excluding scheduled maintenance.
The Agreement applies to our production Services, and does not equally cover our sandbox or other testing environments, although efforts will be made to ensure they meet your expectations in terms of availability.
Any downtime from outages of third party connections or utilities, or other reasons beyond Sequence's control are excluded from the calculations. Sequence's blocking of data communications or other services (in accordance with our [terms of service](/compliance/terms-of-service)) cannot be deemed to be a failure of Sequence to provide adequate service levels but we will always do our utmost to monitor and resolve incidents which affect our services.
Incidents and other Downtime affecting Service will be reported on our status
page.
## Terms of the agreement
We use the following language across our docs, as part of the SLA, and if you report a support request with us:
* "Incident" - a period of time in which Sequence's Services are impaired. Incidents are measured by their impact, using a scale of P1 (critical) to P4 (low) severity.
* "Downtime" - a period of time in which Sequence's APIs, dashboards or Services are unavailable.
* "Services" - The APIs and dashboard that Sequence offers customers to manage their accounts, and the operations of the product we provide.
# Terms of service
Source: https://docs.sequencehq.com/compliance/terms-of-service
Terms of using Sequence's service
## 1. THE PARTIES
### 1.1. About us.
Hello. We are Sequence HQ Ltd, incorporated in England and Wales under the company number `13585168`. You can find us at `27 New Dover Road, Canterbury, England, CT1 3DN`. Under these Terms of Service, we are referred to as us, our and we.
### 1.2. About you.
You are the Customer whose details are reflected under the broader Customer Agreement. Under these Terms of Service, you will be referred to as you and your. Together, we will be the parties.
## 2. SERVICES & SUPPORT
### 2.1. Our Services.
We provide various services via our web platform (Platform) and, for certain services, an API to simplify your financial and payment operations. Different terms will apply for each type of service we offer (as expressly indicated in this Agreement) and include:
* connecting you with payment processor service providers (Payment Services),
* access to our templates and payment workflows to allow you to design your own user flows (Templates), and
* a software tool to create and manage your subscriptions and invoices (Billing).
The services you purchase will be set out in the Order Form and are the Services under this Agreement.
### 2.2. Modifying the Services.
We may modify the Services from time to time to make improvements or updates necessary to comply with changes in laws and regulations, however any modifications will not materially or adversely impact your use of the Services. We will aim to notify you about these modifications in advance, and will provide you with 10 working days’ notice if modifications would cause a material change to your use of the Services.
### 2.3. Monitoring.
We have no obligation to monitor any data or information you upload onto the Platform (your Content) or your general use of the Services, however we may do so and have the right to remove Content or prohibit your use of the Services if we reasonably believe you are violating this Agreement or applicable law.
### 2.4. Service Levels.
We will aim to provide the Services in accordance with our [Service Level Agreement](/compliance/service-level-agreement).
## 3. RESTRICTIONS & RESPONSIBILITIES
### 3.1. Creating an account.
You will create a username and password for your Platform account and are responsible for maintaining the security of your account, passwords and files. You are also liable for any use of your account, whether you have authorized it or not.
### 3.2. Onboarding information.
If it is required under any applicable financial regulations, you may be requested to provide information during the registration process such as completing Know Your Customer (KYC) / Know Your Business (KYB) checks, before being given access to the Services.
### 3.3. Using the Services.
You agree to use the Services in accordance with this Agreement and any applicable laws. When using our Services, you must not actually or attempt to:
* a. interfere with or damage any part of the Services, our equipment, network, software or storage
agreements, or introduce malware, viruses, Trojans or other technologically harmful or damaging
material,
* b. rent, license or re-sell the Platform, Services or any part of them,
* c. decompile, probe, scan or test the vulnerability of our systems or networks, breach or circumvent any security or authentication measures protecting the Platform, reverse engineer, disassemble, data scrape, script, automate or adapt the Platform, Services or any part of them,
* d. use the Services for benchmarking purposes or to build a competitive product or service,
* e. use the Services for any illegal activities or to abuse, harm, harass or exploit other users, access another account without permission or distribute spam,
* f. take, upload, publish or transmit any screenshots, screen captures, reproductions, drawings photos, videos, downloads or data of any part of the Services unless we have consented to this,
* g. copy, duplicate, modify, create derivative works from or distribute all or any portion of the Platform and/or the Services except to the extent expressly set out in this Agreement,
* h. access the Platform other than as provided under this Agreement,
* i. impersonate or misrepresent yourself or your business, and
* j. encourage or assist any other user or third party to do any of the above.
### 3.4. Cooperation.
You agree to cooperate with us to allow us to perform our obligations under this Agreement and provide us with information we may reasonably request.
### 3.5. Point of contact.
You will designate an employee who will be responsible for all matters relating to this Agreement (the point of contact set out in the Order Form) and agree to notify us in writing if this point of contact changes.
## 4. CONFIDENTIALITY
### 4.1. Definition.
Confidential Information means all sensitive and proprietary information relating to a party in any media or form, that is marked as confidential or would reasonably be considered as confidential due to the circumstances in which it is shared. This includes information relating to customers and suppliers, employees and officers, products and services, know-how and these Terms.
### 4.2. Mutual obligations.
You and we agree to:
* a. maintain the confidentiality of the other party’s Confidential Information using the same degree of care used to protect its own Confidential Information,
* b. not disclose, copy or modify Confidential Information without the owner’s prior written consent unless it is necessary to fulfill obligations under this Agreement or to comply with applicable laws or regulations, provided that the owner of Confidential Information has been notified before any disclosure has been made (if legally allowed),
* c. only disclose the other party’s Confidential Information to employees, affiliates and professional advisers on a ‘need-to-know’ basis who are bound in writing to confidentiality obligations substantially similar to these,
* d. promptly notify the owner upon becoming aware of any unauthorized use, disclosure, theft or loss of their Confidential Information, and
* e. upon written request from the owner, promptly return or destroy the owner’s Confidential Information and any copies in the receiving party’s possession. This obligation will not apply to Confidential Information a party is required to keep in order to comply with applicable laws and regulations, or to Confidential Information held securely in archival systems.
### 4.3. Exceptions.
Confidential Information does not include information that:
* a. is in the public domain at the time of its disclosure,
* b. is lawfully received by a third party free of any obligation of confidence at the time of its disclosure,
* c. is independently developed by a party without access to or use of the other party’s Confidential Information, or
* d. was already in the possession of the receiving party prior to the owner’s disclosure.
### 4.4. Confidentiality term.
The confidentiality obligations of each party will continue for 2 years after the termination of this Agreement.
## 5. INTELLECTUAL PROPERTY
### 5.1. Our IP.
We own, and will continue to own, all intellectual property rights relating to the Platform, API, Templates and Billing, and any new or amended versions we may develop. In addition, we also own all suggestions, ideas, enhancement requests, feedback, recommendations or other information you provide us relating to the Platform and Services.
### 5.2. Your license.
Subject to your compliance with this Agreement, we grant you a limited, non-exclusive, non-transferable, revocable license to use the Platform and Services (excluding Payment Services which is covered under “Third Party Services” below) solely in accordance with the terms of this Agreement.
## 6. DATA PROTECTION
### 6.1. GDPR Compliance.
We will both comply with all applicable requirements of the EU General Data Protection Regulation (2016/679/EC), the Data Protection Act 2018 as may be amended from time to time, and all applicable data protection legislation.
### 6.2. DPA.
To the extent we act as a data processor and process any of your personal data while providing the Services, the terms of the Data Processing Agreement will apply to such processing.
## 7. FEES & PAYMENT TERMS
### 7.1. Fees.
You will pay the fees as set out in the Order Form (the Fees) and, if applicable, fees for additional services (such as consulting).
### 7.2. Payment terms.
Unless otherwise stated in the Order Form, payments are due within 30 days of the invoice date and are nonrefundable.
### 7.3. Late Fees.
Fees which have not been paid by their due date are subject to an interest rate of 1% per month, or the maximum permitted by law, whichever is lower.
### 7.4. Taxes.
Fees under this Agreement are exclusive of all taxes. You will be responsible for any applicable taxes (excluding US taxes based on our net income) unless you have provided us with a valid exemption certificate. In the case of any withholding requirements, you will pay any required withholding and will not deduct it from the amount paid to us.
## 8. TERM & TERMINATION
### 8.1. Term.
This Agreement will continue for the Term set out in the Order Form, unless it is terminated earlier in line with this Agreement.
### 8.2. Termination for cause.
Either party may terminate this Agreement immediately by giving written notice to the other if the other party:
* a. commits a material breach of this Agreement incapable of remedy, or if it is capable of remedy, fails to remedy it within 30 days of being notified of the breach, or
* b. becomes subject to, or is reasonably likely to become subject to, an insolvency, bankruptcy, administration, receivership or other similar event.
### 8.3. Survival.
Any terms which are intended to survive termination of this Agreement will remain in full force and effect.
## 9. WARRANTY & DISCLAIMER
### 9.1. Your warranties.
You represent and warrant that you have all rights, title and interests to all data and information you upload to the Platform (your Content) and which we process in order to provide you with the Services.
### 9.2. Our warranties. We will:
* a. not knowingly include in the Services any viruses or other malicious code that would cause intentional harm to a computer network or system, including security or user data (our Security Warranty),
* b. use reasonable efforts in line with prevailing industry standards to maintain the Services in a way that minimizes errors and interruptions, and
* c. carry out the Services in a professional and workmanlike manner.
### 9.3. Security Warranty.
If we fail to comply with the Security Warranty, you may notify us in writing with details of the breach and, within 30 days of receiving your notification, we will either correct that failure or provide you with a plan for how we intend to correct it. If the breach is not corrected or we do not provide a reasonably acceptable plan to correct it within that period, you may terminate this Agreement as your sole and exclusive remedy for our breach of the Security Warranty.
### 9.4. Maintenance.
Services may be temporarily unavailable for maintenance (either scheduled or in an emergency), but we will use reasonable efforts to give you advance notice of any scheduled disruption.
### 9.5. Disclaimer of warranties.
Except as expressly set out in this Agreement and to the fullest extent permitted by applicable law, the Services are provided “as is”. All warranties, conditions, terms or obligations, whether expressed or implied, including any implied terms relating to merchantability, fitness for a particular purpose, ability to achieve a particular result or non-infringement, are excluded to the fullest extent legally permissible.
## 10. INDEMNITY
### 10.1. Your indemnity.
You will defend, indemnify and hold harmless us for all losses and liabilities resulting from:
* a. any third party claim that Content infringes that third party’s intellectual property rights,
* b. your use of the Services, and
* c. your breach of this Agreement.
### 10.2. Our indemnity.
We will defend, indemnify and hold harmless you for any liabilities to third parties resulting from a third party intellectual property infringement claim, provided that you notify us as soon as possible upon becoming aware of a claim, provide us with reasonable assistance and give us sole authority to defend or settle the claim. We will not be responsible for any settlement that we have not approved in writing.
### 10.3. Exclusions.
Our indemnity above does not apply:
* a. to those parts of the Services which are not supplied by us, made in accordance with your specifications, modified after delivery, or combined with other products, processes or materials and the alleged infringement is related to that combination,
* b. where you continue to use the infringing part of the Services after being informed of the infringement or the modifications to avoid it,
* c. where your use of the Services is not in line with this Agreement.
### 10.4. Remedies.
If we believe the Services may infringe third party intellectual property rights, we may:
* a. replace or modify the Services so they are no longer infringing, provided that the Services will still have substantially similar features and functionality,
* b. obtain a license for you to continue using the Services, or
* c. terminate this Agreement by giving you written notice and refund you any prepaid, unused fees on a pro rata basis for the remainder of the Service Term.
### 10.5. Sole remedy.
This clause will be your sole and exclusive remedy and our entire liability for any third party intellectual property infringement claims under this Agreement.
## 11. LIABILITY
### 11.1. Liability cap.
Our total liability to you will not exceed the amount of fees paid by you during the 12 months before the date on which the claim arose.
### 11.2. Indirect losses.
We will not be liable for any:
* a. error or interruption of use,
* b. loss, inaccuracy or corruption of data,
* c. indirect, special or consequential losses,
* d. loss of business, goodwill, revenues or profits,
* e. costs of procuring any substitute services, or
* f. matters outside our reasonable control.
# 12. THIRD PARTY SERVICES
### 12.1. Third party services.
The Services may be supported by and operate with application programming interfaces and other third party services. We are not liable for any third party services, or the availability and operation of the Services to the extent they depend on them. You are responsible for obtaining any rights or licenses necessary for your access to third party services and for complying with their terms.
## 13. OTHER IMPORTANT TERMS
### 13.1. Publicity.
You agree that we may disclose that you are one of our customers in our advertising or promotional material Within 1 month after the Effective Date, we may request your participation in a case study about your use of our Services, which we may use and distribute for our advertising and promotional materials.
### 13.2. Assignment.
We may assign, sub-contract or transfer any of our rights under this Agreement. You may not assign, sub-contract or transfer rights and obligations under this Agreement without our prior written consent.
### 13.3. Amendments.
Any amendments to this Agreement must be in writing and signed by an authorized representative of each party.
### 13.4. Severance.
If any provision of this Agreement is held invalid, illegal or unenforceable, that provision will be deleted without affecting the rest of the Agreement.
### 13.5. Entire agreement.
This Agreement constitutes the entire agreement between the parties and supersedes all prior discussions and agreements relating to the subject matter.
### 13.6. Notices.
Any notice given under this Agreement must be in writing, signed by a party's authorized representative, delivered by hand or post to the other party's registered office (or other address specified by the other party for that purpose) and will be considered received:
* a. at the time of delivery, if delivered by hand, or
* b. 48 hours after posting if delivered by post.
### 13.7. No partnership or agency.
Nothing in this Agreement is intended to create a partnership or legal relationship of any kind. Each party confirms it is acting on its own behalf and not for the benefit of any other person or entity.
### 13.8. Third parties.
No one other than a party to this Agreement has the right to enforce any of its terms.
### 13.9. Accrued rights and liabilities.
Termination or expiry of this Agreement will not affect any rights or liabilities that have accrued up to the date of expiry.
### 13.10. No waiver.
If a party fails to enforce a right under this Agreement, that is not a waiver of that right at any time.
### 13.11. Equitable relief.
The parties may seek injunctive relief or specific performance to enforce their rights under this Agreement in addition to other remedies.
### 13.12. Governing law and jurisdiction.
This Agreement is governed by the laws of England and Wales and the courts of England and Wales have exclusive jurisdiction to settle any disputes in relation to it.
# Overview
Source: https://docs.sequencehq.com/connectors/accounting-overview
Keep Sequence invoices, credit notes and customers in sync with your accounting suite
Our seamless accounting connectors allow you to connect Sequence with your accounting suite effortlessly, ensuring all your financial records stay in sync. This guide is a quick overview of the benefits and recommended usage of our accounting connector.
Sequence integrates with the following Accounting suites:
* Xero
* QuickBooks
* NetSuite
* Rillet
Head to the **Connectors** section in the dashboard and find your chosen accounting software. Follow the steps to connect your account.
## Benefits of the Accounting & ERP Connector
By integrating Sequence with your accounting system, you can:
* Push Sequence invoices and credit notes into your accounting suite. Every invoice and credit note finalized in Sequence will be automatically pushed to your accounting suite.
* Batch import customer records into Sequence, ensuring invoices are linked to the correct customers.
* Keep records up to date, including invoices and credit notes
* Keep the payment status of invoices in sync. Payment status updates will be reflected in both systems, ensuring that you can easily keep track of all your financial records.
* Maintain consistent ledger account information across both platforms.
This connector ensures that all your financial data stays in sync, allowing Sequence to fit seamlessly into your existing workflows. You can use Sequence to issue invoices and credit notes while recognizing revenue through your accounting suite, maintaining continuity across your financial operations.
## Recommended steps
To gain the most value from the accounting connector, follow the below steps:
1. Import your customers from Xero into Sequence.
2. Use Sequence to create draft invoices.
3. Review and edit invoices within Sequence as needed.
4. Finalize and send invoices to customers using Sequence.
5. Invoices are automatically synced with Xero for revenue recognition and general accounting purposes.
# Anrok
Source: https://docs.sequencehq.com/connectors/anrok
Connect Anrok to automatically calculate, apply, and record sales tax on your invoices.
Connect Anrok to Sequence and automate sales tax end to end. Anrok calculates the right tax on every invoice based on your customer's location and tax registrations, applies it automatically, and records each finalized invoice back in Anrok so your returns stay filing-ready. This connector requires an Anrok account.
### Capabilities
**Automated tax calculations**: Anrok calculates sales tax on every invoice from your customer's location, tax registrations, and the tax category of each line
**Up-to-date rates**: Anrok applies the latest rates and rules for each jurisdiction, so you never maintain rates by hand
**Filing-ready records**: Finalized invoices and credit notes are recorded in Anrok automatically, keeping your tax obligations in sync for filing
**Credit notes and voids**: Refunds and voided invoices reverse the corresponding tax in Anrok automatically
**Multi-jurisdiction support**: Record multiple tax registrations per customer for businesses selling across states and countries
**Exempt and reverse charge handling**: Manage exemption certificates in Anrok and let Anrok determine reverse charge treatment automatically
### Before you begin
You need an Anrok account and an API key to connect this connector. Reach out to your Anrok representative if you don't yet have one.
Because Anrok determines tax from location, make sure the following are accurate before you connect:
* **Your merchant address** at **Settings > Merchant > Address**. This is the point of origin for every calculation.
* **Your customers' billing addresses**. Tax is calculated against where your customer is located.
* **Tax registration IDs for non-US customers**. Anrok uses each customer's tax registration ID to calculate tax outside the US, so record it for any non-US customer.
### Connector setup
Navigate to **Browse integrations**, locate Anrok in the **Tax** section, and click **Manage integration**.
Paste your Anrok API key into the field provided and click **Test credentials** to verify the connection. Once validated, click **Save changes** to activate the connector. Your API key is generated in your Anrok account settings.
Navigate to **Settings > Sales Tax**. With Anrok connected, your Sequence tax categories are mapped to Anrok tax categories rather than to custom rates.
For each tax category, click **Add Anrok mapping** and choose the matching Anrok tax category. Anrok offers standard tax categories for common product types, and you can also map to custom categories you've created in Anrok.
Mark one mapping as the **default**. Line items whose tax category has no specific mapping fall back to the default, so tax can always be calculated.
If a tax category has no mapping and you haven't set a default, invoices using that category can fail to finalize. Sequence shows a warning on the Sales Tax page when categories are unmapped and no default exists.
Every product that should be taxed needs a tax category assigned. Go to your **Products** catalog and assign a tax category to each product. For automatic tax calculation to work on a line item, its tax category must have a corresponding Anrok mapping (or you must have set a default).
On a customer's record, add the tax registration IDs for the jurisdictions where that customer is registered. Anrok uses these to apply the correct treatment per jurisdiction.
A customer can have **more than one** tax registration, which is useful when they're registered across multiple states or countries. Add each registration that applies.
Your Anrok connector is now active and will calculate sales tax automatically.
### Linking existing customers
Anrok needs each Sequence customer linked to a matching customer in Anrok before it can calculate tax for them. When you connect Anrok, this link is created automatically for any customer you create in Sequence from that point on.
Customers that already existed in Sequence before you connected Anrok aren't linked automatically, so invoicing them fails until they are.
If you already have customers in Sequence when you connect Anrok, contact the Sequence team. We'll bulk-link your existing customers on your behalf, either creating a new Anrok customer for each one or linking to an Anrok customer you already track there, so every customer is ready for tax calculation without you having to link them one by one.
### How it works
With Anrok connected, sales tax is calculated automatically, so you no longer enter tax rates by hand. Anrok determines the amount from three things:
* The origin address configured at **Settings > Merchant > Address**
* Your customer's billing location and tax registrations
* The Anrok tax category mapped to each line item's tax category
**Tax on draft invoices**
As you build a draft invoice, Sequence asks Anrok to calculate tax and shows it as a line on the invoice. The amount updates as line items, quantities, or the customer change, so you always see an accurate preview.
**Recording tax at finalization**
When an invoice is finalized, Sequence records the transaction in Anrok so the tax is captured for filing. Tax is shown per line item in Sequence and on the invoice PDF your customer receives.
**Which date tax is recorded against**
Sequence sends the invoice's **accounting date** to Anrok as the transaction's accounting date. This is the date Anrok prices the transaction on and files it under, so the tax period in Anrok matches the period you record the invoice in.
Your accounting date comes from the **Invoice dates** setting, so whether you record invoices against the billing date, the billing period end date, or the day you issue them, Anrok follows the same convention. See [Invoice dates](https://dashboard.sequencehq.com/settings/invoices) to review or change it.
Changing your **Invoice dates** setting affects invoices finalized from that point on. Transactions already recorded in Anrok keep the date they were filed with.
Credit notes work the same way: Anrok records them against the credit note's accounting date. A credit note also has an optional **tax date**, which takes precedence over accounting date when it's set.
**Credit notes, refunds, and voids**
When you issue a credit note or void a finalized invoice, Sequence reverses the corresponding tax in Anrok automatically, so your records stay accurate. Taxable credit note line items need a tax category, just like invoice lines, so the right amount is reversed.
### Tax-exempt and reverse charge customers
When using Anrok, we recommend relying on the Anrok platform to manage tax exempt and reverse charge status. To keep Anrok as your tax system of record, mark your customers as **Taxable** in Sequence and manage exemption status on the Anrok side.
**Tax-exempt customers**
To make a customer tax exempt, upload a tax exemption certificate for that customer in the Anrok dashboard. Anrok then applies the exemption automatically when calculating their invoices.
**Reverse charge**
There is no reverse charge setting to configure. Anrok determines whether a line item should be reverse charged from your customer's configuration in Sequence (their billing address and tax registration IDs), so make sure both are accurate on the customer's record.
**Overriding tax status in Sequence**
If you want to isolate a specific customer from Anrok, you can set their tax status to **Exempt** or **Reverse charge** on the customer edit page in Sequence. Use this only when you need to override Anrok's treatment for that customer; otherwise, keep customers marked as **Taxable** and let Anrok determine the correct treatment.
### Troubleshooting
Re-check the API key copied from your Anrok account and paste it again, then click **Test credentials**. If it still fails, confirm the key is active in Anrok and that your Anrok account is in good standing.
Anrok needs a valid, complete address to determine tax. Check the customer's billing address for missing or incorrect fields (country, state/region, and postal code in particular), then try again.
Go to **Settings > Sales Tax** and add an Anrok mapping for the tax category, or set a default mapping that unmapped categories can fall back to. Invoices using an unmapped category with no default can fail to finalize.
The invoice currency isn't supported for tax calculation in your Anrok configuration. Confirm the currency with your Anrok representative.
Double-check your merchant address at **Settings > Merchant > Address**. This location is the point of origin for all tax calculations.
### Frequently asked questions (FAQ)
No. The connector works by mapping your Sequence tax categories to Anrok tax categories. When an invoice is calculated, Anrok uses the mapping for each line item's tax category to determine the tax.
No. With Anrok connected, rates are determined by Anrok from the customer's location and tax category. You won't be prompted to enter tax rates manually, even for a customer whose jurisdiction hasn't been seen before.
We recommend managing exemption status in Anrok: keep the customer marked as **Taxable** in Sequence and upload a tax exemption certificate for them in the Anrok dashboard. Anrok then applies the appropriate exemption when calculating their invoices. If you need to isolate a specific customer from Anrok, you can set their tax status to **Exempt** on the customer edit page in Sequence.
Anrok determines whether a line item should be reverse charged based on your customer's configuration in Sequence (their billing address and tax registration IDs). Keep these accurate on the customer's record and Anrok applies the correct treatment automatically. If you need to isolate a specific customer from Anrok, you can set their tax status to **Reverse charge** on the customer edit page in Sequence.
Yes. Add each tax registration that applies to a customer on their record. This is useful for customers registered across multiple states or countries, and Anrok applies the correct treatment per jurisdiction.
Anrok supports tax calculation across the jurisdictions covered by your Anrok configuration. Make sure both your merchant address and your customers' addresses are accurate for precise calculation.
The invoice's accounting date, which is determined by your **Invoice dates** setting, not the date the invoice was issued. This keeps the tax period in Anrok aligned with the period you record the invoice in. Credit notes use their accounting date, unless a tax date is set on them, which takes precedence.
Sequence reverses the corresponding tax in Anrok automatically, keeping your Anrok records consistent with what you've billed. Taxable credit note lines need a tax category so the correct amount is reversed.
Your account returns to manual tax management. Contact the Sequence team if you need to disconnect.
# Attio
Source: https://docs.sequencehq.com/connectors/attio
Sync deal and customer records from Attio.
When a deal progresses in Attio, sales teams can instantly create customers in Sequence using accurate company data. With a single click, teams can launch Sequence's quote builder directly from the Attio deal, maintaining context throughout the process.
## Use the Attio connector to
* Create Sequence customers instantly from Attio companies
* Launch professional quotes directly from Attio deals
* Navigate seamlessly between systems with contextual backlinks
### Push a customer into Sequence
### Create a new quote
## Configuration
1. In Attio, go to to Workspace settings > Apps and install Sequence
2. Generate a new API key in Sequence (Settings > API keys)
3. Copy the base64 encoded token to your clipboard
4. Paste the token into the connection field in Attio
## Walkthrough
Watch this 2 min walkthrough to set up your Attio connector.
# Avalara
Source: https://docs.sequencehq.com/connectors/avalara
Integrate with Avalara to automatically calculate sales tax for invoices.
Integrate with Avalara to ensure your invoices are accurate and compliant with all state and local sales tax regulations.
### Capabilities
**Automated tax calculations**: Calculate accurate sales tax for every invoice
**Up-to-date tax rates**: Automatically account for the latest tax rates and changes
**Prevent tax errors**: Avoid manual tax calculation errors and ensure compliance
**Avalara address validation**: Leverage Avalara's built-in customer address validation
To use this connector, you need to have an Avalara account. If you don't have an Avalara account yet, reach out to our team to make use of our **Sequence & Avalara discount**.
### Connector setup
Before integrating with Avalara you must ensure that your customers in Sequence have unique email addresses.
Go to Connectors, find Avalara and select "Manage integration".
Enter your Avalara Account ID and License key and connect (you can locate these under Settings > License and API keys in your Avalara account).
Once connected, select the company to use from your Avalara account.
Start by assigning Avalara tax codes to product tax categories in Sequence (go to Settings > Sales Tax). Once Avalara is connected, tax categories are managed via Avalara tax codes. You can no longer manage tax categories with custom rates.
For each tax category in use, assign a corresponding Avalara tax code.
You can search for and directly copy over Avalara tax codes from Avalara's website.
Once entered, Sequence will look up and validate the tax code.
Once assigned, the tax category is managed via an Avalara tax code.
In your product catalogue, assign product tax categories to products. In order to automatically calculate sales tax for a given product, its tax category must be mapped to an Avalara tax code.
You're now set up to automatically calculate sales tax on invoices via Avalara.
### Calculating sales tax with Avalara
Once you're connected to Avalara, Sequence will calculate sales tax for every draft invoice via Avalara. Whether and how tax is calculated depends on the following factors:
* Your merchant location in Sequence (Settings > Merchant > Address)
* Your customer's location & tax status
* Your tax configuration and tax exposure as reported to Avalara
* The Avalara tax code assigned to a sold product
Tax is automatically calculated and added to the invoice.
If you're getting started with Avalara, you can use Avalara's tax calculator from the Avalara app to run through example sales tax calculations.
For each invoice, Sequence creates a transaction in Avalara that includes a detailed breakdown of the tax calculation. If you're using Avalara to file tax, you need to commit these transactions in Avalara.
### Customer address validation via Avalara
Once you're connected to Avalara, Sequence will validate a customer's billing address via Avalara. This is required to ensure sales tax is accurately calculated based on the customer's locale. For customers located outside of the US, Avalara only checks the country.
### Troubleshooting
If a billing schedule includes products with tax categories that have not been mapped to an Avalara tax code, you will be prompted to assign a tax code.
When setting up the connector, ensure you are connecting to the right Avalara account:
* a Sequence Sandbox only connects to an Avalara Sandbox
* a Sequence Production account only connects to an Avalara Production account
Ensure that you have correctly configured your merchant address in Sequence. This address needs to match your company's address in Avalara.
For Avalara to successfully calculate tax, your Sequence account's country must match your Avalara company's country. If in doubt, reach out to our team.
### Frequently asked questions (FAQ)
No. Sequence's Avalara connector maps product tax categories to Avalara tax codes. When Sequence generates an invoice for a product, the assigned tax code is used to calculate tax via Avalara.
Yes.
Go to Transactions and find the relevant transactions to commit. Transactions created by Sequence appear as draft. To commit transactions in bulk consider exporting and importing transactions.
To test sales tax calculations, use the tax calculator tool from your Avalara account.
Enter your company address, customer address and item to sell to view an example calculation.
# Bigquery
Source: https://docs.sequencehq.com/connectors/bigquery-export
Export Sequence data into your Bigquery instance
Automatically push Sequence data into your Bigquery instance. Data is refreshed every 24h.
**Prerequisites:**
By default, BigQuery authentication uses role-based access. You will need the service account name available to grant access.
It should look like: `some-name@some-project.iam.gserviceaccount.com`.
## Setting up Bigquery for data exports
### Part 1: Create a service account
To get started, create a service account in your BigQuery project.
In the GCP console, navigate to the IAM & Admin menu, click into the Service Accounts tab, and click Create service account at the top of the menu.
In the first step, name the user and click Create and Continue.
In the second step, grant the user the role `BigQuery User`.
In the third step (Grant users access to this service account step), within the Service account users role field, enter your Service account (the service account name available to grant access. It should look like `some-name@some-project.iam.gserviceaccount.com`) and click Done.
Once successfully created, search for the created service account in the service accounts list, click the Service account name to view the details, and make a note of the email (note: this is a different email than the service's service account).
Contact the Sequence team to obtain the Sequence provider service account email. Once received, navigate to the Permissions tab of the service account you created in Step 1, and click Grant Access. Enter the Sequence provider service account email as the principal and grant it the following two roles:
* Service Account Token Creator
* Service Account User
Click Save to confirm.
### Part 2: Create a staging bucket
Log into the Google Cloud Console and navigate to Cloud Storage. Click Create to create a new bucket.
Choose a name for the bucket. Click Continue. Select a location for the staging bucket. Make a note of both the name and the location (region).
The location you choose for your staging bucket **must match the location of your destination dataset** in BigQuery. When creating your bucket, be sure to choose a region in which BigQuery is supported ([see BigQuery regions](https://cloud.google.com/bigquery/docs/locations))
If the dataset does not exist yet, the dataset will be created for you in the same region where you created your bucket. If the dataset does exist, the dataset region must match the location you choose for your bucket.
Click continue and select the following options according to your preferences. Once the options have been filled out, click Create.
On the Bucket details page that appears, click the Permissions tab, and then click Add.
In the New principles dropdown, add the Service Account created in Step 1, select the Storage Admin role, and click Save.
### Part 3: Share project details with Sequence
Log into the Google Cloud Console and select the projects list dropdown.
Make note of the BigQuery Project ID.
Securely share your Project ID, Bucket Name, Bucket Location, Destination Schema Name and Service Account name with us to complete the connection.
Once shared, we'll set up the rest to start your automated data exports.
# Export Sequence data
Source: https://docs.sequencehq.com/connectors/data-overview
Connect Sequence to your data stack
You can export all your Sequence data to a wide range of destinations, such as data warehouses and Google Sheets.
Use data exports to connect your billing and invoicing data to other internal sources, leverage your existing data tools for analysis and reports, and build custom applications.
Data exports run every 24h. Higher export frequencies can be configured upon request.
## Supported Destinations
### Data warehouses
}
/>
}
/>
}
/>
}
/>
### Databases
}
/>
}
/>
}
/>
}
/>
### File storage
}
/>
}
/>
}
/>
### G-Suite
}
/>
## Data Models
For a list of available data models, see [Data Models](/connectors/data-models).
## Getting started
Exporting data from Sequence only requires a simple one-time set up of your destination, after which the data will periodically update.
To get started with data exports to a data warehouse, database or file storage bucket, reach out to the Sequence team.
## Data freshness
By default every export automatically refreshes once a day, but higher frequencies up to once every 15 minutes are supported.
Get in touch with the Sequence team to set up a custom frequency.
# Dropbox Sign
Source: https://docs.sequencehq.com/connectors/dropbox-sign
Use the native e-signature connector for a frictionless signing experience with Sequence CPQ.
Sequence includes a native Dropbox Sign connector to add e-signatures to quotes and contracts.
With Dropbox Sign, you can now provide a frictionless signing experience directly within the Sequence platform. This connector supports the entire e-signature workflow, from adding recipients to managing signed documents. Your customers can view, sign, and track the status of their quotes, ensuring a transparent and efficient process.
Learn more about signing quotes digitally in the [e-signatures guide](/cpq/esignature).
# Equals
Source: https://docs.sequencehq.com/connectors/equals
Sync Sequence revenue and billing data with Equals and unlock advanced ARR dashboards
* Sync data effortlessly: Automatically pull ARR metrics, subscription details, and customer insights from Sequence into Equals.
* Create tailored dashboards: Build and customize dashboards to track key metrics like MRR growth, churn, and net revenue retention.
* Collaborate seamlessly: Share dashboards and collaborate on insights directly within Equals for better decision-making across teams.
* Enhance reporting: Combine Sequence data with other sources in Equals for richer, more comprehensive reporting.
Get in touch with our team to set up Equals with Sequence.
# GoCardless
Source: https://docs.sequencehq.com/connectors/gocardless
Integrate with GoCardless to collect bank payments through Sequence, manage customer mandates, and keep invoice payment status up to date.
**Use the GoCardless connector to**:
* Turn on GoCardless as a payment option on Sequence invoices and billing schedules
* Let customers pay through the customer portal using GoCardless’ hosted payment flow
* Update invoice payment status in Sequence when a payment completes
* View and manage customer mandates, including canceling them when needed
## Start guide
Follow the steps below to get started:
1. Go to **Connectors** and select **GoCardless**.
2. Click **Connect to GoCardless** and complete the GoCardless onboarding flow.
3. Once connected, enable GoCardless on one-time invoices or billing schedules to start collecting payments.
### Connect a new or existing GoCardless account
You can connect:
* **A new GoCardless account**: choose **Sign up** during onboarding.
* **An existing GoCardless account**: sign in and connect your account.
When onboarding is complete, you are redirected back to Sequence.
## Using GoCardless in Sequence
GoCardless is available in two places:
* **One-time invoices**
* **Billing schedules** (for invoices generated automatically over time)
## Collecting payments with GoCardless
Turn on **Accept payments via GoCardless** on a billing schedule or invoice, including drafts. If the customer’s country or the invoice currency is not supported, the toggle stays off and Sequence explains why.
## Country and currency requirements
Whether you can use GoCardless depends on the **customer’s country** and the **invoice currency**.
Sequence checks this in the invoice editor and billing schedule editor. If GoCardless is not available, the toggle is disabled and you see a short explanation.
### One-time invoices
On one-time invoices, GoCardless may be unavailable when:
* The **customer’s country** is not supported (for example, a customer in Japan)
* The **invoice currency** is not supported (for example, JPY for a UK customer)
After you enable GoCardless on an invoice, Sequence locks the currency so it cannot be changed to one GoCardless does not support.
### Billing schedules
On billing schedules, you can enable GoCardless once Sequence has enough information to check eligibility:
1. **Select a customer** so Sequence can check their country.
2. **Add a product** so Sequence knows which currency the schedule uses.
When you start the schedule, draft invoices inherit GoCardless as a payment method.
## Example payment flow
Customers pay through the Sequence customer portal.
When you send the invoice, your customer receives an email with a link to the customer portal.
In the portal, the customer can view the invoice, download the PDF, and click **Pay invoice**.
**Pay invoice** opens the GoCardless hosted payment flow. The customer completes the steps to authorize payment (for example, setting up a UK direct debit or a US ACH debit). They are then returned to the customer portal. Where supported, Sequence sends customer details to GoCardless to reduce manual entry. When payment completes, the invoice status updates in Sequence automatically.
## Mandates
A **mandate** is your customer’s authorization for GoCardless to collect future bank debits.
After a customer pays or completes an authorization, their GoCardless customer ID and mandates appear on the **customer** page in Sequence.
### Mandate statuses
A customer may have more than one mandate. Common statuses:
| Status | What it means |
| - | - |
| **Active** | Set up and ready for future payments. |
| **Consumed** | Used for a one-off payment, such as an instant payment in supported regions. |
| **Pending** | Still being set up, common when instant payments are not available (for example, some US ACH flows). |
In regions that support instant payments, you may see a **consumed** mandate from the first payment and a separate **active** or **pending** mandate for ongoing direct debit.
### Cancel a mandate
Select **Cancel** next to the mandate on the customer page.
## Linking Sequence customers to GoCardless
In most cases, Sequence creates a GoCardless customer when you first take a payment. You do not need to link customers manually.
If you already have customers in GoCardless, you can link them to Sequence customers so that:
* The GoCardless customer is associated with the right Sequence customer
* Existing mandates appear on the Sequence customer, so you can keep collecting without asking the customer to authorize again
## Frequently asked questions
GoCardless is only available when the customer’s country and the invoice currency are both supported. On billing schedules, you may also need to select a customer and add a product first so Sequence can check eligibility.
After you enable GoCardless, Sequence locks the currency so it cannot be changed to an unsupported currency.
Customers pay in the Sequence customer portal. **Pay invoice** opens the GoCardless hosted flow, then returns them to the portal.
Mandates are listed on the customer page with a status such as Active, Consumed, or Pending. You can cancel an active mandate from the customer page.
Yes. From the customers table, open the menu for a customer and choose **Link to GoCardless**. This associates the Sequence customer with an existing GoCardless customer and brings across existing mandates where available.
# HubSpot
Source: https://docs.sequencehq.com/connectors/hubspot
Turn HubSpot deals into billing-ready customers and quotes, automatically
## Overview
Sequence connects your HubSpot pipeline directly to billing. Companies and contacts flow into Sequence as customers, quotes get created and signed without leaving HubSpot, and every signed quote's pricing and contract value sync straight back onto the deal record.
**Use the HubSpot connector to:**
* Automatically import HubSpot companies into Sequence as customers when a deal reaches a stage you choose, or run a one-off bulk import
* Keep imported customers and their contacts in sync as company and contact records change in HubSpot
* Create a Sequence quote straight from a HubSpot deal, and reopen it from the same place every time
* Push a published quote's pricing, line items, and contract value onto the linked deal, and move the deal to your chosen stage the moment the quote is signed
## Getting started
Connect your HubSpot account from the Connectors tab in Sequence.
Go to **Connectors > HubSpot** and click connect.
Select the HubSpot account you want to connect. If you're setting this up in the Sequence sandbox, connect a HubSpot sandbox account.
Confirm the connection in HubSpot. You'll need to be a HubSpot Super Admin to authorize it.
## HubSpot settings
Once connected, configure the integration from **Connectors > HubSpot**. Settings apply immediately to future syncs.
* **Customer import stages**: the HubSpot pipeline stages that trigger a customer import. Defaults to Closed Won. Choose any stage across any pipeline, and select more than one if several stages should each trigger an import.
* **Sync quote value to deal amount**: syncs a quote's total contract value to the deal amount in HubSpot. On by default; turn it off if you don't want Sequence writing to the deal amount field.
* **Signed quote stage**: the deal stage Sequence moves a linked deal to once its quote is signed. Defaults to Closed Won.
* **Sync quote PDF on signing**: attaches the signed quote PDF to the linked deal as a note when a quote is signed.
## Syncing customers
### Automatic import from deal stages
Sequence imports a customer whenever a deal reaches one of your configured **Customer import stages**. This happens when:
* a deal moves into a configured stage
* a deal is created directly in a configured stage
* a deal already in a configured stage gains a company association
Each company on the deal is imported as its own Sequence customer, along with its contacts. A deal associated with more than one company imports each company separately, rather than skipping any of them. Companies already linked to a Sequence customer are skipped, so an import never creates duplicates, and deals with no associated company are skipped until one is added.
To import successfully, a company needs a name and a primary or billing address with:
* Street address
* Town or city
* Postal or zip code
* A recognized country, for example `GB` or `United Kingdom` (a country's ISO alpha-2 or alpha-3 code, or its full English name)
* A US state, if the country is the United States
For contacts, the first company or deal contact with a usable email address becomes the customer's primary contact; duplicates and malformed emails are filtered out. If no contact has a usable email, Sequence still imports the customer with a placeholder contact so the import isn't blocked.
If a company can't be imported, for example because its address is missing a field, Sequence raises a [Watchtower](/agents/watchtower) task naming the company and the problem. Fix the record in HubSpot and the import re-runs automatically; you don't need to trigger it again by hand.
### Bulk customer import
Run a one-off import from the customer import tool on the **Customers** page. Sequence lists every HubSpot company on a deal in one of your configured import stages, and hides companies already linked to a Sequence customer.
Search by name, or use **Filters** to narrow the list further. Every eligible company is pre-selected; clear the selection or filter first if you only want to import a subset. Each row shows the company's name, country, and its contacts' emails, so you can tell them apart before importing.
Import runs in the background. Submit it and Sequence reports progress in the modal as it works through the list.
### Ongoing sync
Once a customer is imported, Sequence keeps it up to date automatically. This sync runs one way, from HubSpot to Sequence:
* **Company changes**: when a linked company's details change in HubSpot, Sequence updates the customer's name and billing address to match.
* **Contact changes**: when a HubSpot contact updates, Sequence updates the matching contact on the customer. If a contact is removed from the company or deleted, Sequence archives it on the customer, and restores it if it's added back.
Creating a company in HubSpot doesn't create a customer in Sequence; customer creation is always a deliberate import, automatic or manual. Likewise, deleting a company in HubSpot doesn't delete or archive the linked customer in Sequence.
### Manually linking a customer
Link a customer to a HubSpot company directly:
* **From the customer**: on the **Customers** list, open a row's menu and choose **Link to HubSpot**, then pick the HubSpot company from the dropdown.
* **From a quote**: open the quote, expand the **HubSpot** item in the inspector, and link the quote's customer to a HubSpot company without leaving the editor.
## Quotes and deals
### Creating a quote from a HubSpot deal
Add the **Sequence Quote** card to your HubSpot deal record to create and open quotes without leaving HubSpot. The card deep-links into Sequence: the first click creates a quote for that deal, and every click after reopens the same one.
In HubSpot, go to a deal record and select **Customize record**. Under **Connected apps**, add the Sequence app card and save the layout. This is a one-off setup step for each pipeline view, and only a HubSpot Super Admin can do it.
The **Sequence Quote** card appears on the deal record, naming the linked quote and its current status. Click through to create the deal's quote in Sequence, or reopen it if one already exists.
### Linking a quote to a deal
A quote syncs to a deal once the two are linked. Linking happens automatically when a quote is created from a deal's Sequence Quote card, or you can link one manually:
1. Open the quote and expand the **HubSpot** item in the inspector.
2. Choose **Link deal** and pick a deal from the list. The list is scoped to the deals on the quote's linked company, filtered to the pipeline stages in your HubSpot settings, and ordered most recently changed first.
3. Confirm the link.
A quote can be linked to at most one deal, and a deal to at most one quote. If you try to link a deal that already has a quote, Sequence tells you which quote is already linked rather than replacing it silently.
Unlink a quote from its deal from the same inspector item, or by clearing the quote reference on the deal in HubSpot. Archiving a quote also frees its linked deal, so a new quote can be linked in its place.
### Syncing quotes to the deal
Publishing a quote writes its details to the linked deal:
**What syncs:**
* Quote title, number, status, and currency
* Contract start, end, and expiry dates
* A link back to the quote in Sequence
* The quote's total contract value, always written to a Sequence-owned property, and also to HubSpot's native deal amount if **Sync quote value to deal amount** is on
* The quote's pricing, written as line items on the deal, so HubSpot's own contract value, ARR, and MRR figures on the deal line up with the quote
Each phase of the quote becomes one or more deal line items:
* One-time and fixed prices are written at their price, at a quantity of 1.
* Seat prices are written as the price per seat, multiplied by the included seats.
* Usage prices with no minimum are written as a \$0 informational line, so the rate is visible without adding to the deal's value. Usage prices covered by a minimum instead write the minimum as a committed line.
* Discounts land on committed lines as a percentage or a per-unit amount, apportioned by line value if the discount applies across several lines.
Line items your sales team added to the deal by hand are left alone; Sequence only ever touches the line items it created itself. Publishing a quote again replaces its own line items with the latest version. Archiving a quote clears them too, unless the quote's already been signed, in which case they stay on the deal as a record of what the customer agreed to.
Quote sync needs the quote's customer linked to a HubSpot company, and the quote linked to a deal on that company. See [Linking a quote to a deal](#linking-a-quote-to-a-deal) above.
### Signing a quote
When a quote is signed, Sequence moves its linked deal to your **Signed quote stage**, and, if **Sync quote PDF on signing** is enabled, attaches the signed PDF to the deal as a note.
If the deal's already on the signed stage, Sequence leaves it as is, so it doesn't retrigger any stage-change automations you have set up in HubSpot.
## Deal properties in HubSpot
Connecting HubSpot provisions a set of custom properties on your HubSpot deals and line items, so quote data is available anywhere your sales team already works with deals: reports, views, and workflows.
**On the deal**, grouped under **Sequence Quote Information**:
| Property | Label | Type |
| - | - | - |
| `sequence_quote_title` | Sequence Quote Title | Text |
| `sequence_quote_number` | Sequence Quote Number | Text |
| `sequence_quote_status` | Sequence Quote Status | Enumeration |
| `sequence_quote_type` | Sequence Quote Type | Enumeration |
| `sequence_quote_currency` | Sequence Quote Currency | Text |
| `sequence_quote_link` | Sequence Quote Link | Text |
| `sequence_customer_link` | Sequence Customer Link | Text |
| `sequence_contract_start_date` | Sequence Contract Start Date | Date |
| `sequence_contract_end_date` | Sequence Contract End Date | Date |
| `sequence_quote_expiry_date` | Sequence Quote Expiry Date | Date |
| `sequence_quote_tcv` | Sequence Total Contract Value | Number |
**On line items**, grouped under **Sequence Line Item Information**:
| Property | Label | Type |
| - | - | - |
| `sequence_quote_id` | Sequence Quote ID | Text |
| `sequence_entity_id` | Sequence Entity ID | Text |
HubSpot fixes a property's internal name when it's created, so these can't be renamed. If you have reports or workflows built against differently named properties from an earlier setup, point them at the `sequence_` properties instead.
## Custom pipelines
Choose any HubSpot pipeline stage as your customer import stage or signed quote stage from the HubSpot settings card. This works the same way whether you're using a standard pipeline or one you've customized.
### Frequently asked questions (FAQ)
No. Customers and contacts flow one way, from HubSpot into Sequence: HubSpot is the source of record for both, and changes made in Sequence don't sync back. Quotes flow the other way, from Sequence into HubSpot, with one exception: creating a quote directly from a HubSpot deal.
The deletion fails to sync. Every customer needs at least one primary contact, so Sequence raises a Watchtower task instead of archiving the contact. Add a replacement contact in HubSpot first.
HubSpot's own custom rules can block a stage move. For example, if your closed-won stage requires a Close date to be set first, Sequence's automatic move fails until that requirement is met. Sequence raises a Watchtower task naming the reason.
Yes, on HubSpot's free plan: 20MB per file. If a signed quote's PDF is larger, the attachment fails and Sequence raises a Watchtower task. Paid HubSpot plans don't have this limit, which covers the large majority of accounts.
A few minutes, depending on PDF generation and upload time. It's not instant like most other syncs, so give it a short while before checking Watchtower for a failure.
## Revoking access
Disconnect from either side.
**From Sequence:** open the HubSpot connector settings and disconnect. Type `UNINSTALL` to confirm. This stops all future sync, and disconnects your current records from HubSpot. Turn on **Also remove all links between Sequence and HubSpot** to clear the existing customer and deal links as well, rather than just stopping future sync.
**From HubSpot:** go to **Connected Apps**, find **Sequence** under **My Apps**, and choose **Uninstall** from its actions menu.
# Linking customers
Source: https://docs.sequencehq.com/connectors/linking-customers
Link Sequence customers to your CRM, ERP and Payment providers
You can manually link a customer to external connector to keep records connected. From the customers overview, use the kebab menu and select the connector to link the customer to.
# NetSuite
Source: https://docs.sequencehq.com/connectors/netsuite
Sync Sequence customers, products, invoices, and credit notes to NetSuite in real time.
NetSuite stays your ledger of record while Sequence handles the billing. Customers, products, invoices, and credit notes sync across automatically, and billing schedules sync too, as NetSuite sales orders, so revenue arrangements can build directly off Sequence's data.
## Overview
**Use the NetSuite connector to:**
* Push Sequence customers into NetSuite as Customer records
* Push Sequence products into NetSuite as Service Items, ready to appear on invoice line items
* Push Sequence invoices into NetSuite as Invoices, either standalone or drawn down from a NetSuite Sales Order
* Push Sequence credit notes into NetSuite as standalone Credit Memos
* Surface payments recorded in NetSuite against the corresponding Sequence invoice in real time
* Link Sequence customers and products to existing NetSuite records from the dashboard
Whether your team books revenue from Sequence's own journal entries or from NetSuite's Advanced Revenue Management running on the synced sales orders, the connector supports it, and any recognition method, straight-line, point-in-time, usage-based, or deferred, works either way. Sequence connects to NetSuite through a secure, certificate-based connection you set up once in Settings.
## What syncs today
| Entity | Direction | What happens |
| - | - | - |
| Customers | Sequence → NetSuite | Pushed as NetSuite Customer records |
| Products | Sequence → NetSuite | Pushed as NetSuite Service Items |
| Billing schedules | Sequence → NetSuite | Phases with a fixed, determinable obligation sync as Sales Orders |
| Invoices | Sequence → NetSuite | Standalone, or drawn down from a Sales Order |
| Credit notes | Sequence → NetSuite | Pushed as standalone Credit Memos |
| Invoice payments | NetSuite → Sequence | Payments recorded against a linked invoice appear on the Sequence invoice in real time |
Customer, product, invoice, credit note, and billing schedule sync is one-directional. Sequence is the system of record; NetSuite receives a copy so accounting transactions can reference it. If a finance user edits a linked record directly in NetSuite, that change can be overwritten the next time Sequence pushes an update.
## Getting connected
Find NetSuite under **Connectors** in the dashboard to get started. Set up the connector by first creating an Integration record in NetSuite, then entering the resulting details into Sequence.
In NetSuite, create an Integration record for a secure, certificate-based connection, with machine-to-machine access enabled. NetSuite issues a Consumer key for the record, which you'll need for the next step.
Generate a private key and matching public certificate, then upload the certificate to the Integration record in NetSuite. NetSuite assigns it a Certificate ID. Keep the private key private. You'll enter it directly into Sequence next, and it never needs to be shared with anyone else.
Open **Settings > Connectors > NetSuite** and enter the details below.
| Field | What to enter |
| - | - |
| NetSuite account ID | Your NetSuite account ID, including the suffix for a sandbox account. |
| Subsidiary ID | The NetSuite subsidiary whose books Sequence should post against. |
| Consumer key | The Consumer key from the NetSuite Integration record. |
| Certificate ID | The Certificate ID NetSuite assigned to the uploaded certificate. |
| Private key | The private key matching the uploaded certificate. Write-only. Sequence stores it encrypted and never returns it. |
| Default item income account ID | The income account new NetSuite Service Items default to. NetSuite requires this on every Service Item. |
| Default tax schedule ID | The tax schedule new NetSuite Service Items default to. NetSuite requires this on create. |
Click **Test configuration**. Sequence checks the credentials work before letting you save. A successful test unlocks the **Save** action. If the test fails, Sequence tells you the configuration is invalid. Check each field and try again.
You can edit the configuration at any time. Any edit requires re-running **Test configuration** before saving, so a bad change can't overwrite a working setup.
### Multi-entity: subsidiaries and workspaces
If your business runs multiple legal entities in NetSuite, for example a US Inc., a UK Limited, and an LLC, each with its own subsidiary, connect them one at a time. Each Sequence workspace holds its own NetSuite connector configuration and posts against exactly one subsidiary.
This lets each entity keep its own approval workflows and business logic in Sequence, while every subsidiary still posts into the same NetSuite account. Your finance team gets clean, consolidated reporting across the whole group, without reconciling entities by hand.
See [Multi-entity support](/billing/multi-entity-support) for how Sequence scopes customers, quotes, billing schedules, and connectors to each entity.
## Customer sync
When you create or edit a customer in Sequence, Sequence pushes the update to NetSuite automatically, keeping the linked record in step as the customer changes.
### Linking customers
From a customer's row menu in the customers table, or from the customer inspector, choose **Link to NetSuite**.
From the dialog that opens, either select an existing NetSuite customer to link to, or create a new customer in NetSuite directly.
Once linked, the **Links** column on the customers table, and the customer inspector on invoices, credit notes, and customer pages, shows the NetSuite icon and a link straight to the NetSuite customer record.
Sequence pushes across the customer's legal name, billing address, primary billing contact, and tax status, keeping the NetSuite record aligned as any of these change in Sequence. Sequence holds a single address per customer, so it's set as both the default billing and shipping address in NetSuite. Archiving a customer in Sequence marks the matching NetSuite record inactive, since NetSuite doesn't allow deleting a customer that has posted transactions.
### Auto-push when invoicing an unlinked customer
If the account has the **customer push** sync toggle enabled and an invoice's customer is not yet linked to a NetSuite customer record, Sequence pushes the customer to NetSuite first, then pushes the invoice, instead of rejecting the sync. This avoids invoice syncs failing on an unsynced customer.
With the toggle off, the default applies: invoice sync is rejected until the customer is linked in NetSuite by hand (see [Prerequisites](#prerequisites)). An existing customer link, including one that is still pending, is left alone either way.
## Product sync
Sequence pushes active products to NetSuite as Service Items, creating them on first sync and keeping them updated after.
Draft products are skipped. They have not been released for billing and should not appear in NetSuite's item catalog.
### Linking products
Open a product to see its NetSuite panel in the sidebar. An unlinked product shows **Link service item**; select it to open the link dialog, where you can either select an existing NetSuite service item to link to, or create a new service item in NetSuite directly.
Once linked, the panel shows the linked Service item and Income account, with a **View in NetSuite** shortcut.
Invoice sync depends on this link: an invoice line for a Sequence product with no NetSuite item link retries until the item exists in NetSuite. Sequence keeps the Service Item's name in step as the product name changes in Sequence, and marks it inactive in NetSuite if the product is archived, so it drops out of new transactions without disappearing from NetSuite's history.
Service Item is the correct NetSuite item type for SaaS and other recurring services: it supports NetSuite's Advanced Revenue Management module and does not carry inventory tracking fields.
## Prepaid credit item
If your account uses [prepaid credits](/credits/overview), configure a **Prepaid credit item** on the NetSuite connector. This is the NetSuite item that Sequence posts prepaid-credit burndown lines to, so that invoices and credit notes that consume prepaid credit still balance correctly in NetSuite.
Set it alongside your other NetSuite connector settings by entering the NetSuite item you want these lines posted to.
The setting is optional. Leave it unset if the account does not use prepaid credits.
### Invoices that consume prepaid credit
When a Sequence invoice consumes prepaid credit, that credit arrives on the invoice as a negative burndown line. When the invoice syncs to NetSuite, Sequence posts that line against the configured prepaid credit item with the same negative amount, so the NetSuite invoice nets to what is actually due.
## Sales Order sync
When you create or amend a billing schedule in Sequence, Sequence looks at each phase and creates a NetSuite **Sales Order** for the phases that carry a fixed, determinable obligation. The Sales Order represents the customer's committed forward obligation in NetSuite; each invoice for that phase then draws its lines down from the Sales Order instead of billing standalone.
This is what lets NetSuite's Advanced Revenue Management build revenue arrangements straight off Sequence's data, using whatever recognition method your team runs: straight-line over the contract term, point-in-time, usage-based, or deferred revenue schedules all work the same way. You're not required to use ARM at all; accounts that recognize revenue from Sequence's own journals get the same Sales Orders and invoices without any extra setup.
A Sales Order line is created for:
* A **committed seat minimum** on a finite-term phase, when the commitment is initial or an increase over the previous phase.
* A **ratable fixed fee** on a finite-term phase.
* A **one-time fee**: a prepaid credit or an implementation fee.
No Sales Order line is created for:
* **Usage prices** (linear, volume, graduated, package): their per-period amount is usage-driven and can't be known in advance, so they bill entirely at invoice time.
* **Evergreen (open-ended) phases**: there is no finite term to book against.
* **Seat phases with no committed minimum**: seats bill as used.
When you amend a schedule and a phase terminates early, Sequence reconciles the Sales Order to match the shortened term.
### View sales orders on a billing schedule
The [billing schedule](/billing/create-billing-schedules) home page and the schedule editor include a NetSuite panel in the sidebar. The panel shows one card per sales order, listing:
* The term the sales order covers, with its date range and length.
* The NetSuite sales order the phases in that term synced to.
* A **View in NetSuite** button that opens the sales order record in NetSuite.
A phase that does not produce a sales order shows **No sales order linked**.
If an active billing schedule has not yet been synced, the NetSuite panel shows a **Sync billing schedule** button. Click it to push the schedule's phases to NetSuite as sales orders. The button is available when the schedule is active and its customer is linked to a NetSuite customer. Draft schedules cannot be synced; the panel shows that the schedule will be synced once it becomes active.
### Rolling up phases into one sales order with contract tags
By default, each phase syncs to its own sales order. To represent a multi-phase contract as a single sales order for its total contract value, tag the phases with a shared contract reference. Sequence calls this a **contract tag**.
**Setting a contract tag:**
1. Open the billing schedule in edit mode.
2. On the phase you want to tag, open the kebab menu in the phase header and select **Add contract tag**.
3. Enter the reference and select **Save**.
4. The tag renders as a badge next to the kebab in the phase header. Use **Edit contract tag** or **Delete contract tag** from the same menu to change or remove the value later.
You can also set the tag through the API, if you manage billing schedules programmatically.
Phases that share a contract reference roll up into one sales order:
* The sales order spans the full contract term, from the earliest phase start date to the latest phase end date.
* The sales order carries one line per phase price. Each line's quantity and amount come from its own phase, and revenue for every line is recognized across the whole contract term.
* When a Sequence invoice syncs, each invoice line bills against the sales order line for the phase and price it was generated from. An invoice line with no matching sales order line bills as an independent line.
Phases without a contract tag keep the default behavior of one sales order per phase.
Contract tags match case-sensitively with whitespace trimmed. Clearing one returns the phase to its own sales order. They only work on schedules with an active NetSuite integration, not in the quote editor or quote templates, so tag a schedule created from a quote after it exists.
For example, a two-phase ramp with a "Year 1" phase and a "Year 2" phase tagged with the same contract reference syncs to a single NetSuite sales order spanning the full two years, with one line per phase price, each recognized over the full term.
Once tagged, the reference is also exported alongside invoices generated from the phase, so finance teams can group invoices by contract in NetSuite even when phases don't roll up into a single sales order.
## Invoice sync
When an invoice is finalized in Sequence, Sequence pushes it to NetSuite as an Invoice record. If the invoice's phase produced a Sales Order, the NetSuite invoice draws its lines down from that Sales Order, pulling the rate and amount from the matching line. Otherwise, it posts as a standalone invoice. An amendment-boundary invoice can span two phases, so different lines on the same invoice may draw down from different Sales Orders; a line with no Sales Order still bills as an independent line on the same invoice.
If the same invoice is sent to NetSuite twice, and NetSuite already has an invoice under that number, Sequence links up with the existing NetSuite invoice rather than failing or creating a duplicate.
### Prerequisites
Before an invoice can post, the linked customer and every line item's product must already exist in NetSuite. If a prerequisite link is still in flight, invoice sync retries. If a prerequisite is missing entirely (for example, the product isn't linked to a NetSuite item), the invoice is rejected until the link is created, unless [auto-push](#auto-push-when-invoicing-an-unlinked-customer) is enabled for the customer case.
### Payments from NetSuite
Sequence listens for payments recorded in NetSuite in real time. When a linked invoice is marked paid in NetSuite, it shows up on the Sequence invoice's payments list with a NetSuite badge and origin label within moments, so finance teams reconciling in NetSuite still see the payment in Sequence without a manual update.
### Linking invoices
The NetSuite panel on the invoice shows the linked customer and the invoice's sync status. A draft invoice shows that it will sync once finalized; once synced, the panel links straight through to the NetSuite invoice record.
## Credit note sync
When a credit note is finalized in Sequence, Sequence pushes it to NetSuite as a **standalone Credit Memo**. The credit memo is deliberately not applied to the original NetSuite invoice. The original invoice may already be paid, so applying a credit memo to it is incorrect. Where the customer needs to be made whole, issue a refund in NetSuite as a separate step.
If the same credit note is sent to NetSuite twice, and NetSuite already has a document under that number, Sequence links up with the existing memo rather than failing.
Only finalized credit notes sync. A credit note without a number (still in draft) is skipped and syncs automatically once finalized.
The NetSuite panel on the credit note shows the linked customer and the credit note's sync status. A draft credit note shows that it will sync once issued; once synced, the panel links straight through to the NetSuite credit memo record.
## Revenue recognition journals
If you also use Sequence for revenue recognition, journal reports export in a CSV laid out for NetSuite's journal entry import, so recognition entries load into NetSuite without further transformation. See [Journal reports](/revenue-recognition/journal-report#export-formats) for the full set of export formats.
## Errors and retries
Every push runs through a retry filter, so transient errors, like a network blip or a temporary rate limit, are retried automatically with a growing delay between attempts.
Two classes of failure surface differently:
* **Authorization failures.** If NetSuite rejects the connector's credentials (for example, the Integration record was disabled or the certificate expired), Sequence marks the connector as failed, disables further pushes, and flags the connector as needing re-authorization. Re-open **Settings > Connectors > NetSuite**, update the affected fields, and run **Test configuration** again to resume syncing.
* **Validation failures.** If NetSuite rejects a specific record (for example, a missing default income account, a customer with no primary billing contact, an invoice line for a product that isn't linked to a NetSuite item, or an invalid country), the failure is recorded against that record. Fix the underlying data in Sequence and re-save the record to retry the push.
### Frequently asked questions (FAQ)
No. Sales Orders sync regardless, so accounts running ARM can build revenue arrangements off them, and accounts recognizing revenue from Sequence's own journals get the same Sales Orders and invoices without any extra setup.
Each Sequence workspace connects to exactly one subsidiary. If you run multiple entities, connect each one from its own Sequence workspace, so each keeps its own approval workflows while still posting into the right subsidiary's books.
Sequence is the system of record for customers, products, invoices, credit notes, and billing schedules. A direct edit in NetSuite can be overwritten the next time Sequence pushes an update to that record.
No. Sequence posts it as a standalone credit memo, since the original invoice may already be paid. If the customer needs to be made whole, issue a refund in NetSuite as a separate step.
Sequence marks the connector as failed and pauses further pushes rather than retrying against invalid credentials. Re-open the connector settings, update the affected fields, and run Test configuration again to resume syncing.
## Related
* [Accounting connectors overview](/connectors/accounting-overview)
* [Journal reports: NetSuite export](/revenue-recognition/journal-report)
* [Prepaid credits](/credits/overview)
# Numeral
Source: https://docs.sequencehq.com/connectors/numeral
Integrate with Numeral to automatically calculate sales tax for invoices.
Connect Numeral to your Sequence account and automate sales tax calculations, ensuring compliance with tax regulations across all jurisdictions where you do business.
### Capabilities
**Automated tax calculations**: Calculate precise tax rates based on customer addresses and product categories
**Tax return filing**: Automatically handle tax return filing after sales clear through the platform
**Product management**: Manage product tax categories and handle refunds seamlessly
**Exempt customer handling**: Efficiently manage tax-exempt customers across multiple jurisdictions
### Connector setup
Before integrating with Numeral you must ensure that your customers in Sequence have unique email addresses.
Navigate to "Browse integrations", locate Numeral in the Tax section, and click "Manage integration".
Paste your Numeral API key into the field provided and click "Test credentials" to verify the connection. Once validated, click "Save changes" to activate the connector. Your API key can be found in the Developers tab of your Numeral dashboard.
Navigate to Settings > Sales Tax to view your existing Sequence tax categories. With Numeral connected, these categories will now be managed through Numeral product categories rather than custom rates.
Click the "+ Add Numeral mapping" button for each active tax category to map it to the appropriate Numeral product category.
Navigate to your Products catalog and assign tax categories to each product. For automatic tax calculation to work on a product, its tax category must have a corresponding Numeral product category mapping.
Your Numeral connector is now active and ready to calculate sales tax automatically.
### Calculating sales tax with Numeral
With Numeral connected, sales tax will be calculated automatically for all draft invoices. The tax amount is determined by several key factors:
* The origin address configured in Settings > Merchant > Address
* Your customer's billing location and their tax exemption status
* Which Numeral product category is mapped to each line item's tax category
Sales tax is computed automatically and appears as a line item on your invoices, based on the Numeral product categories you've configured.
Tax calculations appear clearly on the PDF invoices your customers receive.
### Troubleshooting
Verify that your API key follows the correct format. Test environment keys begin with `sk_test_` while production keys start with `sk_prod_`. Retrieve your API key from the Developers tab in your Numeral dashboard.
Double-check your merchant address configuration at Settings > Merchant > Address. This location serves as the point of origin for all tax calculations.
If product categories fail to load when adding mappings, check the following:
* Confirm your API key is saved correctly
* Verify you have an active Numeral subscription
* Check your network connectivity
Still having issues? Try disconnecting and reconnecting the connector, or contact our support team for assistance.
### Frequently asked questions (FAQ)
Not at all. The connector works by mapping your Sequence tax categories to Numeral product categories. When an invoice is generated, Numeral uses the product category associated with each line item's tax category to calculate the appropriate tax.
Numeral provides comprehensive coverage across many product types:
* **SaaS & Digital**: SAAS\_GENERAL, SOFTWARE\_DOWNLOAD, DIGITAL\_AUDIO\_STREAMED, DIGITAL\_VIDEO\_STREAMED
* **Clothing**: CLOTHING\_GENERAL, CLOTHING\_ATHLETIC, CLOTHING\_JEWELRY
* **Food & Beverage**: FOOD\_GENERAL, BEVERAGE\_SOFT\_DRINK, BEER
* **Books & Media**: BOOKS, MAGAZINE, NEWSPAPER
* **General**: GENERAL\_MERCHANDISE, EXEMPT, SHIPPING
The full catalog of available categories appears when you create a new mapping in Settings > Sales Tax.
Simply set a customer's tax status to "Exempt" in their customer profile. Numeral will then apply the appropriate tax exemptions when calculating their invoices, based on their status and geographic location.
Absolutely. Numeral handles tax calculations across many different jurisdictions worldwide. Just make sure both your merchant address and customer addresses are accurately entered for precise tax computation.
Disconnecting Numeral returns your account to manual tax management mode with custom tax rates. Your existing tax category mappings remain intact, but automatic tax calculation via Numeral will stop.
Connect a Numeral test API key (beginning with `sk_test_`) to your Sequence Sandbox. Then create sample invoices using various product categories and customer addresses to confirm calculations are working correctly.
# Integrate with your stack
Source: https://docs.sequencehq.com/connectors/overview
Sequence provides native connectors with your existing stack
Sequence provides native connectors to connect with your stack, including CRMs, ERP & Accounting suites, data warehouses and databases, payment gateways
and e-signature providers.
Use Sequence webhooks and APIs to create custom connectors with any service.
Interested in other connectors? We’d love to [hear from you](mailto:hello@sequencehq.com).
# QuickBooks Online
Source: https://docs.sequencehq.com/connectors/quickbooks
Sync Sequence invoices in real-time and streamline your accounting process.
**Use the QuickBooks Online connector to**:
* Keep customers in sync across Sequence and QuickBooks
* Sync invoices into QuickBooks in real-time
* Automatically update the payment status of invoices reconciled in QuickBooks
* Map QuickBooks items, accounts and tax codes to Sequence for accurate categorization
## Getting started
Go to connectors and connect to QuickBooks.
Authorize the connection.
You'll need a QuickBooks sandbox company to connect to your Sequence sandbox account.
Once connected, complete the connector by setting a default account code and tax code preferences to ensure error-free invoice syncing.
Select a **default account code** to ensure unmapped products or line items have a QuickBooks account code to fall back to when an invoice is synced.
Map product tax categories to QuickBooks **tax codes** to ensure line items of synced invoices are accurately mapped. You can map QuickBooks tax codes based on the customer's tax status. For taxed customers, a more granular tax code mapping via product tax categories applies, supporting different tax codes for line items on a single invoice where required.
When a Sequence-issued invoice is synced as a sent invoice, QuickBooks sends a second email to your customer. To prevent your customers from receiving an additional invoice email, Sequence updates the invoice in QuickBooks with your merchant email address.
## Linking customers to QuickBooks
To sync invoices to QuickBooks, your customers need to be linked. You can link Sequence customers to existing customers in QuickBooks or create a new customer in QuickBooks directly from Sequence. If multi-currency is enabled in your QuickBooks account, select a currency to assign to the customer.
QuickBooks will reject invoices in currencies other than the customer's set currency.
You can import customers from QuickBooks into Sequence to speed up your onboarding.
To import customers, a primary address and email is required. The primary address must contain first line, city, postal/zip code and country code in [alpha-2 format](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
To quickly update your customer records in QuickBooks for an import into Sequence, use QuickBooks CSV export and import tool.
## Syncing invoices & credit notes
When an invoice or credit note is finalized or sent, it is automatically synced to QuickBooks.
To sync an invoice with QuickBooks, finalize or send it.
To sync a credit note with QuickBooks, finalize or send it.
When sending an invoice, it is synced into QuickBooks and marked as sent. QuickBooks automatically sends an email to your merchant email address containing the invoice PDF when this happens.
If an invoice failed to sync or if the customer was not yet linked to QuickBooks, you can manually re-sync the invoice from the dashboard.
## Reconciling invoices
When an invoice is marked as paid in QuickBooks, Sequence will update the payment status and mark the invoice as paid.
For invoices with a Stripe payment link, Sequence will sync the payment status from Stripe and ignore the payment status in QuickBooks. You need to reconcile your invoice in QuickBooks separately in this case. If a customer doesn't use the Stripe payment link on your invoice, you need to manually mark the invoice as paid in Sequence.
## Linking products to QuickBooks items
To ensure invoice line items in QuickBooks are correctly categorized, map Sequence products to items and account codes. You can map products from the product catalog in Sequence. Linking a product will create a new item in QuickBooks, using the name of the product and the selected account code. This ensures synced invoice line items are accurately categorized.
Item names in QuickBooks must be unique.
## Account codes
In QuickBooks Online, line item amounts can be booked under different accounts via the item the line item they are mapped to. For example, for a `Platform product` item with the account code `Standard Product Sales`, all line items for this item will be booked under the set account.
When you map a product from Sequence to a QuickBooks item, you can set the account code to assign to the item to ensure all line items are correctly categorized.
## Currency conversion
If you are using multi-currency in your QuickBooks account, Sequence will automatically convert invoices into your home currency using the latest FX rate provided by QuickBooks. For example, if your home currency is GBP, invoices to EUR customers will include currency conversion for EUR:GBP.
Ensure that invoices or credit notes issued from Sequence match the QuickBooks customer's currency to prevent sync errors.
## Tax codes
When pushing an invoice or credit note to QuickBooks, Sequence will assign QuickBooks tax codes to invoice line items.
* For taxed customers, the tax codes of the tax categories assigned to the invoice line items apply. The fall back tax code applies for unmapped line items or products.
* For tax exempt and reverse charged customers, the tax codes configured in connector settings apply.
* If none of the above are set, the default tax code of your QuickBooks account is applied. Failing that, the default tax code of customer in QuickBooks is applied.
For a US QuickBooks account, the following tax codes applies:
* If customer is taxed, `TAX` is applied as the tax code
* If customer tax exempt or reverse charged, `NON` is applied as the tax code
## Invoice fields
| QuickBooks Online | Sequence |
| - | - |
| Customer | Linked customer |
| Customer email | Primary billing contact email |
| Billing address | Customer address |
| Invoice date | Invoice date (depending on accounting date preference) |
| Due date | Due date |
| Invoice number | Invoice number |
| Message on invoice | Memo |
| Line item: Product/Service | Sequence product (depending on item mapping) |
| Line item: Description | \[Line item group name]: \[Line item name] |
| Line item: VAT / Tax | QuickBooks tax code (depending on mapping) |
| Line item: Quantity | Line item qty |
| Line item: Rate | Line item rate |
# Rillet
Source: https://docs.sequencehq.com/connectors/rillet
Sync Sequence invoices in real-time and streamline your accounting process.
**Use the Rillet connector to**:
* Keep customers in sync across Sequence and Rillet
* Sync invoices in real-time
* Automatically sync payment statuses from Rillet to Sequence
## Getting started
In your Rillet account, go to **Settings → API Keys** and generate a new API key for Sequence. Copy the key—you'll need it when connecting in Sequence.
Go to the Connectors tab in Sequence, select Rillet, and paste your API key to connect.
Create a webhook in Rillet so Sequence can receive invoice and payment updates:
1. Create a new webhook with **Events**: `invoice.updated`, `invoice.deleted`, and `payment.updated`
2. Set **Webhook URL**, replacing `{sequenceAccountId}` with your Sequence account ID:
* Production: `https://eu.sequencehq.com/webhooks-api/rillet/webhooks/{sequenceAccountId}`
* Sandbox: `https://sandbox.sequencehq.com/webhooks-api/rillet/webhooks/{sequenceAccountId}`
Your Sequence account ID can be provided by your Sequence contact during onboarding.
3. After creating the webhook, Rillet generates a **webhook secret** (signing token). Copy this value.
4. In Sequence, go to **Connectors → Rillet** and paste the webhook secret into the **Webhook secret** field. Click **Save**.
In your Rillet account, add the **sequencehq** type code for external references. This allows Rillet to correctly link and sync records between the two systems.
Once connected, configure your connector settings in Sequence:
* **Tax settings**: Configure tax codes for different customer tax statuses
The first time an invoice syncs, Sequence creates a product in Rillet called **Sequence Default Product**. Any line item whose product isn't linked to Rillet is posted against it.
## Linking customers to Rillet
To sync invoices to Rillet, your customers need to be linked. You can link Sequence customers to existing customers in Rillet or create a new customer in Rillet directly from Sequence.
Navigate to a customer in Sequence and click "Link to Rillet" to search and select the matching Rillet customer.
If the customer doesn't exist in Rillet, click "Create new customer in Rillet" to automatically create them using the information in Sequence.
When customers are linked, a Rillet logo appears next to the customer record in Sequence for easy identification.
## Syncing invoices
When an invoice is finalized or sent, it is automatically synced to Rillet.
To sync an invoice with Rillet, finalize or send it.
If an invoice failed to sync or if the customer was not yet linked to Rillet, you can manually re-sync the invoice from the dashboard.
## Reconciling invoices
When a payment is recorded in Rillet (e.g., wire transfer, bank payment), Rillet triggers a webhook notification and Sequence automatically marks the corresponding invoice as paid.
For invoices with a Stripe payment link, Sequence will sync the payment status from Stripe and ignore the payment status in Rillet. You need to reconcile your invoice in Rillet separately in this case.
## Linking products to Rillet
To ensure invoice line items in Rillet are correctly categorized, map Sequence products to Rillet products. You can map products from the Product Catalog in Sequence.
Select a product and click "Link to Rillet" to map it to an existing Rillet product.
You can also create a new product in Rillet directly from Sequence with the appropriate account codes and settings.
When syncing invoices, mapped products use the mapped Rillet product. Line items for unmapped products are posted against **Sequence Default Product**, a product Sequence automatically creates in Rillet the first time an invoice syncs. All Sequence products are mapped as fixed products in Rillet.
## Tax codes
Rillet supports flexible tax configuration at both the customer and product level. When syncing invoices from Sequence:
* **Taxed customers**: Tax codes are applied based on product tax categories mapped in Sequence
* **Tax exempt customers**: No tax is applied to line items
* **Reverse charged customers**: Appropriate reverse charge tax codes are applied
You can configure tax code mappings in the Rillet connector settings to ensure accurate tax handling.
## Frequently asked questions
Your Sequence account ID is required for the webhook URL. It can be provided by your Sequence contact during onboarding.
* Verify the webhook URL includes your correct Sequence account ID
* Ensure you've pasted the webhook secret from Rillet into Sequence and clicked Save
* Confirm the webhook events include `invoice.updated`, `invoice.deleted`, and `payment.updated`
* Check that the sequencehq type is added for external references in Rillet
You can view the sync status of invoices directly in Sequence. A Rillet logo will appear next to successfully synced invoices, and you can click through to view the invoice in Rillet.
If a sync fails:
1. Navigate to the invoice in Sequence
2. View the error message explaining why the sync failed
3. Address the issue (e.g., link customer, map product)
4. Click "Retry sync" to attempt the sync again
Common sync errors include:
* **Customer not linked**: Link the customer to a Rillet customer first
* **Product not mapped**: Map the product to Rillet (unmapped line items are posted against **Sequence Default Product**)
* **Currency mismatch**: Ensure the invoice currency matches the customer's Rillet currency
* **API error**: Check your API key is valid and Rillet is accessible
* **Missing setup**: Ensure the webhook is configured and the sequencehq type is added for external references in Rillet
No. Line items for unmapped products are posted against **Sequence Default Product**, a placeholder product Sequence automatically creates in Rillet the first time an invoice syncs. Map products in advance if you want their line items to use the correct Rillet product, account code, and settings instead.
Multi-currency can be enabled by the Rillet support team in your instance. Once enabled, invoices sync in their original currency, and the currency must match the customer's configured currency in Rillet.
Payment status sync requires the webhook to be correctly configured with the `payment.updated` event. Ensure your webhook includes this event and that the webhook secret is saved in Sequence. For invoices with a Stripe payment link, Sequence syncs payment status from Stripe instead and ignores Rillet's payment status.
# Salesforce
Source: https://docs.sequencehq.com/connectors/salesforce
Enhance your Salesforce workflows with Sequence quoting and real-time billing data
Sequence’s Salesforce connector allows your Sales reps to easily create quotes, convert them to
billing schedules and track invoices and usage throughout a contract, all from within Salesforce.
This enables a frictionless flow from Sales to Finance to operationalize billing for new deals and
maintain an up-to-date view of the customer in Salesforce to inform future upsells and renewals.
**Use the Salesforce connector to:**
## Getting started
Sequence comes with a [Salesforce managed package](https://help.salesforce.com/s/articleView?id=sf.s1_branded_apps_managed_package_about.htm\&language=en_US)
defining a set of custom components in your Salesforce environment:
* [Custom objects](/connectors/salesforce#data-model) for Sequence quotes, billing schedule and invoices
* [Custom Flow actions](/connectors/salesforce#create-sequence-customers-and-billing-schedules-via-salesforce-flow) for creating Sequence customers and billing schedules
from Salesforce via [Salesforce Flow](https://developer.salesforce.com/developer-centers/flow)
Reach out to the Sequence team for an installation link, and follow the [installation guide](/connectors/salesforce#salesforce-package-installation-guide).
Please note that a different installation link is required for your Salesforce production and developer accounts.
To successfully sync data to Salesforce, the multi-currency feature needs to be enabled in your Salesforce account, and the required currencies need to be added ([learn more](https://help.salesforce.com/s/articleView?language=en_US\&id=000381840\&type=1)).
From the Connectors page, select Salesforce and Connect. Choose the Salesforce account you want to connect and complete the
authorization flow.
Sequence customers are mapped 1:1 to Salesforce accounts. All billing data synced from Sequence to Salesforce
is automatically associated with the corresponding account.
To manage links between Sequence customers and Salesforce accounts, navigate to the Customers tab. Your linked customers are
marked with a Salesforce icon.
To link a new customer, select `Link account` from the sidebar on the right and enter a Salesforce Account ID.
You can find the ID of a Salesforce account in the URL of the account page in Salesforce, e.g.
`https://yourInstance.lightning.force.com/lightning/r/Account//view`
When you create this link, Sequence automatically syncs all historical billing schedules and invoices
for this customers into Salesforce, with a reference to the linked account.
If you use custom Flow actions to create Sequence customers from Salesforce, you can automatically
assign this link at customer creation. This way you won't have to manually link new customers to Salesforce accounts
## Sync billing data from Sequence to Salesforce
With the connector set up, Sequence will automatically sync new billing schedules and invoices from Sequence
to Salesforce. All Salesforce records created this way include a reference to the respective accounts.
Sequence syncs data to Salesforce in real-time. A billing schedule is synced when you start it or update it.
An invoice is synced when you finalize or send it.
## Create Sequence customers and billing schedules via Salesforce Flow
The Sequence Salesforce package includes 2 custom Apex actions that allow you to interact with the Sequence API from
Salesforce Flow: **Create Sequence Customer** and **Create Sequence Billing Schedule**. You can access
these actions in the flow builder by adding an Action node to your flow.
The action inputs match the API specifications for the [create customer](https://docs.sequencehq.com/reference/latest/customer/create-customer)
and [create billing schedule](https://docs.sequencehq.com/reference/latest/billing/create-billing-schedule) endpoints respectively.
The package includes custom Apex classes to represent these inputs. Use Assignment nodes to set these variables in your flow.
The package also includes a few sample flows that can be used as a reference or starting point:
* **Create Customer** (auto-launched flow): creates a Sequence customer given an account record and a contact record in Salesforce
* **Create Billing Schedule** (auto-launched flow): creates an empty Sequence billing schedule for a given Sequence customer ID and billing schedule start date
* **Create customer for Quoting** (record-triggered flow): creates a Sequence customer when an opportunity enters "Proposal/Price Quote" stage
* **Create customer for Billing** (record-triggered flow): creates both a Sequence customer and a Sequence billing schedule when an opportunity is closed-won
The sample and record-triggered Flows that create customers rely on the **`Sequence Customer ID`** field on the Account. **If the field is empty**, the Flow creates a new Sequence customer and writes the new ID back to the Account. **If the field is already populated**, the Flow treats the account as already linked and **does not** create another customer.
**Auto-create customer** Flows require a **complete Billing Address**, a **Sequence Billing Contact** with **Mailing Address**, and **two-letter ISO** country codes (`FR`, `US`, not full names) on **every address** the Flow uses (billing and mailing). **Record-triggered** Flows run when an Opportunity is **updated** to a stage such as **Proposal/Price Quote** or **Closed Won**: **save those Account and contact values before** you move the Opportunity to that stage. Updating the stage first can yield an incorrect customer, or the Flow may **fail silently** with no error in the UI. If customers are missing in Sequence, re-check addresses and the billing contact.
For an in-depth overview how to work with Sequence custom actions, watch the video walkthrough below.
## Use Sequence CPQ from Salesforce
The Sequence Salesforce package comes with a custom button to launch the Sequence quote builder. Add the button
to your opportunity page layout to create a Sequence quote for your customer directly from Salesforce.
When the quote is published, Sequence syncs it back to Salesforce under the original opportunity.
## Salesforce package installation guide
Reach out to the Sequence team to obtain an installation link.
Follow the installation link and complete the Salesforce sign-in flow.
Follow the installation link and complete the Salesforce sign-in flow if you are not already signed in.
Choose **Install for All Users**, approve the installation, and click **Install**.
Multi-currency must be enabled for billing schedules and other objects to sync correctly between Sequence and Salesforce. Complete this step **before** you connect Salesforce to Sequence in the Sequence app.
1. In Salesforce **Setup**, use Quick Find to search **Company Information**.
2. Open **Company Information** and click **Edit**.
3. Check **Activate Multiple Currencies** and click **Save**.
Then configure which currencies exist and their rates:
1. In **Setup**, search **Manage Currencies**.
2. Click **New** to add the required currencies and set conversion rates.
For background, see Salesforce’s guide to [multiple currencies](https://help.salesforce.com/s/articleView?language=en_US\&id=000381840\&type=1).
Set up access to the Sequence API:
1. In Sequence, go to **Settings** -> **API keys** and generate a new API key to be used by Salesforce.
2. Make note of the client ID and secret key.
3. In Salesforce, go to **Setup** -> **Custom Metadata Types**.
4. Click **Manage Records** next to **Sequence Integration Settings**.
Create a new record with your client ID and key pair. By default the endpoint URLs are prepopulated with Sequence's production endpoint URLs.
Add Sequence custom components to your page layouts. For example:
* **Account page layout:** Sequence **Billing Schedules**, **Invoices**, **Quotes**, and the **Sequence Billing Contact** field.
* **Opportunity page layout:** Sequence **Quotes** and the **Create Sequence Quote** button.
After installation, **page layouts are not updated automatically**. A Salesforce admin must add the relevant components manually. Adding **Sequence Billing Contact** to the Account layout is **required**. The Flow templates use this field to determine the billing contact when creating a Sequence customer.
Package installation creates the objects, Flow actions, sample Flows, and custom fields; layout placement is always a separate manual step.
## Sequence Salesforce data model
The data model for the custom objects in the package is illustrated below.
* Billing schedules, invoices and quotes are related to accounts
* Billing schedule and quotes are also related to opportunities
* The pricing details of quotes and billing schedules are captured by a set of related objects: phases, prices, minimums and discounts
## Frequently asked questions
The Salesforce package adds a **Sequence Customer ID** custom field to the Account object. Flows that create customers check this field:
* If **Sequence Customer ID** is **empty**, the Flow **creates** a new Sequence customer and **writes the ID back** to the Account.
* If **Sequence Customer ID** is **already populated**, the Flow **stops** and **skips** customer creation. The account is treated as already linked.
That is how the connector avoids pushing the same Salesforce account into Sequence multiple times.
The Salesforce package adds a custom field called **Sequence Billing Contact** to the Account object. Add this field to the **Account page layout** (see the installation guide). Once added, users can select a contact as the Sequence billing contact. The Flow templates use this field by default to determine the billing contact when creating a Sequence customer. You can change the Flow to use a different contact or field if needed.
Update the default Opportunity page layout to include **Quotes** and the **Create Sequence Quote** button from the package. The button opens a **blank quote** by default with the **customer pre-assigned**.
You can **initiate the customer link from Salesforce** rather than Sequence, but **the link must exist on both sides**. The managed package adds **Sequence Customer ID** on the Account object, which you can bulk-populate with the **Data Import Wizard** or **Data Loader**. You must also create the corresponding link **in Sequence** via the **API**, a **script**, or **manually in the Sequence dashboard**.
Reach out to our team for help during onboarding. In practice:
1. **In Salesforce**, populate **Sequence Customer ID** on each Account in bulk as needed. The Data Import Wizard is built into Salesforce (no extra install), supports up to 50,000 records per run, and uses a CSV. Export accounts from Salesforce, add Sequence customer IDs (for example from a CSV export in the Sequence dashboard), and import to update Accounts. Our team can help match Salesforce accounts to Sequence customers.
2. **In Sequence**, link each customer to the Salesforce account via the **dashboard**, **API**, or a **script**. Sequence can assist with **manual linking in the Sequence dashboard** during the initial setup phase if needed.
## Troubleshooting
This could be for a number of reasons:
1. An issue with the Flow configuration
2. Missing or incomplete data on the Account: Sequence expects a **complete Billing Address** and a designated **Sequence Billing Contact** with a **Mailing Address**. The **country** on **every address** involved must be a **two-letter ISO code** (for example `FR`, `US`, not full country names). When these are wrong or incomplete, customer creation from Flow can **fail silently** with **no visible error message**. Verify addresses and the billing contact even if the Flow appears to run.
3. A country on an address was not in ISO 2-letter format (for example use `FR` for France).
For the quote to launch in Sequence, the account in Salesforce must be linked to an existing Sequence customer. If you're using the provided Salesforce Flow templates, consider creating a customer in Sequence once a Salesforce opportunity moves to `Negotiation/Proposal` stage (i.e. prior to moving to `Closed won`). This ensures the customer is linked and ready to receive a sales proposal via Sequence.
For Sequence objects to sync back to Salesforce, you need to have the multi-currency setting enabled in your Salesforce environment (see above). If you're still seeing sync errors, please get in touch with our team.
# Snowflake
Source: https://docs.sequencehq.com/connectors/snowflake-export
Export Sequence data into your Snowflake instance
Automatically push Sequence data into your Snowflake instance. Data is refreshed every 24h.
**Prerequisites:**
In order to complete the following setup steps, you or a Snowflake admin on your team must have the `securityadmin` and `sysadmin` roles.
(To check your account for these roles, run `SHOW GRANTS TO USER ;` and review the role column.)
If your Snowflake data warehouse is using Snowflake Access Policies, you will need to have the data-syncing service's static IP available to complete Step 2.
## Setting up Snowflake for data exports
### Part 1: Create role, user, warehouse, and database in the data warehouse
```
begin;
-- create variables for user / password / role / warehouse / database
set role_name = 'TRANSFER_ROLE'; -- all letters must be uppercase
set user_name = 'TRANSFER_USER'; -- all letters must be uppercase
set user_password = 'some_password'; -- alphanumeric only, special characters are not allowed
set warehouse_name = 'TRANSFER_WAREHOUSE'; -- all letters must be uppercase
set database_name = 'TRANSFER_DATABASE'; -- all letters must be uppercase
-- change role to securityadmin for user / role steps
use role securityadmin;
-- create role for data transfer service
create role if not exists identifier($role_name);
grant role identifier($role_name) to role SYSADMIN; -- establish SYSADMIN as the parent of the new role. Note: this does not grant the access privileges of SYSADMIN to the new role.
-- create a user for data transfer service
create user if not exists identifier($user_name)
password = $user_password;
-- set default role and warehouse to new user
alter user identifier($user_name) SET default_role = $role_name;
alter user identifier($user_name) SET default_warehouse = $warehouse_name;
grant role identifier($role_name) to user identifier($user_name);
-- change role to sysadmin for warehouse / database steps
use role sysadmin;
-- create a warehouse for data transfer service
create warehouse if not exists identifier($warehouse_name)
warehouse_size = xsmall
warehouse_type = standard
auto_suspend = 60
auto_resume = true
initially_suspended = true;
-- create database for data transfer service
create database if not exists identifier($database_name);
-- grant service role access to warehouse
grant USAGE
on warehouse identifier($warehouse_name)
to role identifier($role_name);
-- grant service access to database
grant CREATE SCHEMA, MONITOR, USAGE
on database identifier($database_name)
to role identifier($role_name);
commit;
```
#### Using an existing schema
By default, a new schema (with a name you provide) will be created in the target Snowflake database upon the initial connection. If instead you create the schema ahead of time, you may remove the CREATE SCHEMA permission, and instead grant ALL PRIVILEGES on the target schema for the designated role.
The script below can be used to complete this step:
```
set role_name = 'TRANSFER_ROLE';
set database_name = 'TRANSFER_DATABASE';
set schema_name = 'PRECREATED_SCHEMA';
use database identifier($database_name);
grant ALL PRIVILEGES on schema identifier($schema_name) to role identifier($role_name);
```
#### Using an existing warehouse or database
By default, this script creates a new warehouse and a new database. If you'd prefer to use an existing warehouse/database, change the warehouse\_name variable from TRANSFER\_WAREHOUSE to the name of the warehouse to be shared/database\_name variable from TRANSFER\_DATABASE to the name of the database to be shared.
In the Snowflake interface, select the dropdown next to the "Run" button, and click Run All. This will run every query in the script at once. If successful, you will see Statement executed successfully in the query results.
If your Snowflake data warehouse is using Snowflake Access Policies, a new policy must be added to allow the transfer service static IP to write to the warehouse.
Review current network policies to check for existing IP safelists.
`SHOW NETWORK POLICIES;`
If there are no existing Snowflake Network Policies (the SHOW query returns no results), you can skip to Step 3. If there is an existing Snowflake Network Policy, you must alter the existing policy or create a new one to safelist the data transfer service static IP address. Use the CREATE NETWORK POLICY command to specify the IP addresses that can access your Snowflake warehouse.
`CREATE NETWORK POLICY ALLOWED_IP_LIST = ('5.4.7.8/32');`
#### Creating your first network policy
If you have no existing network policies and you create your first as part of this step, all other IPs outside of the `ALLOWED_IP_LIST` will be blocked.
Snowflake does not allow setting a network policy that blocks your current IP address. (An error message results while trying to create a network policy that blocks the current IP address.) But be careful when setting your first network policy.
Securely share your host name, database name, your chosen schema name, username, and password with us to complete the connection.
Once shared, we'll set up the rest to start your automated data exports.
# Sphere
Source: https://docs.sequencehq.com/connectors/sphere
Integrate with Sphere to automatically calculate and apply sales tax to invoices.
Connect Sphere to calculate sales tax on your invoices based on your customer's location and tax legislation.
### Capabilities
**Automated tax calculations**: Tax is calculated on every invoice
**Up-to-date tax rates**: Sphere applies the correct rates per jurisdiction
**Customer and product sync**: Customers and products sync to Sphere automatically
**Bi-directional sync**: Keep Sequence and Sphere in sync
To use this connector, you need a Sphere account. Reach out to your Sphere representative to get started.
### Connector setup
Navigate to "Browse integrations", locate Sphere in the Tax section, and click "Manage integration".
Paste your Sphere API key into the field provided and click "Test credentials" to verify the connection. Once validated, click "Save changes" to activate the connector and wait for the connection to complete before moving on.
Every product in a billing schedule must have a tax category assigned in Sequence, unless the customer is tax exempt.
Assign any tax category to each product. Sphere calculates the actual rate based on your customer's location.
If you are an existing Sequence customer connecting Sphere, make sure every product you actively use has a tax category assigned. Go to Settings > Products to review and update any products that are missing one.
If you are setting up Sequence for the first time, we recommend creating a single tax category (e.g. **Sphere**) and assigning it to all your products. Sphere will override this with the correct rate at invoice time.
To enable bi-directional sync, provide your Sequence API key to your Sphere representative so they can configure the connection on the Sphere side. This ensures your data stays in sync across both platforms.
You can find your Sequence API key under Settings > API keys.
### How it works
**Customer and product sync**
When you connect Sphere, existing customers and products sync automatically. New customers and updates sync as they're created.
New customers and product updates will show the Sphere link indicator in the dashboard. For existing customers, the indicator may take a moment to appear.
**Tax rates on invoices**
Once Sphere is connected, tax is calculated automatically on every invoice. Sphere determines the correct rate based on your customer's location and tax legislation.
When creating a billing schedule, you may be prompted to enter a tax rate percentage if none has been configured for that customer's country. Enter any value; Sphere will overwrite it with the correct rate when the invoice is generated.
### FAQ
Go to Settings > Products, find the product, and assign any tax category. The choice does not affect the calculation; Sphere determines the rate.
Update it at Settings > Merchant > Address. Tax calculations use this as the point of origin.
No. Customers and products sync automatically. Assign a tax category to each product in Sequence; Sphere calculates the rate from the product and customer location.
Set the customer's tax status to "Exempt" in their profile. Sphere applies the appropriate exemptions.
Share your Sequence API key (Settings > API keys) with your Sphere representative so they can complete the setup on their side.
Contact the Sequence team. Your account will return to manual tax management.
# Stripe
Source: https://docs.sequencehq.com/connectors/stripe
Integrate with Stripe to automatically collect payments from customers and reconcile invoices.
**Use the Stripe connector to**:
* Add Stripe payment links to Sequence invoices to provide additional payment methods
* Automatically charge customers when you send invoices (auto-charging can be disabled)
* Automatically mark Sequence invoices as paid once payment is received
**Creating a new Stripe account**
Stripe Connect requires all partner apps to create a separate, ringfenced account within your existing Stripe account. This prevents third party integrations from interacting with each other. If you have customers with payment details in your existing account, you can copy them over in a [few simple steps](#copying-existing-customers-into-your-new-stripe-account).
## Start guide
Follow the below steps to get started:
1. Head to the Connectors page to connect to Stripe. This will take you to a Stripe onboarding flow to create a new connected Stripe account. Stripe requires partner apps to create separate ringfenced accounts.
2. If you have an existing Stripe account with customers and payment methods, you can copy them over in a [few steps](#copying-existing-customers-into-your-new-stripe-account).
3. Link your Sequence customers to Stripe customers. Sequence will use the payment method on file to automatically charge your customers when an invoice is sent.
During onboarding, Stripe will request standard information about your business to verify your account. Ensure that you provide complete business information to avoid the risk of suspension or payment interruptions later on.
### Recommended Stripe account setup
Create a transparent payment experience for your customers by enabling payment receipt notifications on Stripe (recommended).
In your Stripe account, go to **Settings > Business > More > Customer emails** and enable email notifications for successful payments and refunds.
Once enabled, your customers will receive a notification from Stripe each time a payment succeeds (see below). Payment receipts are helpful for customers who are charged automatically.
Example payment receipt from Stripe
Provide customers different payment options. In your Stripe account, go to **Settings > Payments > Payment methods**. Payment methods are displayed as options on your Stripe checkout page for each invoice.
Check your account status to ensure there are no outstanding tasks to avoid the risk of suspension. In your Stripe account, go to **Settings > Business > Account status**.
## Collecting payments with Stripe
Collecting payments with Stripe is straightforward. To automate collections for a customer, enable Stripe payment links on the customer's billing schedule, create one-time invoices with payment links or add a payment link to an existing draft invoice.
Create a billing schedule and enable Stripe payments to automate collections. Invoices created by the billing schedule will include a Stripe payment link (regular bank details are included as a fallback option).
Create a one-time invoice and enable Stripe as a payment method. Once issued to the customer, the invoice will include a payment link.
Add a payment link to a draft invoice.
You can also add a payment link for an already sent invoice (for example if you forgot to add it). This will add a link to a Stripe Checkout page on the hosted invoice page on your customer portal.
## Example payment flow
When the invoice is finalized and sent to the customer, a Stripe checkout payment link is generated. If a payment method is already on file, the customer is charged automatically. Talk to our team to disable auto-charging for your account.
Once an invoice has been sent, there are different options for your customer to view the Stripe checkout page and complete the payment.
The email includes a Stripe checkout link to pay for the invoice. Clicking `View invoice details` will open the hosted invoice. The invoice is also attached as a PDF.
Clicking `Pay using Stripe` on any of the above touch points will open the Stripe checkout. If this is the first time the customer is paying via Stripe, they will need to enter their payment details as below. If a payment method is on file, the customer is charged automatically and will see a "Payment successful" page.
If the payment succeeds, or if a customer opens the link for an already completed payment, the below page is displayed. In Sequence, the invoice is automatically marked as paid.
## Auto-charging customers
Charge customers automatically once a payment method is on file (e.g. card details or a direct debit). Sequence initiates the payment when you **send** the invoice to the customer.
**If auto-charging is enabled**: Once a customer has paid their first Stripe invoice and there is a payment method on file, subsequent invoices will be **charged automatically**. You can disable auto-charging in settings (see below).
You can enable or disable auto-charging in Settings > Invoices. Changes only apply to subsequently created billing schedules and invoices.
If you have disabled auto-charging by default, you can still enable auto-charging for selected customers as part of their billing schedule.
## Linking Sequence customers to Stripe
Once integrated with Stripe, Sequence will handle creating customers in Stripe. Customer details are pushed into Stripe when the first payment link is created. Login to your Stripe dashboard to view your customers.
You can unlink Sequence customers from Stripe from the Sequence dashboard.
You can also manually link Sequence customers to Stripe via the dashboard. Click on the kebab menu in the customers table and select `Link to Stripe`.
## Reconciling invoices
Invoices with Stripe as a payment method are automatically marked as paid in Sequence once the Stripe collection has taken place.
Using an Accounting connector with Sequence? For invoices with a Stripe payment link, Sequence does not sync transactions such as Stripe payments with your Accounting system. In this case, you need to reconcile invoices in your Accounting system separately.
To reconcile payments against invoices in your Accounting system or ERP, use one of Stripe's native Accounting or ERP integrations to sync in payment feeds.
## Dealing with failed payments
Sequence automatically charges customers with a payment method on file when you finalize an invoice with Stripe enabled.
Payments fail for a number of reasons, including expired card details and insufficient funds ([learn more](https://docs.stripe.com/declines/codes)).
When a payment fails, Sequence notifies you and your customer via email.
To make the payment, your customer needs to provide an updated payment method. Your customer can pay for the invoice by selecting the `Pay using Stripe` link from their invoice email notification or via their customer portal.
When a payment fails, Sequence sends an email to your business and customer.
To make the payment, your customer needs to visit the Stripe Checkout page related to the invoice.
Log in to your Stripe dashboard and view all successful and failed payments.
## Automatically retrying failed payments
Sequence can re-attempt failed Stripe payments on a schedule, so you don't have to chase them manually. Enable it in **Settings → Invoices → Stripe**, choose whether to count from the invoice's **sent date** or **due date**, then set how often to retry and how many times:
* How often to retry: every 2 to 30 days.
* Number of successive retries: up to 20.
The default is every 7 days, up to 10 retries. Retries stop early once the invoice is paid, and only apply to unpaid invoices collected via Stripe that have a payment method on file. Each retry runs the same automatic collection as the original charge.
Each retry runs shortly before that day's payment reminder, so a successful retry can mark the invoice as paid and stop the reminder going out.
### Retries don't always appear in Stripe
A scheduled retry doesn't always create a charge, or even a failed payment, in your Stripe dashboard. Before charging, Sequence checks whether the attempt would duplicate one already in progress or is certain to fail, and skips it if so. A skipped retry never reaches Stripe, so there's no payment or log there. Stripe itself blocks some attempts outright, such as a card it has flagged as lost, stolen, or fraudulent.
This protects your customers from duplicate charges and avoids hammering a card that just declined. ACH debits can take several business days to settle, so if a retry falls due while an earlier attempt is still pending in Stripe, Sequence skips it rather than risk charging the customer twice. It retries on a later scheduled day only if that attempt ultimately fails.
| Scenario | What happens on the next scheduled retry |
| - | - |
| Same card failed less than 24 hours ago (e.g. insufficient funds) | Skipped until 24 hours have passed, then retried |
| Same card failed more than 24 hours ago | Retried, in case the customer has added funds |
| Card reported lost, stolen, or fraudulent | Blocked, never retried on that card |
| Customer adds a new card after a failure | Retried on the new card |
| A payment is already in progress (e.g. an ACH debit still settling) | Skipped until the in-flight attempt resolves |
| Invoice already paid or voided | Skipped, as there's nothing to collect |
Because some retries are skipped or blocked, the number of attempts you see in Stripe can be lower than the number you scheduled. That's expected.
## Charging self-serve customers
Collect customer payment information as part of your onboarding and charge customers automatically.
Add Stripe customers as part of your onboarding and collect payment details upfront:
1. Implement a Stripe onboarding user flow using the Stripe SDK. Your Sequence Stripe Connect account comes with API keys that you can use.
2. Use the Stripe SDK to collect the payment details of your customers.
3. Going forward Sequence will then use the Stripe customer ID to charge the payment details you have collected during onboarding.
4. You would then use the Stripe SDK to create a Stripe customer and associate the payment details with that Stripe customer. Once you have a Stripe customer ID, you can submit an update customer request to Sequence containing the Stripe customer ID (see below). That request will associate the Stripe customer ID with the Sequence customer ID.
5. Decide whether to show or hide payment links on invoices and whether to issue receipts via Stripe.
[Here](/reference/latest/customer/update-customer) is an example request that contains a Stripe customer ID in our API reference (a PUT request to update the customer and contains the following request body):
```
{
"address": {
"country": "GB",
"line1": "Flat 1",
"line2": "123 Fake Street",
"postcode": "AB1 2EF",
"town": "London"
},
"billingEmails": [
"exampleCorpInvoices@example.com"
],
"contactName": "John Doe",
"customerAliases": [
"b1c87177-088a-40ec-8917-9809343f3f9c"
],
"email": "john@example.com",
"externalIds": [
{
"key": "Xero",
"value": "123456789"
},
{
"key": "Stripe",
"value": "cus_OCtCxqQDgu1uX9"
},
{
"key": "HubSpot",
"value": "123456789"
}
],
"label": "Example customer",
"legalName": "John Doe",
"taxStatus": "TAXED",
"telephone": "02010001000",
"url": "https://example.com/"
}
```
## Copying existing customers into your new Stripe account
Have an existing Stripe account? Copying existing customers is straightforward and only takes a few minutes.
Your new connected Stripe account will receive all of the Stripe Customers and associated stored payment details from your original Stripe account.
A data copy involves two parties: the sender account and the recipient account ([Stripe Docs](https://docs.stripe.com/get-started/data-migrations/pan-copy-self-serve?copy-method=full)):
**Sender account**: The Stripe account currently storing the customer data. This is the account to copy the data from.
**Recipient account**: The Stripe account where you want to store the customer data. This is the account to copy the data to (your new account connected to Sequence).
In your sender account, copy the `accountId` (Example: `acct_1LFi224JxaT26LnINXj`) of your Stripe account. You can find it under Settings > Business > Account details [here](https://dashboard.stripe.com/settings/account).
In your sender account, go to [Customers](https://dashboard.stripe.com/customers) and select the customers you want to copy. Next select copy and enter the `accountId` from step 1. Confirm the copy request.
Go to [Customers](https://dashboard.stripe.com/customers) in your new Sequence-specific Stripe account and accept the copy request. Once confirmed, Stripe will copy your customer details and payment methods into the new account (usually takes less than an hour).
Learn more about copying customer details across counts in the [Stripe docs](https://docs.stripe.com/get-started/data-migrations/pan-copy-self-serve?copy-method=full).
Data copying considerations: Single Euro Payments Area (SEPA), BACs, or ACH records stored as payment method objects cannot be copied over at this time.
## Frequently asked questions
Yes, you can use your existing Stripe account with Sequence.
Sequence uses [Stripe Connect](https://stripe.com/connect) as this is the recommended approach for orchestrating payments on another user's Stripe account.
As part of Stripe Connect, Sequence is required to use a separate sub-account within a user's overall Stripe account.
This follows Stripe's [Legal Entity Sharing](https://support.stripe.com/questions/legal-entity-sharing) model, which ensures that data is segregated between platforms.
If you have existing customers in another sub-account, they can be copied to the one managed by Sequence using Stripe's PAN data copy method. This is documented above.
Some other platforms continue to use a Stripe OAuth flow that does allow connecting to an existing Stripe sub-account. However, Stripe advises that the OAuth flow is considered deprecated.
Check your Stripe account status to confirm there are no outstanding tasks or missing information that may result in a restricted Stripe account.
Stripe provides a wide range of global payment methods. Go to **Settings > Payments > Payment methods**.
Login to your Stripe dashboard, head to settings and disconnect from Sequence.
Connect to Stripe from your Sequence sandbox account. That will create another, test-mode account that is connected to your Sequence Sandbox account.
Log in to your Stripe dashboard and locate the payment you want to refund. Next, refund the payment via the button shown below.
# Xero
Source: https://docs.sequencehq.com/connectors/xero
Sync Sequence invoices in real-time and streamline your accounting process.
## Manage links to Xero
Sequence natively syncs customers and invoices to Xero. When viewing customers or invoices, open the sidebar to see whether an object is linked or synced.
## Start guide
Connecting your Xero account to Sequence is simple. Go to the Connectors tab to get started.
By default, Xero only supports one currency. If you bill customers in multiple currencies, you may need to upgrade your [Xero plan](https://www.xero.com/uk/accounting-software/use-multiple-currencies/).
1. Click the button to connect to Xero.
2. Select the organization to which you want to connect. For testing, it is recommended to connect to a test Xero Demo Company if you are using the sandbox environment.
3. Authorize the connection.
4. Set up your default ledger accounts. See more under ledger accounts [ledger accounts](#ledger-accounts)
## Import customers from Xero
You can import customers from Xero into Sequence in order to speed up your onboarding. In order for an invoice or credit note to be synced the end-customer must be linked to a customer in Xero.
You can import some or all of your customers directly from Xero using the customer import tool. In order to be valid for invoicing in Sequence every customer needs the following:
* A primary address
* A primary email address
The primary address must have the following fields:
* First line
* Town/city
* Postal/zip code
* A valid country (Sequence uses the [alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format)
If a customer is invalid the reason will be provided, allowing you to update the customer in Xero and reload before importing.
If you want to link an existing customer to Xero you can select them in the Sequence customer view and choose to which Xero customer you want to link them.
In Xero, contacts can be customers and/or suppliers. Sequence only imports customer records. For a Xero contact to become a customer, at least one invoice needs to be issued for them.
To add and link a net new customer to Xero and Sequence, create them in Sequence first and then link them to the corresponding contact in Xero. Alternatively, you can create a mock invoice for the contact in Xero to turn them into a customer (at this point, this is the only way to create a new customer in Xero).
## Push customers into Xero
When you create a new customer in Sequence, you can push them into Xero to ensure invoices are synced.
## Ledger accounts
Whenever you create an invoice in Xero each line item is linked to a ledger account. This allows you to categorize the items.
Similarly in Sequence you will need to link each line item to a ledger account in Xero. In order to speed this up you can set a default ledger account in your connector settings. This can be overridden for individual line items.
When you create a new product, set its Xero ledger account. This will apply to any prices and generated line items on invoices.
Set a ledger account for a specific invoice line item:
If you have existing products, billing schedules, invoices and/or credit notes in Sequence at the time when you connect your Xero account then setting a default ledger account will allow the connector to begin working straight away. All existing line items will be linked to the default ledger account. These can then be updated on an individual basis either in a plan, invoice or credit note as shown above.
## Tax
For taxable customers, Sequence will not provide a specific tax code when syncing invoices to Xero. Xero will apply the default tax code for a line item's ledger account.
For tax exempt and reverse charged customers, Sequence will override the tax code to be 'NONE'. You can change this value in your Xero settings.
## Syncing sales tax to Xero
US and Canadian sales tax is assessed by state or province, so a single Xero tax rate can't represent what was actually charged. Instead of letting that tax post through Xero's tax rate system and onto your VAT return, set a tax liability ledger account and Sequence routes it to a dedicated line instead.
Set the **Tax liability ledger account** in your connector settings, alongside your other default ledger accounts.
This only applies to customers billed in the US or Canada. Every other customer's tax continues to sync as a Xero tax rate, unaffected by this setting.
Leave it set to **None (use default rate)** to keep the existing behavior: tax syncs as a Xero tax rate and picks up whatever default rate is configured on the sales ledger account.
Once a tax liability ledger account is set, every invoice and credit note for a US- or Canada-billed customer is split when it syncs to Xero:
* Each revenue line syncs with no tax rate and no tax amount.
* Sequence adds one extra line for the document's whole tax amount, coded to the tax liability ledger account and labeled **US sales tax** or **CA sales tax**. It's sent as a zero tax rate line, so it doesn't add to Xero's VAT return.
The invoice or credit note total in Xero always matches the original Sequence document. This only changes how tax is represented once it reaches Xero: your Sequence invoice, PDF, and revenue recognition are unaffected.
## Syncing invoices
Whenever an invoice is finalized or sent from Sequence it will automatically get pushed to Xero. The issue and due dates will be set to a dummy date of 1st January 3000 in Xero until you send the invoice, at which point we will update these. This will be overwritten with the correct dates when the invoice is sent. If you subsequently send the invoice via Sequence it will get marked as sent in Xero. Similarly if the invoice is marked as sent in Xero, then the status will be updated in Sequence.
Sending an invoice marks it as sent in Xero. You can navigate from the invoice in Xero to Sequence and vice versa.
Once an invoice has been pushed to Xero you can reconcile it against payments.
For invoices with a Stripe payment link, Sequence will sync the payment status from Stripe (and ignore the payment status in Xero). You need to reconcile your invoice in Xero separately in this case and additionally mark as paid in Sequence if the payment landed directly in your bank account without going via Stripe.
For regular invoices without a Stripe payment link, Sequence will sync the payment status from Xero.
## Syncing credit notes
Whenever a credit note is finalized in Sequence it will automatically get pushed to Xero. The issue and due dates will be set to a dummy date of 1st January 3000 in Xero until you send the credit note, at which point we will update these. This will be overwritten with the correct dates when the credit note is sent. If you subsequently send the credit note via Sequence it will get marked as sent in Xero. Similarly if the credit note is marked as sent in Xero, then the status will be updated in Sequence.
You can navigate from the credit note in Xero to Sequence and vice versa.
## Rounding behavior in Xero
By default, Xero only supports two decimal points. When an invoice is pushed from Sequence into Xero, line item amounts with more than two decimal points (e.g. £0.0003 per event) are therefore flattened into a line item with a quantity of 1 to avoid discrepancies in the total. For example, an invoice line item with a quantity of 500 and a unit-rate of £0.001 will reflect in Xero as a quantity of 1 with a £0.50 rate.
## Multi-currency transactions in Xero
Xero’s multi-currency feature will auto convert transactions in different currencies. Separate journals for each currency are not required. For tracking different kinds of revenue, you can use tracking categories (similar to tags or labels in Xero) or you can use account codes (specific codes for products).
## Posting revenue recognition journals to Xero
If your account has revenue recognition and the Xero connector enabled, Sequence can post recognition journals straight into Xero as manual journals. You review each month's journals in Sequence, then push them across when you're ready, so there's no CSV to download and import by hand.
### Setting up your ledger accounts
Direct posting uses four Xero accounts. Map each one on the **Account > Revenue recognition** settings page. Most of these already exist in a typical chart of accounts. The clearing account is the one you'll usually need to add.
| Account | Purpose | Typical setup |
| - | - | - |
| **Recognized revenue** | Where revenue lands once it has been earned. This is the income account on your profit and loss. | Usually exists already (for example, Sales). |
| **Deferred revenue** | Holds amounts that are billed but not yet earned. Used for billing in advance. | Usually exists already (for example, Income in advance). |
| **Unbilled revenue** | Holds amounts that are earned but not yet invoiced. Used for billing in arrears. | Often exists already (sometimes called accrued income). If not, add an asset account in Xero. |
| **Clearing** | A temporary holding account that connects Xero's automatic invoice journals to Sequence's recognition journals. | Add a new asset account in Xero. |
Deferred revenue and unbilled revenue are the two holding accounts that revenue moves out of as it is recognized.
To add any account you don't already have, go to **Accounting > Chart of accounts** in Xero and create it as an asset account, then map it in Sequence. You can register more than one Xero account under deferred, recognized, and unbilled revenue. The clearing account is a single account for the whole workspace, since it is a shared temporary holding account.
### The clearing account
When an invoice syncs to Xero, Xero automatically posts its own journal that would recognize the full invoice amount as revenue straight away. The clearing account stops that from happening.
Every invoice and credit note line is routed to the clearing account instead. Sequence then immediately posts an allocation journal that moves the amount out of clearing and into the right deferred or unbilled account for each product. The balance sits in clearing for only a few seconds before it moves on, and the account always returns to zero once allocation is complete.
The clearing account is purely a transit account. In normal operation it should never hold a balance for more than a few seconds, so it is only ever used to track a transaction on its way to the right account.
### How journals reach Xero
Revenue reaches Xero in two waves.
* **Allocation** happens automatically when an invoice or credit note is sent. It distributes the document's full amount across the deferred and unbilled accounts. Nothing hits your profit and loss at this stage.
* **Recognition** happens when you push journals from Sequence, month by month. It moves a slice of revenue out of the deferred or unbilled account and onto recognized revenue.
For example, an invoice covering 12 months in advance allocates the whole amount to deferred revenue when it is sent. You then recognize a portion each month by pushing that month's recognition journals to Xero. Because recognition moves revenue out of the deferred and unbilled accounts, a document has to be synced to Xero first, so that allocation can place its amount there.
### Journal posting mode
The **Journal posting** setting controls the state your journals arrive in.
| Mode | Behavior |
| - | - |
| **Draft** (default) | Journals are created in Xero as drafts. Someone reviews and posts them in Xero before they affect the general ledger. This mirrors the review step of the CSV import workflow. |
| **Posted** | Journals are created in their final, posted state and affect the general ledger straight away. |
### Per-product account mappings
The accounts you map in settings are the defaults for the whole workspace. You can override the deferred, recognized, and unbilled accounts on individual products, so revenue for each product lands in its own Xero accounts. Set these on the product itself.
### Pushing journals and tracking sync status
You push recognition journals from **Revenue recognition > Journal reports**. Open the **⋯** menu in the top right and choose **Push to Xero**, then pick the periods you want to push.
The dialog lists each accounting period you can push, grouped by month, from your account period lock date up to the end of the last full month. The current part-month is left out until it completes. Each period carries a status:
| Status | Meaning |
| - | - |
| **Not synced** | The period has never been pushed to Xero. |
| **Syncing** | A push is in progress. |
| **Synced** | Every journal for the period has posted, with nothing outstanding. |
| **Changed** | The period was pushed before, but new journals have appeared since. For example, a new invoice landed in an already-synced month. |
| **Failed** | At least one journal in the period could not be posted. |
Pushing runs in the background, so you can leave the page while it works. Re-pushing is safe: Sequence only posts what has changed, so a synced period posts nothing and a changed period posts just the new entries, without duplicating what's already in Xero. If a period fails, you can retry it.
Each push is scoped to one currency at a time, matching the CSV export. Journals are restated into your Xero organization's base currency using the original document's exchange rate, so they reconcile in your base currency. If you bill in more than one currency, push each currency separately.
Invoices and credit notes must be synced to Xero before you push recognition journals. Syncing a document is what allocates its amount into the deferred or unbilled account, and recognition moves revenue out of those accounts. If a document has not synced, there is nothing to recognize from.
Once journals have posted to Xero, Sequence marks the period as synced and will not push the same journals again. If you delete the posted journals in Xero and need them re-pushed, contact Sequence support to reset the period.
The clearing account cannot be overridden per product. It is a single shared account for the whole workspace.
Product mappings are read when a recognition charge is created. Updates apply to new charges; existing charges keep the mapping they were created with.
## Revenue recognition CSV export
If you'd rather review journals outside Sequence before they reach Xero, or you don't use direct posting, you can export them instead of pushing them.
The Xero-formatted journal export produces a CSV that's directly importable as a **Manual Journals** file in Xero. Columns follow Xero's published template (`*Narration`, `*Date`, `Description`, `*AccountCode`, `*TaxRate`, `*Amount`, plus tracking columns).
See [Journal reports](/revenue-recognition/journal-report) for filters, async download, and the full column list.
### Aggregation levels
The export supports daily, monthly, and per-customer-per-product-monthly aggregation:
| Aggregation | Behavior |
| - | - |
| **Daily** | One entry per journal per day. The default; produces the most detail. |
| **Monthly** | Daily journals collapsed into monthly totals per journal grouping. |
| **Monthly by customer and product** | Monthly totals scoped to each customer and product combination. Useful for accounts that want a finer-grained monthly rollup than a single total per ledger account. |
### Sign convention
Sequence's internal ledger uses an explicit `Direction` (Debit or Credit). When generating the Xero export, the amount is signed according to each Xero account's **normal balance**:
* Debiting a debit-normal account produces a positive amount.
* Crediting a credit-normal account produces a positive amount.
* Crediting a debit-normal account produces a negative amount.
* Debiting a credit-normal account produces a negative amount.
This matches what Xero expects on import, so journals load without manual sign correction.
### Rounding
Amounts are rounded to two decimal places. Trailing decimal zeroes are stripped where appropriate to match Xero's display.
### Credit notes without an accounting date
If a credit note has no accounting date set (e.g., it pre-dates the field being required), the export falls back to the credit note's **issue date** for the journal date.
# Zapier
Source: https://docs.sequencehq.com/connectors/zapier
Use Sequence Zapier templates to automate workflows and send notifications
Use Zapier to automate workflows and keep your team in the loop by leveraging webhooks to trigger Zaps. Whether you want to notify your team in Slack when a customer signs a quote or a customer is due for renewal, this guide will help you get started.
A Zapier Pro account is required to use Webhooks in Zaps.
### Get started with Zapier templates
Set up a simple Slack alert in a few steps.
Start by creating a new Zap or get started with one of the below templates. Use the webhook Zap, select the Catch Hook option and copy the webhook URL provided by Zapier. No other fields need to be configured.
Next, create a [new webhook notification](https://dashboard.sequencehq.com/settings/notifications) in your Sequence account, entering the webhook URL provided by Zapier in the previous step. Choose all or specific Sequence notification types, depending on the workflow you want to automate.
Go back to Zapier and configure the Zap. For example, you may want to filter certain responses or configure custom actions (e.g. send an email).
Depending on the webhook notification you have configured, trigger a webhook action to see the result in Zapier. For example, if you have created a webhook to listen to new customers created, create a customer in Sequence and confirm Zapier is able to receive the webhook.
### Zapier template library
Send a Slack message when a billing schedule is completed.
Send a Slack message when a new customer is added.
Send a Slack message when a quote is signed or accepted.
Send a Slack message when your merchant details change.
Send a Slack message when a quote is published or re-published.
# Approving a quote
Source: https://docs.sequencehq.com/cpq/approve-quote
Review, approve or reject a quote that's been submitted for sign-off before it reaches a customer
If your workspace has a quote-approval workflow configured, quotes that meet its conditions are held for review before they can be published to a customer. This page covers actioning a request as an approver. To configure who approves what and under which conditions, see [Workflows](/agents/workflows#quote-approval-flow).
## Overview
Instead of manually chasing a colleague to sign off on a discount before it goes to a customer, let a [workflow](/agents/workflows) route it to the right approver for you. When a quote-approval workflow is active for your workspace, publishing a quote sends it for review instead of straight to the customer.
## Submitting a quote for approval
Create or edit your quote in the [quote editor](/cpq/create-quotes). There's no separate "submit" step, approval is triggered from the same place you'd normally publish.
When a quote-approval workflow is active, the publish button reads **Send for review** instead of **Publish**. Add an optional message for your approver if you want to give them context, then confirm.
While a review is pending, the quote is locked for editing. It unlocks again as soon as the review resolves, whether approved or rejected.
By default, every **Publish**, **Publish changes**, and **Republish** action goes through the same check, even on a quote that's already been approved once. Your workspace's workflow can be configured to skip review when nothing material has changed since the last approval. See [Re-approvals](/agents/workflows#re-approvals) for how that's set up.
## Reviewing a submitted quote
Approvers see pending requests in [Watchtower](/agents/watchtower), under **Needs review**. Each task shows the quote, who requested it, and their comment.
From here you can:
1. **Approve**: publish the quote to the customer
2. **Reject**: leave the quote unpublished; the requestor is notified and can edit it before resubmitting
## After a decision
* **Approved**: the quote is published and reaches the customer through the usual [sharing flow](/cpq/create-quotes#sharing-a-quote-with-your-customer).
* **Rejected**: the quote stays unpublished. Edit it and send it for review again.
Either way, the decision is recorded in Watchtower's audit trail.
## Next steps
* Configure who approves what and under which conditions in [Workflows](/agents/workflows#quote-approval-flow)
* Review past decisions and monitor in-progress requests in [Watchtower](/agents/watchtower)
* See [Re-approvals](/agents/workflows#re-approvals) for how edits to an already-approved quote are handled
# Create quotes
Source: https://docs.sequencehq.com/cpq/create-quotes
Create order forms, proposals and sales quotes with custom deal terms in minutes
Sequence CPQ is purpose-built for for Fintech, AI and similar B2B Saas startups selling contracts with usage tiers, minimum commitments and ramped pricing. Native e-signatures powered by Dropbox Sign provide a low friction signing experience for your customers (no Dropbox account required).
With Sequence CPQ, your teams can create professional quotes in minutes. You can create new quotes from scratch via the quote editor or duplicate existing quotes. When you publish your quote, you and your customer can retrieve the quote via a shareable link.
You can preview what your published quote will look like via the `Preview` button.
### Lifecycle of a quote
As you negotiate with customers, you can adjust pricing, change deal terms and issue a new quote. Quotes have one of the following status options:
An unpublished quote that is still being edited.
A published quote can be shared with your customer.
Once you make changes on a published quote, a new version is created. You have the option publish or discard changes made. If you publish changes, the shareable link stays the same, but will now reflect your latest edits.
When e-signature is enabled, this status indicates that not every signatory has signed the document. The quote is locked for editing.
Indicates that all signatories have signed the quote, or that the quote has manually been marked as accepted (if e-signature is disabled).
An executed quote is a accepted quote for which a billing schedule has been created.
Sequence keeps an audit trail of any change made to a published quote by creating a new quote version. Once a quote is pending signature, completed or executed, it cannot be edited anymore.
### Getting started with CPQ
Reach out to a member of our team and schedule a tailored onboarding session. If needed, our team can assist in creating a set of on-brand visual assets for your quotes (testimonials, feature spotlights, brand assets, etc).
Start by setting up your products in the product catalogue. For each product, configure one or more list prices.
Next, create a template quote that reflects the standard terms and clauses included in your proposals. Templates can be duplicated. You can also copy and paste from the quote editor.
Use the template to create a new quote for a test customer. Add a pricing block and configure your pricing. Preview, then publish the quote to your test customer.
### Create a quote
In Sequence, quotes are shareable pages that can be customized, similar to a Notion page or a Google Doc. At the minimum, a quote must include customer details and pricing. You can optionally add other sections, terms, links and documents to the page.
Choose from the following content blocks to design your quote:
* Text blocks (including formatting)
* Headings
* Lists (bullet and numbered)
* Images
* Pricing block
### Variables for quote templates
Never send a quote with the wrong customer name, currency, or dates again. Quote templates now auto-populate with customer-specific data the moment you select an account - eliminating manual data entry and the errors that come with it.
When creating or editing a quote template, use variables to automatically insert customer information:
**Available variables:**
* `{Customer name}` - Customer company name
* `{Customer address}` - Customer billing address
* `{Customer country}` - Customer country
* `{Recipients}` - Quote recipients
* `{Quote owner}` - Account owner of the quote
* `{Start date}` - Contract start date
* `{End date}` - Contract end date
* `{Contract duration}` - Duration of the contract
* `{Payment terms}` - Payment terms for the quote
* `{Currency}` - Customer currency
Variables automatically populate when you select a customer, ensuring every quote contains accurate, customer-specific information without manual updates.
Use variables in any text block within your quote template. They'll remain as placeholders in the template and automatically fill when you create a new quote for a specific customer.
### Configure a quote cover image
Take your quotes to the next level with a branded cover image. Go to your quote and click add cover.
### Configuring pricing
Add a pricing block to your quote to add products, prices, discounts, minimums and other terms. Select `+ Add product` and choose from the set of products you've set up in your product catalogue.
By default, the list price will be added to the quote.
You can make a price adjustment against the list price. This will create a new price variant for this product in your product catalogue once the quote gets executed.
### Configure ramp deals and phased contracts
You can create a pricing proposal with phased pricing in just a few clicks. In the pricing block, select `+ Add new phase` and choose a duration.
For example, your proposal may include two one year phases, with a scheduled price increase in year two. The start date of a subsequent phase is always anchored against the end date of the previous phase.
### Payment terms
Set payment terms on quotes to define when invoices are due. Choose from Net 30, Net 60, or enter custom terms.
Payment terms configured on a quote automatically transfer to the billing schedule when the quote is accepted, ensuring consistency between the proposal and invoicing.
Payment terms set on quotes override account-level defaults for the resulting billing schedule.
### Sharing a quote with your customer
To share a quote with your customer, publish it. Use `Preview` to review the quote prior to publishing it. Publishing a quote will generate a shareable link for it. When you select `Publish` you have the option to send an email notification to your customer with a custom message. Once published, you can also download a PDF version of the quote.
If you have e-signatures enabled, you can collect signatures from your customer in just a few clicks. Sequence provides a native [e-signature connector](/cpq/esignature) powered by Dropbox Sign.
# E-signature
Source: https://docs.sequencehq.com/cpq/esignature
Create a frictionless signing experience with compliant e-signatures powered by Dropbox Sign
Sequence uses Dropbox Sign to collect secure and compliant electronic signatures.
## E-signature workflow
Add recipients who will need to sign the quote. You can also select an internal countersigner who will sign on behalf of your company.
Enable **Send signature requests to signers** to automatically send email notifications to all signers. You can optionally add a custom message to the notification.
Disable **Send signature requests to signers** to publish the quote as a shareable link. You can send signature requests later.
If you sent signature requests, recipients will receive an email with a link to review and sign the quote.
If you published a shareable link, customers can access the quote and click **Review and sign** to trigger authentication emails.
All signing happens directly within the Sequence quote interface. Recipients complete the following steps:
Click **Review and sign** to begin the signing process.
Review the quote details and click **Get started** to proceed.
The signing interface displays all signers. Click **Click to sign** to add your signature.
Choose to draw, type, or upload your signature. Enter or create your signature and click **Insert** to continue.
Review the legal agreement and click **I agree** to sign the document.
Once the first recipient has signed, the quote status updates to **Pending 1 Signature**. The signed recipient is marked with a check mark.
When a signer completes their signature, the quote owner receives an email notification.
For pending signatures, you can send reminder emails to signers who haven't signed yet.
Once all recipients have signed, the quote is fully executed. You'll receive a final confirmation email and can view the signed contract.
All signers receive a confirmation email when the quote is fully signed.
The dashboard shows the completed status with all signers marked as complete. You can now view the signed quote and create a billing schedule.
## Making changes to a published quote
You can make changes to both draft and published quotes. Making changes to a published quote requires the quote to be republished. Any signature attempts by your customer will be canceled and the quote will need to be signed again.
## Enabling and disabling e-signatures
By default, e-signatures are disabled. To enable e-signatures, go to **Settings > Quotes**. Enabling or disabling e-signatures only applies to future quotes. While e-signatures are disabled, your customers will not be able to accept or sign the quote via Sequence. You can still mark quotes as accepted from the Sequence dashboard.
## Countersigning a quote
Enable the countersigner setting to automatically add an internal signer (e.g. CEO) to every quote by default.
## Compliance & security
Sequence e-signatures are powered by Dropbox Sign. Learn more about Dropbox Sign's compliance and legality [here](https://www.dropboxsign.com/about/]legal).
## Frequently asked questions
You can add another recipient and republish the quote. Users who signed the quote already will need to re-sign.
No. Dropbox Sign is natively integrated into Sequence CPQ and no account is required.
Archive the quote. Archiving the quote will cancel the signature request.
# Renew a contract
Source: https://docs.sequencehq.com/cpq/renew-contracts
Apply a renewal quote directly to a customer's existing billing schedule, or start a fresh one
When a customer renews, you can take a renewal quote and apply it directly to their existing billing schedule. Sequence appends the quote's pricing to the current schedule, so the renewal continues on the same schedule instead of creating a separate one. You can still choose to start a new schedule if you prefer.
## Execute a renewal quote
Once a renewal quote is published or accepted, select **Execute quote**. Sequence checks the customer's existing billing schedules and opens the renewal execute flow.
Choose how you want to execute the quote:
* **Add to existing schedule** appends the quote's phases to one of the customer's current billing schedules.
* **Create new schedule** starts a separate billing schedule for this contract.
If the customer has a schedule the renewal can be added to, **Add to existing schedule** is preselected. Pick the target schedule (if the customer has more than one eligible schedule) and set a **renewal start date**. Sequence shows a preview of the selected schedule, including its start date and whether it is open ended, so you can confirm you have the right one.
Select **Continue** to review the renewal. Sequence shows the renewal date, the contract duration, the customer, and how the schedule's end date changes (its original end date and the new end date after the renewal). Check the details, then select **Execute quote** to apply the renewal.
## The renewed billing schedule
After you execute, the renewal's phases are appended to the existing schedule and the schedule's end date extends to cover the new term. The original contract phases stay intact, so you keep a single, continuous schedule with the full billing history in one place.
In the example below, the renewal adds three yearly phases (**Renewal - Year 1**, **Year 2** and **Year 3**) after the original contract, extending the schedule to 30 June 2029. Each renewal phase carries the pricing from the quote, and future invoices are generated automatically from these phases.
## Before you start
This flow applies to **renewal quotes only**. A quote's deal type determines how it executes:
* **Renewal quotes** open the renewal execute flow described below, where you can add the quote to an existing schedule or start a new one.
* **New business quotes** always create a new billing schedule. They do not offer the add-to-existing option.
If the **auto-execute signed quotes** setting is enabled, signed quotes are executed automatically and always create a new billing schedule. They will not be applied to an existing schedule. To apply a renewal to an existing schedule, execute the quote manually.
## How the renewal start date works
The renewal start date anchors the new phases that are appended to the schedule.
* For **fixed-end schedules**, the renewal start date is optional. Sequence pre-fills it with the day after the selected schedule ends, so the renewal picks up seamlessly where the current contract finishes.
* For **open-ended schedules**, the renewal start date is required so you can choose an explicit changeover date.
* The earliest date you can choose is the start of the schedule's currently active phase. If the renewal start date falls before the schedule's current end, Sequence truncates the existing schedule at that date and continues with the renewal pricing from there.
If the renewal changes the schedule's billing period, Sequence sets the billing date for the new phases to match the renewal start date. You will see a note in the modal when this happens.
## Which schedules are eligible
A schedule appears in the add-to-existing list when it:
* Belongs to the same customer as the quote.
* Is **active**.
* Uses the **same currency** as the quote.
Some schedules cannot take a renewal. Schedules that would produce an invalid result (for example, incompatible proration on the combined phases) are flagged in the modal and cannot be selected.
If the customer has no eligible schedule, the add-to-existing option is unavailable and you can create a new schedule instead.
## Permissions
Adding a renewal to an existing schedule edits that billing schedule, so it requires **billing schedule edit permissions**. Users without those permissions (for example, sales users) see the option locked and can still create a new schedule. Creating a new schedule does not require billing edit permissions.
## Related
* [Create quotes](/cpq/create-quotes)
* [Create billing schedules](/billing/create-billing-schedules)
* [Billing schedule phases](/billing/billing-schedule-phases)
# Attach documents
Source: https://docs.sequencehq.com/cpq/upload-agreements
Upload additional documents to quotes to simplify the signing process for prospects
If your contracting process requires additional documents to be signed, you can upload these to your quote in Sequence and get everything signed through a single e-signature.
For example, your proposal stage may look like this:
1. Your prospect asks for a quote.
2. You create a quote and share it via Sequence.
3. After a few iterations, your prospect agrees to the pricing.
4. The next stage requires a mutual service agreement involving several rounds of redlining.
5. Once everything is agreed, the final MSA can be uploaded to Sequence.
6. The prospect can sign all documents via a single e-signature.
To upload attachments, go to the sidebar and upload a file. Only PDF documents are supported.
View PDFs side-by-side within quotes or billing schedules.
The published quote includes an overview of all attached files, available for download.
All uploaded documents are included in the e-signature flow, so your customer can sign via a single step.
# Consuming credits
Source: https://docs.sequencehq.com/credits/consuming-credits
When a customer is billed, Sequence automatically uses any available credits to offset the total.
The billing engine uses metric credits ahead of cash credits. So when calculating charges for any usage-based products, Sequence will look for any eligible credits associated with the metric for said usage based product. If any are found, they will create a Line Item to offset the default cost of the product.
After assessing all products, any available Cash Credits will be applied to reduce the remaining costs.
In both cases, Sequence draws down from whichever grant would forfeit its balance soonest, so credit is never left to lapse when a later-expiring grant could have been used instead:
1. **Soonest effective expiry date first**: for a grant that refreshes and doesn't roll over, this is the end of its current refresh period rather than its expiry date, since that's when its remaining balance is actually lost
2. **Oldest grant**, as a tie-break
3. **A grant with nothing to lose** (no refresh boundary and no expiry) is drawn from last
Customer's credit balances are deducted when an invoice is created. If the invoice is subsequently voided, any credits used in the voided invoice will be added back to the credit balance.
See [Credit-based billing](/billing/credit-based-billing) for how applied and expected credit are itemized on an invoice.
# Grant customers credits
Source: https://docs.sequencehq.com/credits/grant-credits
In the customer tab, click on “Add Credit Grant” to open the credit grant sidebar. You will need the following information:
* Name: A friendly name for your credit grant. This will appear on the invoice as a line item description.
* Select whether this is a cash or unit credit.
* If Cash was selected, you’ll be prompted to fill “Amount of credit grant” with the amount of cash you are granting.
* If Unit was selected, you need to select the metric this grant is associated with, as well as a monetary value for the entire grant in “Total Price” or for each unit in “Price per unit”. Filling one updates the other automatically.
* Select a tax rate from the drop-down menu. This will be used for any credit line Items or Invoices associated with this grant.
* Optionally, select an expiry date, after which any remaining balance on the grant will cease to be usable.
* Choose whether to generate an invoice for this grant. If this is required, a draft invoice will be generated charging the customer for the credit.
Saving the credit grant will create a new entry in the credit ledger for this specific customer, and will optionally create a draft invoice to the customer for the credit grant.
## Frequently asked questions
Yes, you can delete credit grants.
# Overview
Source: https://docs.sequencehq.com/credits/overview
Offer prepaid credits your customers can burn down over time
Credits are a versatile tool that you can utilize to give your customers pre-agreed, and in some cases, pre-paid allowances to use your product. Credits have balances that are drawn from over time.
Credits are only consumed by invoices created by billing schedules (not one time invoices). For a customer to consume credits, they need to have a billing schedule .
In Sequence, you can grant two types of credits:
* **Cash**, or CURRENCY, which can act as a generic pre-payment for a customer
* **Unit**, or METRIC, which provides entitlement to use a specified number of units for a given metric (e.g. 10,000 API Calls)
You can give credits to customers by creating a credit grant. Each credit grant includes a type, an amount, and optional effective and expiry date. By default, credit grants are effective from the day they are issued, unless an alternative effective day is specified. Similarly, grants are eligible for withdrawal indefinitely, unless an expiry date is specified.
Credit grants can be created two ways:
* **Standalone** on a customer, from the customer tab. See [Grant customers credits](/credits/grant-credits).
* **Attached to a billing schedule phase**, as a recurring prepaid allowance tied to a contract. See [Credit-based billing](/billing/credit-based-billing).
Once the expiry date is passed and the balance is not zero, that grant cannot be used again.
There are a number of use cases where credits offer an elegant solution, including:
* Guaranteed prepayment
* Incentives to try or subscribe to a new product
## Getting started with credits
To begin using credit grants in Sequence, transfer your customers' existing credit balances. Create a credit grant for each customer's current balance. Sequence will make draft invoices for new credit grants, but since it's a balance transfer, you can void the invoice.
**Example:**
Helios is a company that offers OCR tech to turn PDFs into structured data. They charge customers based on API calls. Some customers, like Acme Corp, bought prepaid API credits. Helios bills customers at the end of each month and starts using Sequence for usage-based billing in March 2023.
1. Acme bought 5000 API credits in January 2023.
2. By the end of February, Acme has 1732 API credits left.
3. To move the credit balance to Sequence, Helios' billing operator creates a credit grant for Acme for 1732 credits and voids the related invoice.
4. At the end of March, Sequence will automatically use this balance.
# Self-serve sign-up flow
Source: https://docs.sequencehq.com/customers/building-integration
Using the Sequence API in your self-serve sign-up flow
If you're looking to automate billing for customers who self-serve sign up or upgrade, setting up a connector between your onboarding or checkout flow and Sequence is essential.
### Sign-Up flow
Automatically bill a customer via Sequence once they've signed up via your website.
Your customer visits your website and selects a pricing plan. They enter their details, including payment information, for example via a white-labeled Stripe checkout form. Use the [Customers](/reference/latest/customer/create-customer) endpoint to create a customer record in Sequence.
If you're using Stripe to collect payment details from your customers during onboarding, you can [associate their Stripe payment details](/connectors/stripe#add-stripe-customers-as-part-of-your-onboarding) with your customer in Sequence.
Use the [Billing schedule endpoint](/reference/latest/billing/create-billing-schedule) to create and initiate the billing schedule based on the selected pricing plan. Learn more about self-serve pricing plans [here](/plans-products/self-serve-plans).
Sequence handles billing and invoicing, auto-charging customers since payment details are stored.
### Upgrade flow
When a customer upgrades to a different plan, use the [Billing Schedule update endpoint](/reference/latest/billing/update-billing-schedule) to update their existing billing schedule and account for the new pricing plan by adding a new phase to the schedule.
Manual review may be necessary to ensure proper handling of the changes.
Speak to the Sequence to get help in designing your self-serve sign-up connector.
# Create customers
Source: https://docs.sequencehq.com/customers/create-customer
Create customers via the dashboard, API or import from connectors
Use the dashboard or the Customers API to create customers in Sequence. To create a customer in Sequence, the following fields are required:
* Company name
* Billing details (primary contact and billing address)
* Tax status
Sequence uses the company name and billing details you provide when creating customer invoices. When you're creating a new customer, the provided contact is automatically marked as the primary billing contact and will receive invoice notifications.
1. Go to the [Add new](https://dashboard.sandbox.sequencehq.com/customers) button and click Customer.
2. Fill in your customer details and Submit the form.
### Use the create customer endpoint:
Use the [Create Customer](/reference/latest/customer/create-customer) endpoint
```bash cURL theme={null}
curl --request POST \
--url https://sandbox.sequencehq.com/api/customers \
--header 'Authorization: Basic ' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '
{
"address": {
"line1": "Credit Now",
"line2": "3180 18th St",
"town": "San Francisco",
"postCode": "94110",
"country": "US"
},
"legalName": "Sam Lawford",
"taxStatus": "TAXED",
"contacts": [
{
"name": "John Smith",
"email": "john.smith@example.com",
"billingPreference": "PRIMARY"
}
]
}
```
## Managing contacts
Sequence uses contacts to make it easy to store multiple email addresses for a given customer. Contacts may be imported from a third party connector such as your CRM or added from scratch and can be used as recipients for quotes or for invoices.
A primary billing contact is required for third-party connectors. You can mark any contact as the primary billing contact.
## Defining customer aliases
Customer aliases allow you to associate your own identifiers to a customer, which you can use when sending usage data to Sequence. By default, the Sequence ID for the customer is a valid alias.
If your product doesn't include usage-based fees, or you are happy referencing customers by their Sequence ID in your usage data, leave this field blank.
Customer aliases allow you to decouple submitting usage data from billing. Use your native identifier for your customers when submitting usage and avoid maintaining a mapping to Sequence IDs on your end.
For example, you can use customer aliases to track usage for customers that have not yet been created in Sequence, or represent relationships between users of your product and customers paying for that usage,
if those as separate entities in your system.
Customers in Sequence can have any number of aliases. Each alias must be globally unique.
View the [Usage examples](/metrics-events/examples) guide to learn more about how usage events map to your customers.
## Archiving customers
You can archive customers via the dashboard. When you archive a customer, all billing schedules for the customer will be archived and any remaining draft invoices will be voided. Finalized and sent invoices will remain.
# Parent child hierarchy
Source: https://docs.sequencehq.com/customers/create-customer-relationships
You can create parent-child relationships between your customers in Sequence using the Dashboard or the Customers API. This allows for consolidated billing across a hierarchy of customers. Use parent-child relationships to bill a parent customer for their child customer's usage (see [roll-up billing](/billing/roll-up-billing))
1. Add a New Customer:
* Click the [Add new](https://dashboard.sandbox.sequencehq.com/customers) button and select Customer.
* In the customer details drawer, select the parent customer from the Parent dropdown.
* Click Add New to save.
2. Edit an Existing Customer:
* Find the customer you want to edit and click Edit Customer.
* In the customer details drawer, select the parent customer from the Parent dropdown.
* Click Update to save changes.
### Use the create or update customer endpoint:
You can [Create Customer](/reference/latest/customer/create-customer) with a specified `parentId`
```bash cURL theme={null}
curl --request POST \
--url https://sandbox.sequencehq.com/api/customers \
--header 'Authorization: Basic ' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '
{
"parentId": "0347cfb1-d6c3-4c1e-a5b6-f2a83553e70d",
"address": {
"line1": "Credit Now",
"line2": "3180 18th St",
"town": "San Francisco",
"postCode": "94110",
"country": "US"
},
"legalName": "Sam Lawford",
"contactName": "Sam Lawford",
"email": "billing@creditnow.com",
"telephone": "02010001000",
"paymentReference": "John halls",
"label": "First US customer"
}
```
Or [Update an existing customer](/reference/latest/customer/update-customer) to specify a `parentId`
```bash cURL theme={null}
curl --request PUT \
--url https://sandbox.sequencehq.com/api/customers/74e28294-7636-4eb1-949c-0f7f8f31e2d5 \
--header 'Authorization: Basic ' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '
{
"parentId": "0347cfb1-d6c3-4c1e-a5b6-f2a83553e70d",
"address": {
"line1": "Credit Now",
"line2": "3180 18th St",
"town": "San Francisco",
"postCode": "94110",
"country": "US"
},
"legalName": "Sam Lawford",
"contactName": "Sam Lawford",
"email": "billing@creditnow.com",
"telephone": "02010001000",
"paymentReference": "John halls",
"label": "First US customer"
}
```
To see what child accounts are associated with a parent, view the customer detail page.
# Customer portal
Source: https://docs.sequencehq.com/customers/customer-portal
Unlock a branded portal for customers to view past invoices, usage and credit balances
## Overview
Sequence provides a branded customer portal including a history of invoices, usage and credit transactions. Make it easy for your customers to view outstanding, overdue and paid invoices. Provide a transparent billing experience and provide your customers with a visual overview of usage events they're billed for, grouped by billing period.
### Accessing the customer portal
To view the portal for a specific customer, navigate to a customer from the Sequence dashboard and copy the link. You can also view an invoice in the customer portal directly from the invoice view in the dashboard.
#### Portal authentication
Customer portals are authenticated to ensure secure access. When someone accesses a portal link, they'll be prompted to log in using their email address. Once they enter their email, they'll receive a login link to access the portal.
Only contacts associated with the customer object and members within your Sequence account can access the customer portal.
### Customize the portal
Add your company logo to your customer portal to ensure your billing experience is on brand. Link back to your app by configuring your application URL in dashboard settings. You can optionally also choose to disable the customer portal via the merchant tab in the settings page.
### Sharing and embedding a link
To **share** the portal, simply share the portal link with your customer. Customer portal links are obscured and unique per customer (via the unique id of a customer). This approach is also used by payment and accounting providers like Stripe and Xero.
Example customer portal link: `https://portal.sequencehq.com/customers/{unique_id}`
To embed a link to the customer portal in your app, use the Sequence API [Customers endpoint](/reference/latest/customer/list-customers) and insert the relevant customer id.
## Invoice history
The Invoices tab includes an overview of outstanding, overdue and paid invoices. Enable the Stripe connector to collect payments directly from the customer portal.
Only `Sent` invoices are displayed in the customer portal.
Invoice email notifications sent to your customers also include a link to view the invoice in the customer portal.
## Usage overview
The usage tab provides a real-time overview of usage events per billing period. If your pricing uses multiple metrics, each metric is displayed separately.
## Credit overview
The credits tab shows credit balances and transactions over time. Learn more about [credit grants](/credits/overview).
The credits tab is only visible if you have granted credits to a customer.
In the below example, `AcmeLabs` have granted their customer `Globex` 250 account verification credits on July 20. `Globex` have verified 6 unique accounts in August, reflecting as a pending debit of 6 credits. Once the August invoice is finalized, the credits will be deducted from `Globex` balance.
# Exporting data
Source: https://docs.sequencehq.com/data/exporting-data
Connect Sequence to your data stack
You can export all your Sequence data to a wide range of destinations, such as data warehouses and Google Sheets.
Use data exports to connect your billing and invoicing data to other internal sources, leverage your existing data tools for analysis and reports, and build custom applications.
Head to the [connector guides](/connectors/data-overview) to learn how to set up your destination
and what data you will receive.
Data exports run every 24h. Higher export frequencies can be configured upon request.
# Insights dashboard
Source: https://docs.sequencehq.com/data/insights-dashboard
Track of all your billing and usage metrics in one place
The insights tab of the Sequence dashboard contains a series of charts displaying key billing and
usage metrics. This allows you to quickly spot trends and anomalies, identify customers that need
action, and monitor the overall health of your billing.
Select the time period to globally apply to all charts from the drop-down menu at the top.
### Charts
Some charts are segmented by a dimension, for example the invoice currency.
Use the drop-down menu on the top-right of the chart to select a specific segment.
Number of customers with/without an active billing schedule. Hover over customers
without a billing schedule to see a breakdown between customers that never had
an active billing schedule and ones that were billed in the past but are no longer billed.
Total gross invoiced amount across all customers, by month. Segmented by currency.
Breakdown of outstanding invoices by aging bucket. Click on a row to get a list of invoices
in the bucket. Segmented by currency.
Total number of usage events across all customers, by day. Segmented by event type.
Total usage metric value across all customers, by day. Segmented by usage metric.
# Concepts
Source: https://docs.sequencehq.com/getting-started/concepts
Get to know Sequence by understanding the basics
Create new customers via API, dashboard or via a connector. Optionally define parent-child hierarchies between customers.
A schedule ties one or more prices to a customer over a period of time, reflecting their contract.
Products are the specific SKUs in your business. Products are the parent
object of prices.
Prices reflect the different price-points of a product across your customers. Sequence supports a breadth of pricing models (recurring,
usage-based, seat-based, etc).
Create one-time invoices or auto-generate invoices with billing schedules. Send invoices and credit notes via email, PDF or as a link.
Usage events represent units of usage you charge for. Metrics aggregate events into overall usage measure (e.g. total API calls).
Quotes are pricing proposals sent to customers and can be e-signed. Accepted quotes can automatically be billed.
Sequence provides native CRM, ERP, data warehouse, payment, and e-signature connectors.
# Migration
Source: https://docs.sequencehq.com/getting-started/migration
Outgrowing your current billing solution?
Seamlessly migrate from Stripe, Chargebee or Maxio. Our team will help you make the switch. Speak to our team and learn how dozens of B2B companies have migrated to Sequence. We typically migrate a business in a few weeks. Our fastest Stripe migration to date has been \< 3 days.
**Successfully migrate to Sequence:**
Proven, vendor-specific migration program
Migration tools and templates for rapid data transfer
Whiteglove migration service, provided by our team
See how Sequence compares to [Stripe](/migration/stripe-billing), [Chargebee](/migration/chargebee) and [Maxio](/migration/maxio).
Learn how Heron data migrated hundreds of customer contracts to Sequence
### What data can be migrated?
* Customers and customer details
* Subscriptions, billing schedules and contracts
* Product catalog and price book data
* Invoices
* Usage events and metrics
* Customer balances
* Connector links
### Frequently asked questions
**Can I import my existing customers?**
Yes. We provide templates to import customers in bulk. Alternatively, customers can be imported from the CRM or ERP.
**If I'm using Stripe, will my customers need to re-enter their payment details?**
No, you can continue to use payment details that are on file.
**Is it possible to run Sequence in parallel for a month?**
Yes. This is a common path for companies who want to have a direct comparison with their current process, before completing the switch.
**What about historical invoices and usage data?**
Billing schedules in Sequence create backdated invoices to ensure you have a complete picture of past and current billings for every customer. You can optionally also upload historical usage data.
# Onboarding
Source: https://docs.sequencehq.com/getting-started/onboarding
Recommended steps before rolling out Sequence in Sandbox and Production
Sequence provides a sandbox and production environment so you can go through billing test runs without connecting to your production infrastructure.
**Sandbox**: `https://dashboard.sandbox.sequencehq.com`
**Production**: `https://dashboard.sequencehq.com`
The typical implementation timeline is 4 weeks. A test billing run can be achieved in less than one week.
A member from our team will get back to you in under 12 hours.
We'll send you a brief onboarding survey to gather your business information and configure your account.
Import your customer base from your Accounting suite or CRM. Integrate with other tools in your stack.
If your pricing is usage or seat-based, our technical team will work with you to design metrics and events and ingest a usage data sample. Usage data can be pushed into Sequence via API, Data warehouse or as a csv file.
Configure billing schedules for a handful of your customers.
Start billing and review auto-generated in-progress invoices for each of your customers.
Our technical team will work with you towards a go-live date.
## Migration service
If you currently use a billing provider, Sequence will support white glove onboarding of existing pricing plans, subscriptions and customer details onto Sequence.
# Sequence
Source: https://docs.sequencehq.com/getting-started/overview
Start automating your manual billing process and unlock error-free revenue collection at scale
Having a reliable revenue system matters. Sequence helps technology companies run a seamless quote to revenue process, from signed customer to recognized revenue in the ERP, and every workflow in-between.
## Learn more
**Sandbox**: `https://dashboard.sandbox.sequencehq.com`
**Production**: `https://dashboard.sequencehq.com`
Explore product guides below, view our [API documentation](/reference/gettingStarted) or speak to a member of the team.
}
href="/billing/create-billing-schedules"
>
Create billing schedules to automatically invoice customers
}
href="/invoicing/invoicing-customers"
>
Create, edit and issue invoices and credit notes
}
href="/plans-products/subscription-pricing"
>
Add products and define your pricing model
}
href="/metrics-events/usage-events"
>
Ingest and track usage events
}
href="/metrics-events/usage-metrics"
>
Define how to measure usage events in your billing process
}
href="/cpq/create-quotes"
>
Create, publish and sign quotes and proposals
# Issue credit notes
Source: https://docs.sequencehq.com/invoicing/credit-notes
Use a Credit Note to make corrections to previously issued Invoices
If you need to correct a previously issued invoice, you can issue a credit note to maintain an audit trail. You can create credit notes from scratch, or against issued invoices.
To create a credit note, view a sent invoice and select `Create credit note` in the top right. Next, select the line items on the invoice that you want to credit to your customer. The credit note will include the related invoice number, date and credit amount.
The Credit Note Editor provides the same flexibility as the Invoice editor. Any credited line item can be adjusted until the credit note is finalized.
## Create a credit note
1. Go to the invoice you want to credit and select `Create credit note`.
2. Next, select 'edit line items' to select the items to credit.
3. Preview the credit note PDF
4. Finalize the credit note and issue it to your customer
1. Go to credit notes and create a new draft credit note.
2. Add credit line items and issue the credit note.
## Adding cash credits
When you're issuing a credit note to your customer, you have the option to top up their balance with a cash credit for the credited amount. You can view available credits in the credit grant section on each customer's detail page. Available cash credits are automatically applied to subsequent invoices until all cash credits are used up.
Alternatively, you can issue credit notes to correct issued but unpaid invoices. In this case, your customer will need to reconcile the credit note and previously issued invoice to pay the correct amount.
# Apply invoice discounts
Source: https://docs.sequencehq.com/invoicing/invoice-discounts
Invoicing is the process of issuing a bill to a customer for goods or services that have been provided.
Easily add one-off invoice discounts using the invoice editor to provide customers a fixed amount off their bill.
**Discounts and partial billing periods**: When applying discounts to invoices with prorated charges, percentage and fixed discounts behave differently.
**Example**: For a £500 monthly charge prorated to 15 days (£500 \* 15/30 = £250):
* A 10% discount applies to the prorated amount: £250 \* 10% = £25 off
* A £100 fixed discount applies in full: £100 off (regardless of proration)
# Invoicing customers
Source: https://docs.sequencehq.com/invoicing/invoicing-customers
Automatically create invoices, make adjustments and sync with your Accounting suite.
Sequence provides a flexible, compliant invoicing solution. Automate invoicing with billing schedules or create one-off invoices in the dashboard. Invoices can be found in the ‘Billing’ tab. You can sync invoices and credit notes with your Accounting & ERP systems using our native [connectors](/connectors/accounting-overview).
Sequence automatically calculates line items (including usage-based charges) for invoices from billing schedules. Line items correspond to prices associated with the billing schedule.
Invoices include a cover page with business and customer details, charges summary, payment info, and a customer memo. The second page shows line item groups and individual line items.
Customize the style of your invoice and credit notes to keep billing and invoicing experiences aligned with your brand. Reach out to a member of the team to set your color theme and add your company logo to invoices and credit notes issued to customers.
Sequence supports regular sales tax, reverse charge and tax exempt invoices. When a reverse charged customer is invoiced, the invoice includes a label indicating the invoice is subject to reverse charges as well as the tax id of the buyer (if provided). A zero tax rate is applied to reverse charged invoices.
Sequence automatically generates incremental invoice numbers with custom formats. Reach out to a member of the team to make a change to the format or numbering sequence. Alternatively, manually define your invoice number during invoice finalization.
## Managing invoices
Sequence supports multiple states to capture the lifecycle of an invoice, from initial creation to marking an invoice as paid. By default, new invoices are created as drafts. You can edit any part of a draft invoice, including line items and recipient information.
Sequence can send invoices directly to your customers. Sent invoices are delivered via email and include a PDF of the invoice (with your company email in CC).
**Invoices have the following status**: Upcoming, Draft, Final, Sent, Void
Upcoming invoices cannot be edited and will turn to `Draft` at the end of the billing period. Recalculate upcoming invoices to update its total based on latest usage.
Draft invoices can still be edited and updated.
Finalized invoices can no longer be edited. Finalized invoices will be synced with your Accounting system if you have a [connector set up](/connectors/accounting-overview). Finalize invoices if you prefer to send invoices from your ERP or Accounting system.
Sent invoices have been finalized and sent to your customer's billing contacts. Once sent, Sequence will update the sent and due date of the invoice as well as the status in your Accounting system to 'Issued' or 'Sent' (depending on which Accounting system you use). Equally, if you choose to issue the invoice via your Accounting system, the status will be updated to 'Sent' in Sequence. You can also mark an invoice as sent without triggering connector syncs (to ERP, for payment collection, etc). This is especially useful when backfilling historical invoices or when invoices are delivered via the customer portal (for example).
Indicates the invoice was voided and no payment is now expected on this invoice. Voiding is likely to be used where an invoice has had inaccuracies, as editing sent invoices is not permissible in most tax jurisdictions. Use void if you have raised a sales invoice in error and want to remove it from revenue, accounts receivable etc. Sent invoices can be voided if their payment status is unpaid. For audit purposes the voided invoice will still be listed in invoices.
## Sending invoices to customers
Provide customers a delightful billing experience and send branded invoices from Sequence. Send invoices individually, via a bulk workflow or fully automatically. When you send an invoice through Sequence, your merchant email address will be included in CC.
Invoice email notifications include a breakdown of the subtotals and a PDF attachment of the invoice.
Your customers can get a detailed view of the invoice by viewing it in their customer portal.
If you have Stripe enabled, your customers can go to the Stripe checkout directly from here.
## Editing invoices
Sequence is designed for financial operators and provides a flexible editor to make any adjustments to draft invoices. Rename, change rates and quantities or add/remove line items from invoices.
**Invoice adjustments:**
* Edit existing line items (Name, Rate, quantity, tax rate)
* Add new line item groups and line items
* Remove line items
* Apply [Invoice Discounts](/invoicing/invoice-discounts)
## Duplicate invoices
Duplicate existing invoices to quickly create new invoices with the same line items, customer details, and settings. Access the duplicate function from the invoice detail view or directly from the invoices table.
When you duplicate an invoice:
* All line items, pricing, and tax settings copy to the new invoice
* The new invoice is created as a draft
* You can modify any details before finalizing
## Upcoming invoices
With Sequence you can track upcoming invoices ahead of time. While an invoice is upcoming, you can recalculate it to account for new usage data. You can also see a preview of the line items and the invoice PDF. Upcoming invoices cannot be edited. Once the invoice date is reached, the invoice will change its status from **Upcoming** to **Draft**, at which point you can make changes or send the invoice to your customer.
## Payment status
Once an invoice has been finalized, you can update its payment status to one of the following options.
Default status for finalized invoices.
Mark invoices as paid if full payment has been received.
Mark invoices as uncollectible to keep track of bad debt that can be written off.
Mark invoices as partially paid if a partial amount has been paid.
If you reconcile invoice in your ERP or Accounting system, you can use our Xero or QuickBooks connector to automatically update the payment status in Sequence for invoices.
If you are using the Stripe connector, Sequence invoices with Stripe payment links are not automatically updated via your ERP or Accounting system. [Learn more](/connectors/stripe)
**Example invoice lifecycle:**
1. Sequence billing schedules creating draft invoices at month-end
2. Billing operator reviews and finalizes open invoices
3. Billing operator issues invoices to the customer
4. Payment is received
5. Invoices are marked as paid
## Payment reminders
Chase overdue invoices automatically with dunning workflows. Trigger a reminder sequence whenever an invoice is sent, set how many days before or after the due date each reminder goes out, and optionally route reminders for review before they reach the customer. See [Payment reminders](/agents/payment-reminders) to set one up.
## Recalculating invoices
Recalculating Invoices reduces the time spent on manual invoice updates, and makes it easier to test invoices in your sandbox environment.
Recalculate an invoice to update usage-based line items with new data. To recalculate an invoice, click the 'recalculate' option above the invoice preview.
Recalculating an invoice will regenerate the invoice using Sequence Billing Engine. Any manual changes made to the invoice will be discarded.
## Invoice numbering
Invoice numbers are generated when invoices or credit notes are finalized or voided.
By default Sequence will automatically generate your invoice and credit note numbers. These will be sequential, ensuring there are no gaps. The default invoice and credit note prefixes are `SEQ` and `SCN`. You can change the prefix in settings. We recommend using a separate numbering sequence to avoid any clashes with your Accounting suite or ERP. To adjust your starting number, reach out to the team. An invoice or credit note will be assigned a number when it is finalized or voided.
If you would rather specify the number each time you finalize/void an invoice or credit note then this is an option that can be set on your account. You will then be prompted to enter the number when you finalize or void an invoice/credit note. This can be useful if you are generating invoices in multiple systems and want to avoid duplicate numbers. An easier alternative is to use a different prefix in different systems. This way you can still benefit from Sequence's automatic numbering without risk of duplication.
## Invoice dates
This setting allows you to adjust Sequence invoice dates to match your current receivables and accounting process. Sequence supports three different accounting date settings for invoices.
1. **Billing date** (recommended): This will set the invoice date 'Billing date' to the day after the billing period. For example, if an invoice for a monthly rolling contract has 1st - 31st March as the billing period, the invoice date will be 1st April.
2. **Billing period end date:** Set the invoice date to the last day of a billing period. For example, if an invoice for a monthly rolling contract has 1st - 31st March as the billing period, the invoice date will be 31st March.
3. **Invoice issue date:** Set the invoice date based on when you chose to issue the invoice to your customer. For example if you issue your invoice on March 4th, the invoice date will be March 4th.
### Due date behavior
Choose whether an invoice's due date is anchored to its accounting date or its issue date. Payment terms are then applied on top of whichever date you pick. For invoices generated from a billing schedule, payment terms come from the [schedule's own setting](/billing/create-billing-schedules#payment-terms). For manually created invoices, payment terms come from your default payment terms above.
1. **Accounting date** (default): Calculate the due date from the accounting date set above, plus the invoice's payment terms.
2. **Invoice issue date:** Calculate the due date from the date you issue the invoice, plus its payment terms.
## Create a one-time invoice
1. Go to the [Add New](https://dashboard.sequencehq.com/plans) button and click Invoice
2. Add line items to the invoice
## Local invoice compliance
Ensure your invoices adhere to the laws and regulations of the involved countries. While Sequence supports a range of countries and currencies, please ensure you comply with local e-invoicing and regulatory requirements. For country-specific invoicing guidelines, view this example [guide](https://edicomgroup.com/electronic-invoicing/italy).
# MCP server
Source: https://docs.sequencehq.com/labs/mcp
Query your Sequence billing data from AI clients like Claude
Sequence's MCP server exposes your Sequence data to AI clients like Claude as a set of tools. Each tool wraps an existing Sequence API endpoint, authenticated via OAuth 2.0, so an assistant can fetch and reason over your billing data in response to a prompt, rather than you clicking through the dashboard.
## What it can do
Coverage maps to the objects you already work with: customers, invoices, credit notes, billing schedules, products, quotes, usage, taxes, collections, account, activity stream, and notifications, plus reporting tools like invoiced revenue and outstanding invoices.
So you can ask things in plain language and have the assistant pull and paginate through the data for you:
* "Get me all of my end-customers."
* "What's my outstanding invoice total?"
* "Show me this customer's billing schedule."
The MCP server is **read-only** as it stands. Today it's about querying and surfacing your data, not changing it.
### What's coming
* **Write capabilities**: the first write use cases (such as agent-driven customer record changes) are in design, and will ship with human review in front of any write.
## Before you connect
The MCP server is part of **Sequence Labs** and is off by default. An admin needs to switch it on in your Sequence dashboard before the connector will authenticate from Claude.
Go to [Settings > Labs](https://dashboard.sequencehq.com/settings/labs) in your Sequence dashboard.
Toggle on **Enable Sequence Labs** to opt in to early-access features.
Under **MCP server**, toggle it on. If you also want the [AR agent](/agents/ar-agent), toggle on **Enable AR agent** as well.
If **Enable Sequence Labs** and the **MCP server** aren't both switched on in [Settings > Labs](https://dashboard.sequencehq.com/settings/labs), the connector won't authenticate, even after you add it in Claude.
## Connect Sequence to Claude
Go to **Settings → Connectors** in Claude.
Browse or search the connectors for **Sequence**.
Add Sequence and authenticate with your Sequence account when prompted.
Ask Claude about your Sequence data in plain language. For example, "list my customers with outstanding invoices", and it'll pull it through the MCP.
# Labs
Source: https://docs.sequencehq.com/labs/overview
Where we prototype features for revenue automation
Labs is where we prototype features. These are things we're experimenting with: early prototypes and internal tools, published while we're still building and refining them. Some will never leave the lab; some will shape the future of revenue automation.
Labs projects are released to a small group of customers first while we refine them. If you'd like early access to something here, [speak to us](https://www.sequencehq.com/book-a-demo).
## How we build Labs
We see LLMs as useful at three levels, and we build deliberately across all of them:
1. **Slotted into specific product flows**, for example turning a contract into structured data.
2. **Running guided automations with human oversight**: multi-step workflows with tools, review, and audit.
3. **Operating autonomously**, where the guardrails are strong enough to let an agent run on its own.
These principles apply across all three levels, and they matter more the higher you climb:
Tools, context, and feedback loops are the biggest differentiators.
Someone has to see what the agent did, why, and have a path to override it.
Every agent should do one specific job before we widen its remit.
"Vibes are good" isn't enough. Track quality, latency, and cost at every layer.
## Prototypes
Expose your Sequence data to AI clients like Claude as a set of tools, so an assistant can fetch and reason over your billing data in response to a prompt.
Automatically extract customer details, pricing, and billing terms from a signed contract and set up the customer and billing schedule for review.
Action customer billing requests over email, from customer detail changes to invoice updates, with human review before anything changes.
## Get involved
Labs gets sharper when the people who'd actually use these agents push back.
See how Sequence agents work with your billing workflows.
# Examples
Source: https://docs.sequencehq.com/metrics-events/examples
Usage events and metrics are a flexible framework for representing a wide range of usage-based pricing models
## Transaction volume
CloudPay is a FinTech company that provides open banking and payment infrastructure. They process payments for their customers in multiple currencies and support a range of payment methods, such as bank transfers, direct debits and credit cards. They charge a fixed percentage of each transaction, regardless of the currency and payment method.
To implement this pricing model in Sequence, CloudPay sets up usage events and metrics as follows:
* Each event represents an individual transaction, and carries information about the transaction amount, currency and payment method. Even though the payment method is not used in the current CloudPay pricing model, it is included in case the company decides to charge different fees depending on the payment method in the future.
* The usage metric is defined as the SUM of the amount over all transaction events. To avoid summing together amounts in different currencies, CloudPay creates two separate metrics, one filtered by `currency = GBP` and the other for `currency = USD`. These two transaction volumes can later be converted to the same currency, which the customer will eventually be charged in.
## API calls
Helios is an API-first company offering OCR technology for parsing PDF documents into structured data. They have specialized endpoints for various document types, such as receipts, contracts and resumes. They charge their customers a fixed amount each time an API endpoint is called and it successfully parses the document (returning a 200 response code). They charge the same amount for all their endpoints, but they would like to display the number of API calls to each endpoint on their invoice.
To implement this pricing model in Sequence, Helios sets up usage events and metrics as follows:
* Each usage event represents an individual API call, and carries information on the endpoint, response code and payload size. Even though the payload size is not used in Helios’ current pricing model, it is included in case the company decides to charge a higher rate for large documents in the future.
* The usage metric is defined as the `COUNT of api_call` events, filtered by the condition that the response code is 200 (since only successful calls are charged). Because the aggregation is a raw count, the aggregation property is left blank. Finally, in order to display a breakdown by endpoint on the invoice, the endpoint property is specified as the grouping property.
## Active users
Datalytics is a BI tool for building and viewing dashboards. When a company buys Datalytics, everyone in the company gets access to the tool, but Datalytics charges the company only for active users, where ”active” is defined as having logged at least one session in the last month. Users also have different roles (e.g. admin, developer, viewer), and the charge per user depends on the role.
To implement this pricing model in Sequence, Datalytics sets up usage events and metrics as follows:
Each event represents an individual user session, and includes the user ID and role.
The usage metrics count the number of `UNIQUE user_ids` over all user\_session events. Therefore, if a user has multiple sessions in the period that the metric is calculated for, it will only contribute 1 to the final value. Additionally, because active users are charged a different fee depending on their role, Datalytics creates a separate metric for each user\_role, adding a filter to select only users with that role.
# Overview
Source: https://docs.sequencehq.com/metrics-events/overview
Track your usage data in real time and seamlessly integrate it with billing
If your pricing model has a variable component based on usage for one or more [products](/plans-products/usage-based-pricing), you can express that in Sequence via [usage events](/metrics-events/usage-events) and [usage metrics](/metrics-events/usage-metrics).
Usage events are basic units of product usage – for example: an API call, a transaction processed, a user session. Each usage event belongs to one of your customers and includes contextual information in the form of the event type and properties.
Usage metrics measure overall usage by aggregating multiple usage events – for example: the total number of API calls, transaction volume, active users. Metrics are scoped to a specific customer and time period, and can include filters and breakdowns based on event properties.
Sequence updates usage metrics in real time as customers use your product. At the end of each billing period, the total usage for each of your customers is combined with a price to calculate the corresponding charge on the invoice. To see how it all works together, see the [examples](/metrics-events/examples), or jump right in with the quick start.
The usage endpoint is strictly rate limited by default. Get in touch with our team to access higher rate limits.
## Quick start
**1. Create a few usage events for a customer:**
* Head to the Usage > Events section in the dashboard and click "New usage event"
* Select a a customer to assign this event to, and pick the event timestamp to be sometime in the past, e.g. last month
* Pick an event type, (e.g. "api\_call") and optionally add some event properties as key-value pairs
* Repeat the last step a few times to generate a few test events. You will see them appear on the events table
**2. Create a usage metric to aggregate the events:**
* From Usage > Metrics, click "New usage metric"
* Give the metric a name (e.g. “API calls”) and optionally a description
* Select the event type you defined in step 1 from the drop-down, and select "Count of usage values" as the aggregation type
**3. Preview the usage metric calculation:**
* After adding the usage metric, select it from the Metrics table to enter the preview window
* Select the customer the customer that you generated events for in step 1, and pick a time window to calculate the metric over
* Click "Calculate". The preview will show the number of usage events found for the given customer in the selected time window
**4. Create a usage-based billing schedule:**
* From the Schedules tab, click "New schedule"
* Select your customer, and add a new product to the schedule by clicking "Add product > Create new"
* Select "Linear" as your pricing model
* Give this product a name (e.g. “API usage”) and select the metric you created in step 2 as the “Usage metric”
* Pick a price per unit, which is the amount to be charged for each usage event
* Select a start date in the past for the billing schedule, covering the period you generated events for. Click "Start schedule"
**5. Generate usage-based invoices:**
* Navigate to the Invoices tab to see the backdated invoices for the billing schedule you just created
* Click on one of the invoices to see a usage chart and the associated charges
* 🎉
## Frequently Asked Questions (FAQ)
#### How do customerEventIds work?
Sequence operates under the general principle that multiple events with the same customerEventId can be submitted, but only the latest event for each customerEventId is included in usage metric calculations.
“Latest” here is relative to the time at which the usage metric is calculated. This is usually “now”, but could also be set to a time in the past, in which case the calculation reflects the state of the world at that point in time.
#### Is it possible to send events with a back-dated consumption timestamp and re-calculate billing of the previous or the current month?
Yes. Note that you can only recalculate invoices/bills that have not been issued to a customer yet, so this won’t affect an invoice that has already been issued. You can however recreate the billing schedule and invoice should you need to 're-bill' for an already billed period.
Be especially careful with [on-demand billing](/billing/on-demand-billing) (hourly or daily): invoices there are issued automatically as each window closes, so the window for a back-dated timestamp may already have been invoiced. Moving an event into an already-invoiced on-demand window will double-count it. The original invoice isn't corrected and the event is billed again in its new window.
#### Can events be deleted via the UI or API and then re-calculate the billing?
At the moment this is only supported via API. Sequence does not explicitly support deleting events via the API, but any past event can be overwritten by resubmitting the event with the same customerEventId. If needed, our support team can also delete events for you.
#### Does the customerEventId field act like an idempotency key?
While not strictly an idempotency key, it is functionally similar **for monthly and on-demand (hourly/daily) billing**, which aggregate usage. Sending multiple events with the same customerEventId will result in distinct objects in Sequence, but only the latest event will be considered for the purpose of usage metric calculations.
If you send 2 events with the same customerEventId Sequence will respond with 200 (as long as the events are valid) and distinct object IDs in the response. The behavior is the same whether the event data is identical or not. If you send 2 events with the same customerEventId but with different values Sequence will only take into account the latest event.
This does **not** apply to [per-event billing](/billing/per-event-billing), which bills each submission independently as its own invoice and does not deduplicate by `customerEventId`. If you send 2 events with the same customerEventId under per-event billing, the customer is charged twice. Do not use `customerEventId` as an idempotency key when retrying under per-event billing.
# Usage events
Source: https://docs.sequencehq.com/metrics-events/usage-events
Usage events are the units in which product usage is measured
Sequence models usage as a series of events, each capturing an interaction of a customer with your product. A usage event in Sequence looks like this:
```
{
"eventType": "transaction_processed",
"customerAlias": "customer-id-2H4u5BBwBWsS5V2sroRFqJfTXpW",
"eventTimestamp": "2022-10-01T00:00:00Z",
"customerEventId": "event-id-H4twuTWpYx1rkd8OMTki2hTUcZ",
"eventProperties": {
"amount": 500,
"currency": "GBP",
"method": "bank_transfer"
}
}
```
### Event type
`eventType` is the top-level category for the event, and describes at a high level what happened. Only events of the same type can be aggregated together via usage metrics. Think of event types
as mutually incompatible categories that should not be mixed in aggregations. If you have slightly different events that you might want to combine in the same metric, give them the same event type,
and rely on event properties to distinguish them.
As a rule of thumb, events of the same type should have the same set of properties (i.e. the same schema)
### Customer
`customerAlias` identifies the [customer](/customers/create-customer) that the event belongs to. It can be either:
* The ID of a Sequence customer object
* One of the [customer aliases](/customers/create-customer#defining-customer-aliases) associated with a Sequence customer object
Use customer aliases to reference customers via your own internal IDs instead of the Sequence ID when sending usage data to Sequence, if that's your preference.
You can also use customer aliases to represent relationships between users of your product and customers paying for that usage, if those are separate entities in your system.
Customer aliases must be globally unique.
### Event timestamp
`eventTimestamp` determines the billing period in which this usage will be charged.
Timestamps must be strings in ISO 8601 format, e.g. *“2019-09-07T15:00:00Z”*
### Customer event id
`customerEventId` is a unique identifier for the event that you can optionally set, and is otherwise auto-generated by Sequence.
If multiple events with the same customer event ID are received, only the last one will contribute to usage metric calculations.
Use customer event IDs for debugging, as idempotency keys when retrying the same event multiple times, or to intentionally override previously sent events
### Event properties
* `eventProperties` are arbitrary key-value pairs providing additional metadata for the event.
Use properties to express quantities to be aggregated in usage metrics (such as a transaction amount) or categorical attributes for filtering/grouping (such as a payment method)
**Numerical values** (such as transaction amount, duration, size, etc) must conform with ISO 31-0. Digits cannot be separated by commas. Points are reserved for use as the decimal sign. Incorrect event properties are not included in usage aggregations.
## Designing events
Although usage events are the foundation of usage-based billing, in Sequence they are intended to purely describe product
usage, not the corresponding charges – the latter is the job
of [usage metrics](/metrics-events/usage-metrics) and [prices](/plans-products/usage-based-pricing).
Use as many event types and properties as needed to suitably describe how your customers are interacting
with your product, even if some of this data is not not relevant your current pricing model. Some of this data
may not be relevant to your billing today – that's okay! Having richer events will allow to get a more comprehensive
view of your usage in Sequence, unlock opportunities down the line to more easily evolve your pricing, and even
test pricing changes against historical data.
As a general rule, Sequence works best if you define events at the most granular level possible, i.e. each event corresponding to an
individual charge, and letting Sequence handle aggregations. While pre-aggregating on your end at a daily or monthly frequency
can be reasonable in some scenarios, it will generally cause friction when iterating your pricing
in ways that require changes to the aggregation logic, like switching from a raw count of events to a sum of an event property,
differentiating your pricing over more granular groups, or changing the billing frequency.
On the other hand, sending individual usage events helps make your usage data more generic and keep all your billing logic within Sequence,
which allows you to iterate on pricing with just a few clicks in the Sequence dashboard.
## Sending events to Sequence
There are 2 ways you can send usage events to Sequence:
1. Send events to Sequence programmatically via the API as they happen in your application:
```
curl --request POST \
--url https://eu.sequencehq.com/api/usage-events \
--header 'Authorization: your_token' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"eventType": "transaction_processed",
"customerAlias": "customer-id-2H4u5BBwBWsS5V2sroRFqJfTXpW",
"eventTimestamp": "2022-10-01T00:00:00Z",
"customerEventId": "event-id-H4twuTWpYx1rkd8OMTki2hTUcZ",
"eventProperties": {
"amount": "500",
"currency": "GBP",
"method": "bank_transfer"
}
}
'
```
If you are uploading a large number of events programmatically, we recommend adding concurrency
to your script for better performance.
2. Upload usage data manually in batches as CSV files. Get in touch with the Sequence team to get
a CSV template to help you format your data.
Before starting to ingest your production data, you can also create test usage events directly
in the dashboard by clicking "Add new" from Usage > Events.
## Editing events
Because previously ingested events may have contributed to issued invoices, usage events are
currently treated as immutable in Sequence. It is however possible to
effectively override an event by posting a new event with the same `customerEventId`.
The original event will still exist in Sequence, but future metric calculations will only take the
last received event into account.
## Deleting events
Events cannot be deleted, however you can overwrite or edit events that are no longer relevant (see above). To void an event, resubmit the event with the same `customerEventId` and update its customer alias to `VOID`. Alternatively, you can also adjust the timestamp to fall outside any billing periods or change the `amount` to zero (in the case of a transaction event).
## Identifying unmapped customers
Sequence's usage infrastructure is agnostic to the billing process so you can submit usage events for customers that have not yet been created in Sequence. In that case, the usage events overview will show that the event has no matching customer alias. Once you map the customer alias of the event to a customer, the events can be aggregated as part of a billing run. On the usage events page in the dashboard, you can also filter out events that include a customer alias that is not mapped to any customer record.
# Usage metrics
Source: https://docs.sequencehq.com/metrics-events/usage-metrics
Usage metrics aggregate usage events into an overall measure of usage
A usage metric is a formula that aggregates a set of events into a single number representing total usage. To create a usage metric in the Sequence dashboard, click “Add new” and select “Usage metric”:
Give the metric a name and the type of usage events you want to aggregate – this should match the eventType in the [usage event](/metrics-events/usage-events) object.
All text matching in Sequence is case-sensitive. Make sure you use the same cases for event types in your usage event and metrics, and for customer aliases in your usage events and customers.
Then select how you want to aggregate the events; Sequence currently supports 3 aggregation types:
| Aggregation type | Requires aggregation property | Description | SQL equivalent |
| - | - | - | - |
| `COUNT` | no | Total number of events | *COUNT(\*)* |
| `SUM` | yes | Sum of a numeric property$(^1)$ | *SUM(properties\[‘property\_name’])* |
| `UNIQUE` | yes | Count of unique values of a property | *COUNT(DISTINCT properties\[‘property\_name’])* |
`SUM` and `UNIQUE` require you to specify an event property as the argument of the aggregation, enter the name of this property in the “Aggregation property” field.
When the billing engine runs, it calculates all usage metrics for each of your customers over the last billing period. This calculated value is then combined with a price to determine the charge that will appear on the invoice.
1: Numerical values (such as transaction amount, duration, size, etc) must [conform with ISO 31-0](/metrics-events/usage-events#event-properties).
## Filtering
You can further refine the scope of a usage metric using filters. A filter limits the aggregation input to events that match a specific event property value. For example, if your events have a property called `method`,
you can filter your metric to events where `method = card_payment`:
If multiple filters are specified, only events matching all filters are included in the metric calculation.
## Grouping
Use grouping to customize the layout of a usage-based charge on an invoice by breaking down usage by an event property.
For example, grouping by `method` will let you display the usage for `method = card_payment` and `method = direct_debit` on separate lines on the invoice.
To learn more about customizing your invoice layout via grouping, reach out to the Sequence team.
Grouping has been deprecated until further notice. Use parent-child customer hierarchies and roll-up billing to break down usage by child account instead.
## Editing metrics
Updating and deleting usage metrics is currently only supported via the API. Making changes to a metric will not retroactively affect invoices already created.
To update or correct existing invoices after changing a metric, [recalculate](/invoicing/invoicing-customers#recalculating-invoices) a draft invoice, or issue a [credit note](/invoicing/credit-notes) against an issued invoice.
## Usage calculation period
When your pricing includes graduated usage tiers, you can just the usage calculation period to achieve more advanced usage based pricing scenarios, such as billing for monthly overages over an annual running total of customer usage.
**Options**:
* **Billing period (default)**: Usage is calculated for each billing period.
* **Cumulative usage**: Usage is counted from the billing schedule start date and accumulates with each billing period.
* **Quarter**: Usage is counted over a quarterly period. Tiers in each billing period are based on quarterly usage.
* **Annual**: Usage is counted over an annual period. Tiers in each billing period are based on annual usage.
Example with a tiered pricing model (graduated), billed monthly in arrears:
* Tier 1: 0 - 100 events @ \$1 per event
* Tier 2: 101 - 500 events @ \$2 per event
In this worked example, assume the customer has 60 events each month.
**Billing period (default)**
* Month 1 bill: \$60
* Month 2 bill: \$60
* ...
* Month 12 bill: \$60
**Cumulative usage**
* Month 1 bill: $60 (60 events \* $1)
* Month 2 bill: $80 (40 events \* $1 + 20 events \* \$20)
* Month 3 bill: $120 (60 events \* $2)
* Month 4 bill: $120 (60 events \* $2)
...
**Quarter**
* Month 1 bill: $60 (60 events \* $1)
* Month 2 bill: $80 (40 events \* $1 + 20 events \* \$20)
* Month 3 bill: $120 (60 events \* $2)
* Month 4 bill (usage resets): $60 (60 events \* $1)
**Annual**
**Cumulative usage**
* Month 1 bill: $60 (60 events \* $1)
* Month 2 bill: $80 (40 events \* $1 + 20 events \* \$20)
* Month 3 bill: $120 (60 events \* $2)
* ...
* Month 1 (year 2): $60 (60 events \* $1)
## Custom metrics
Sequence supports custom usage metric formulas and parameters for more advanced usage aggregation scenarios. Ingest raw usage data and let Sequence handle complex data mapping and calculation logic. Speak to our team to learn more about custom metrics.
**Custom metrics**:
Custom metrics allow for advanced usage aggregations expressed as formulas.
**Parameters**:
Parameters can be used in custom metrics as variables that can be set when a price is configured for a customer. For example, if you have a custom metric to calculate a ratio, you can optionally include a parameter to set the specific ratio on a per-customer basis.
# Chargebee
Source: https://docs.sequencehq.com/migration/chargebee
Considering a switch? Learn why customers chose Sequence over Chargebee
## What is Chargebee?
[Chargebee](https://www.chargebee.com/) is a widely adopted subscription management and billing platform, particularly popular among SaaS companies. Since its founding in 2011, Chargebee has emerged as a leader in subscription billing, offering a comprehensive suite of tools for invoicing, revenue recognition, and subscription management. However, Chargebee's complex price configuration UI, scalability limitations, and steep learning curve may present challenges for businesses, especially those with advanced or expanding billing needs.
## What is Sequence?
[Sequence](https://www.sequencehq.com/) is an integrated billing, quoting and revenue recognition platform for Finance teams at B2B SaaS companies with modern pricing models such as usage-based pricing. Sequence was founded in 2021 and is backed by [Andreessen Horowitz](https://a16z.com/) and [Salesforce Ventures](https://salesforceventures.com/).
## Key differences between Sequence and Chargebee
#### Built for modern pricing models
Chargebee is a flexible platform capable of handling various subscription models, but it may become cumbersome for businesses with complex pricing needs. Its configuration process can be intricate and time-consuming, which may not be ideal for fast-growing companies.
Sequence is specifically designed for hybrid usage-based pricing and custom deal terms. This focus makes Sequence a more agile and scalable choice for SaaS companies looking to innovate without being bogged down by complexity.
#### Native support for usage-based pricing
Chargebee requires an integration with [m3ter](https://www.m3ter.com/) to fully support usage-based pricing models. While this integration enables usage-based billing, it introduces additional complexity, cost and dependency on a third-party solution. This can lead to more complicated implementation processes, potential integration challenges, and higher ongoing costs for businesses that rely heavily on usage-based pricing.
Sequence offers native, built-in support for usage-based pricing models, eliminating the need for third-party integrations. This ensures a seamless, fully integrated experience for managing dynamic pricing structures. With Sequence, businesses can easily implement and scale usage-based billing without the added complexity and potential risks associated with external dependencies. This native support simplifies operations, reduces costs, and enhances the reliability of your billing processes.
#### Fast Implementation and First-Class Support
Chargebee offers extensive features, but implementing them can be a lengthy process, particularly for businesses with specific customization needs. This can result in extended time-to-value and increased operational costs.
Sequence provides a fast implementation process, with most customers going live in under a month. Our dedicated support team is available via Slack. You receive tailored support before, during and after your implementation.
## Other Stripe Billing alternatives to consider
#### Maxio
[Maxio](https://www.maxio.com/) is a powerful subscription billing platform known for its comprehensive features aimed at traditional subscription models. However, its complex implementation and legacy components can result in a steeper learning curve, making it less ideal for businesses seeking quick deployment and modern usability. See [here](/migration/maxio.mdx) how Maxio compares to Sequence.
#### Stripe Billing
[Stripe Billing](https://stripe.com/billing) is a top choice for businesses integrated with Stripe’s payment system, offering seamless billing and invoicing. It's ideal for companies with straightforward subscription needs but may fall short in flexibility and advanced features required for more complex billing models. See [here](/migration/stripe-billing.mdx) how Stripe Billing compares to Sequence.
#### Zuora
[Zuora](https://www.zuora.com/) excels as a subscription management solution for large enterprises with complex billing needs. It supports a wide range of billing models and offers extensive automation, though its complexity may demand greater resources for implementation and management.
#### Recurly
[Recurly](https://recurly.com/) is a strong alternative for businesses prioritizing ease of use and quick setup. It offers a user-friendly interface and versatile integrations, making it easy to manage recurring billing. However, it may lack the deep customization options available in more advanced platforms.
# Maxio
Source: https://docs.sequencehq.com/migration/maxio
Considering a switch? Learn why customers chose Sequence over Maxio
## What is Maxio?
[Maxio](https://www.maxio.com/) is a subscription billing and financial operations platform. Maxio is the result of a merger between Chargify and SaasOptics, two companies who have each existed for over 15 years and have grown into household names in the subscription-billing economy in the last decade. They merged into Maxio in 2021, supported by [Battery ventures](https://www.battery.com/).
## What is Sequence?
[Sequence](https://www.sequencehq.com/) is an integrated billing, quoting and revenue recognition platform for Finance teams at B2B SaaS companies with usage-based pricing and custom deal terms. Sequence was founded in 2021 and is backed by [Andreessen Horowitz](https://a16z.com/) and [Salesforce Ventures](https://salesforceventures.com/).
## Key differences between Sequence and Maxio
#### Designed for modern pricing models
Maxio was originally built with a focus on traditional subscription billing and has had limited flexibility for more complex pricing models.
Even after the merger, its support for modern pricing approaches, such as usage-based billing, is still evolving. Maxio has only recently started to work with companies who require usage-based pricing.
Sequence is purpose-built for modern pricing models, including usage-based, hybrid, and dynamic pricing structures.
This makes it a more versatile choice for SaaS companies looking to innovate their revenue operations.
#### First-class support and fast implementation
Maxio is feature-rich but has a reputation for being difficult to implement, often requiring multiple quarters and dozens of hours of implementation calls to fully integrate.
This can slow down time-to-value and increase operational costs.
Sequence offers a fast implementation process that gets you up and running quickly. The average Sequence customer goes live in under 1 month.
Our dedicated support team ensures a smooth transition and provides ongoing assistance via Slack.
#### Product experience and user interface
Maxio's interface, inherited from its legacy components from Chargify and SaasOptics, can be complex and unintuitive, often requiring significant training and adjustment.
Sequence is designed with a modern, user-friendly interface that simplifies complex billing operations. Finance teams can manage and adjust billing workflows without extensive technical knowledge, reducing the learning curve.
## Maxio and Sequence in comparison
| | Maxio | Sequence |
| - | :- | :- |
| **Overview** | Established player in subscription billing through a 2021 merger of Chargify (2009) and SaasOptics (2009) | Backed by a16z and Salesforce Ventures, designed for modern pricing models and custom contracts |
| **Product** | Feature-rich but complex, focused on traditional subscription billing | Versatile platform supporting modern pricing, billing, and revenue recognition |
| **Pricing flexibility** | Limited support for advanced pricing models | Built for hybrid usage-based pricing and contracts with custom terms |
| **CPQ** | No sales quoting capabilities | Create, publish and sign custom quotes in minutes, with Sequence CPQ |
| **Developer APIs** | Fragmented, with legacy components (see [docs](https://developers.maxio.com/http/advanced-billing-api/api-endpoints/customers/create-customer)) | Consistent, developer-friendly APIs for seamless integration |
| **Support & Implementation** | Complex, multi-quarter implementation | Fast implementation (avg. under one month) with responsive support via Slack |
| **User experience** | Complex and legacy-based UI | Modern, intuitive UI designed for ease of use |
| **Reporting** | Subscription reporting features powered by SaasOptics. | Native data warehouse & BI tool integrations available for flexible revenue reporting |
## Other Maxio alternatives to consider
### Stripe Billing
[Stripe Billing](https://stripe.com/billing) is a top alternative for businesses already using Stripe’s payment processing. This platform provides a seamless billing and invoicing experience, ideal for companies with straightforward subscription needs. While Stripe Billing excels in ease of integration and simplicity, it may fall short on advanced features and the flexibility required for businesses with complex or usage-based pricing models. See [here](/migration/stripe-billing) how Stripe Billing compares to Sequence.
### Chargebee
[Chargebee](https://www.chargebee.com/) is a leading subscription management platform that’s widely used by SaaS companies. Known for its flexibility and comprehensive features, Chargebee supports robust subscription billing, invoicing, and revenue recognition. This platform is a strong choice for companies needing to manage complex pricing models, though its setup and customization can be more involved than other alternatives. See [here](/migration/chargebee) how Chargebee compares to Sequence.
### Zuora
[Zuora](https://www.zuora.com/) stands out as a powerful subscription management solution, particularly for large enterprises with complex billing needs. Zuora supports a wide variety of billing models and offers extensive automation capabilities, making it ideal for large-scale operations. However, the platform’s complexity may require a greater investment in implementation and management, making it more suitable for organizations with dedicated resources.
### Recurly
[Recurly](https://recurly.com/) is another strong alternative, particularly for businesses seeking a user-friendly subscription management and billing platform. Recurly offers a straightforward interface and a variety of integrations, making it easy to manage recurring billing. It’s especially appealing to companies that prioritize ease of use and quick setup, though it may lack the deep customization options found in some of the other alternatives.
# Stripe Billing
Source: https://docs.sequencehq.com/migration/stripe-billing
Considering a switch? Learn why customers chose Sequence over Stripe Billing
## What is Stripe Billing?
[Stripe Billing](https://stripe.com/billing) is a popular billing and subscription management solution designed to integrate seamlessly with the broader Stripe ecosystem. Launched to help businesses manage recurring payments, Stripe Billing is widely used by companies looking for a streamlined way to handle subscriptions. However, Stripe Billing's reliance on the Stripe Payments platform can lead to vendor lock-in, and its limited native support for complex pricing models like usage-based billing may pose challenges for businesses with more advanced billing needs.
## What is Sequence?
[Sequence](https://www.sequencehq.com/) is an integrated billing, quoting and revenue recognition platform for Finance teams at B2B SaaS companies with modern pricing models such as usage-based pricing. Sequence was founded in 2021 and is backed by [Andreessen Horowitz](https://a16z.com/) and [Salesforce Ventures](https://salesforceventures.com/).
## Key differences between Sequence and Stripe Billing
#### Flexibility and vendor lock-in
Stripe Billing requires businesses to use Stripe Payments exclusively, leading to vendor lock-in. This limitation can be restrictive, particularly in markets where alternative payment methods might offer better rates or compatibility.
Sequence offers flexibility by allowing integration with various payment processors, ensuring that businesses are not tied to a single provider. This flexibility is crucial for companies looking to optimize their payment processing strategies and reduce costs.
#### Native support for usage-based billing
Stripe has only recently added light-weight usage-based billing features. In many cases, businesses need to pre-aggregate usage data, which complicates the billing process and may limit scalability. Percentage or transaction-based pricing models are unsupported.
Sequence provides native, built-in support for usage-based billing, offering a seamless experience for managing complex pricing models. This reduces the need for additional processing steps on your side while ensuring billing is accurate and efficient.
#### Cost efficiency
Stripe’s pricing structure, which charges a percentage of transaction volumes, can become expensive as a business scales. The cumulative cost, including additional fees for other Stripe services, can significantly impact profitability.
Sequence offers a more predictable and scalable pricing model, designed to grow with your business without unexpected cost increases. This makes it a more cost-effective solution for companies looking to optimize their billing expenses.
#### Designed for sales-led businesses
Stripe is a solid choice for self-serve PLG businesses but struggles to deal with the complexity of custom contracts.
Sequence is designed from the outset to support the nuances of custom contracts and deal terms, alongside self-serve PLG pricing.
## Other Stripe Billing alternatives to consider
#### Maxio
[Maxio](https://www.maxio.com/) is a comprehensive subscription billing and financial operations platform resulting from the merger of Chargify and SaasOptics. It’s known for its robust feature set that caters to traditional subscription billing needs. However, Maxio can be complex to implement, with a lengthy onboarding process and a user interface that may require significant training. While it offers in-depth reporting capabilities, the platform might be less suited for businesses looking for a more modern, flexible solution or those needing quick implementation and ease of use. See [here](/migration/maxio) how Maxio compares to Sequence.
#### Chargebee
[Chargebee](https://www.chargebee.com/) is a widely recognized subscription management platform favored by SaaS companies for its flexibility and comprehensive feature set. It excels in handling complex pricing models, but the setup and customization process can be more involved compared to other options, potentially extending implementation times. See [here](/migration/chargebee) how Chargebee compares to Sequence.
#### Zuora
[Zuora](https://www.zuora.com/) is a robust subscription management solution, particularly suited for large enterprises with intricate billing needs. It supports a wide array of billing models and extensive automation capabilities, making it an excellent choice for large-scale operations. However, its complexity may demand greater investment in both implementation and ongoing management, making it more appropriate for organizations with significant resources.
#### Recurly
[Recurly](https://recurly.com/) is another strong alternative, especially for businesses looking for a user-friendly subscription management and billing platform. Recurly stands out for its intuitive interface and diverse integrations, simplifying the management of recurring billing. It’s especially appealing to companies that value ease of use and quick setup, although it may lack the deep customization options available in other platforms.
# Minimum fees
Source: https://docs.sequencehq.com/plans-products/minimum-fees
Use minimum fees to bill for a committed amount regardless of usage
Set up minimum fees to configure a committed minimum amount that is charged across one or more usage-based prices. For example, if you're charging \$0.1 per API call, you may want to set up a committed amount of \$500. If in a given month the customer's usage volume amounts to less than \$500, a true up charge will be added to the invoice such that the minimum is met.
Minimums are charged based on the billing frequency of the prices they apply to. For example, if you configure a minimum fee for a monthly recurring usage-based price, the minimum will also be monthly recurring.
## Applying minimums across products
You can apply a minimum fee across multiple usage-based products. For example, if you are charging for two different API products at different rates, you may want to configure a contracted minimum amount that applies across both products. If the sum of both usage-based charges does not meet the minimum, a true up charge is applied.
# Product catalog
Source: https://docs.sequencehq.com/plans-products/product-catalogue
Manage products and prices with the product catalog
Products in the product catalog represent the products or SKUs you’re selling to customers. The product catalog is the ultimate source of truth for your pricing.
In Sequence, the fees that apply for a product are called prices. One product can have multiple prices. For example, your Analytics product may have a EUR price and a USD price. You may also end up with multiple prices for the same product as part of your sales-led motion (sales reps negotiating different rates with customers, for example).
**Concepts:**
* Products are what you're selling to customers (e.g. Analytics suite)
* List prices are standard or default prices for a product (e.g. £500 per month)
* Price variants are the different price-points across your customers (e.g. £400 monthly for Acme Corp, £625 monthly for Solarstream)
When you're getting started with Sequence, you need to configure your products and one or more list prices per product.
## View products and prices
You can access your product catalog by selecting **Products** in the navigation.
View an individual product to see its list prices and price variants. In this example, you can see that `Analytics Product` has two list prices, and two price variants (one for Beta Ltd and one for Amara).
Select a price variant to get a more detailed view of the price and to see the different customers who are billed for it.
## Create list prices
For each product you're selling, configure one or more list prices (e.g. per currency or market segment). List prices are the standard or default price offered to a customer prior to negotiation. When you're creating a new quote or billing schedule, use list prices to quickly configure basic pricing for a customer and subsequently adjust it.
Navigate to a product from your product catalogue and create a list price.
List prices act as templates for prices.
Configure a list price by defining a display name, billing frequency, type, pricing model, etc.
Review your list price configuration.
Use the list price when you're configuring a new billing schedule. In the below example, the `Platform Access` product has three list prices.
## Using list prices
List prices are standard or default prices for a product (e.g. your Analytics Suite product may cost £500 per month). Defining list prices simplifies price configuration on quotes and billing schedules.
Make changes to the list price to create a bespoke price variant for the customer.
Alternatively, choose a different list price.
Open **additional fields** to adjust the pricing model, billing frequency and type.
# Seat-based pricing
Source: https://docs.sequencehq.com/plans-products/seat-based-pricing
Sequence provides native support for dynamic seat and user based pricing models
Sequence provides native support for businesses with seat-based pricing, including seat types, a simple API to submit seat updates and a dashboard to track seat balances and changes. With Sequence, you can automate billing for standard or tiered seat fees and optionally prorate seat upgrades. Charge a contracted minimum seat number and configure how to bill for seat overage fees.
[Learn more](/seats/overview) about how to configure seat types in Sequence and programmatically update seat balances by submitting seat updates from your application.
#### Concepts
### Advance or arrears billing for seats
Charge for seats based on the seat balance at the start or end of the billing period. Billing in advance charges for seats in the period (month, quarter or year) ahead, whereas billing in arrears covers seat usage from the previous period.
### Contracted seats minimums
You can configure a minimum number of contracted seats that is always billed, regardless of actual usage. For example, if your contracted minimum is 100 seats billed monthly in arrears, but a customer is only utilizing 90 seats in a given month, they are still charged for 100 seats.
### Seat overages
If a customer exceeds their minimum number of contracted seats, you can bill for seat overages. If you bill for regular seats quarterly or annually in advance, you can choose to bill for overages monthly, instead of waiting until the end of the normal billing period. For example, if you bill customers for 100 seats in advance at the start of the year, you can bill for overage seats at the end of the annual period or raise a bill at the end of the current month.
### Seat proration options
Pick one of three proration strategies to control how seat changes are billed mid-period:
| Option | Added seats | Removed seats |
| - | - | - |
| **Added seats only** (default) | Prorated overage fee, based on days remaining in the period | Not refunded - no credit is issued |
| **Added and removed seats** | Prorated overage fee, based on days remaining in the period | Refunded pro-rata, based on days unused |
| **No proration** | Full price is charged for the seat, regardless of when in the period it was added | Full price remains billed for the period the seat was removed in; no refund |
#### Example
A customer pays \$15 per seat per month and adds a seat halfway through a 30-day billing period.
* **Added seats only** or **Added and removed seats**: The seat is prorated for the 15 days remaining, costing approximately \$7.50.
* **No proration**: The customer is charged the full \$15, even though the seat was active for only half the period.
If the customer removes a seat halfway through the next billing period:
* **Added seats only** or **No proration**: No credit is issued, and the full seat price remains billed for that period.
* **Added and removed seats**: The customer receives a pro-rata credit for the 15 unused days, approximately \$7.50.
## Linear seat-based pricing
With linear seat-based pricing you set a single price and apply it to all seats your customer uses. With this pricing model, the price per seat is the same regardless of how many seats your customer uses.
## Graduated seat-based pricing
With graduated seat-based pricing, the price per seat varies as the total number of seats used moves across tiers. For example, with the configuration below the first 15 seats will be charged £12 each, and every additional seats beyond that will be charged £15.
## Worked examples
#### Monthly in arrears seat-based billing with proration
In this example, Simplify Saas charges its customer £15 a month per seat in arrears. Seats added mid-month are charged a prorated fee.
The customer (Flower Saas) started with zero seats. On April 18th, they added 27 seats. At the end of April, Flower Saas receives an invoices for 27 seats (prorated to £6.50), covering the period of 1 - 30 April.
Through April and May, no other seats are added. At the end of May, Flower Saas receives an invoice for 27 seats at £15 per seat.
#### Monthly in advance seat-based billing with overages
In this example, Simplify Saas charges its customer \$25 a month per seat in advance. Seats added mid-month are charged a prorated fee at month end.
Throughout April, the customer (Bluepen) adds several seats to their account, ending up with 73 seats at month end. On May 1st, a single invoice is raised that includes both:
* Prorated seat charges for seats added throughout April (covering the April billing period), and
* The in-advance seat fee for the upcoming billing period (1-31 May), based on the latest seat balance (73 seats).
Each line item retains its own service period (for example, for revenue recognition). When charges are consolidated into a single invoice, the invoice-level billing period may span multiple months (in this case, April and May).
#### Annual in advance seat-based billing with minimums and overages
In this example, Simplify Saas charges its customer annually in advance for 50 contracted seats at \$25 per seat (annually). Extra seats are charged a prorated fee at the end of the annual billing period.
Since the billing schedule starts on March 1, an advance invoice is raised covering the 50 contracted seats.
On April 18th, Orange Corp reached a 60 seat balance, 10 seats above the contracted minimum. A prorated charge is automatically added to the invoice.
#### Tiered seat-based pricing with minimums
In this example, Simplify Saas charges tiered seat fees, monthly in arrears. The first 5 seats are \$10 per seat per month, the next set 10 seats are \$12 per seat and any seats beyond that are \$15 per seat. Additionally, there is a contracted minimum of 10 seats.
The billing schedule starts on March 1. In March, Flower Saas just add a handful of seats (below the minimum of 10). At month end, they receive an invoice for the contracted 10 seats. Note that these span across two tiers.
A couple months later, Flower Saas add extra analyst seats to their app, reaching a total of 25 seats. At the end of May, they receive the below invoice:
# Self-serve plans
Source: https://docs.sequencehq.com/plans-products/self-serve-plans
How to use Sequence with standard pricing plans or packages
If your business offers standard pricing packages, you can flexibly model plans using prices in Sequence. Products help you track provisioning, and prices track the different variations in pricing. Prices define the unit cost, model, currency, billing frequency and billing type.
Prices act as core building blocks in Sequence. When you’re creating a new billing schedule for a customer, you will reference the PriceId of each Price you want to bill them for. Prices can be reused across customers. In a sales-led flow, prices will often be unique to customers, since each price may have undergone custom adjustments. In a self-serve flow, prices are reused by customers.
## Worked example
Amara offers two self-serve plans for their product: Start and Scale.
| Self-serve plans | Start | Scale |
| - | - | - |
| Includes | Platform access | Platform access |
| | | AI Add-on |
| Pricing | **£500** per month | **£500** per month + usage fee based on API calls |
The Start plan includes **Platform access**, granting access to base functionality in the platform. The Scale plan includes Amara's **AI add-on**.
#### Pricing
The list price for **Platform access** is £500 monthly in arrears. The list price for the **AI add-on** is based on the number of API Calls and billed monthly in arrears:
| Tier | First unit | Last unit | Unit fee | Tier fee (flat) |
| - | - | - | - | - |
| Minimum tier | 0 | 1000 | £0 | £250 |
| Tier 1 | 1001 | 2500 | £0.45 | £0 |
| Tier 2 | 2501 | ∞ | £0.65 | £0 |
#### Products and Prices in Sequence
In Sequence, Amara maintain two [products](/reference/latest/product/list-all-products), one for **Platform access** and one for **AI add-on**. Amara use products to determine what features a customer should be provisioned to.
In the below example, each product contains multiple [priceIds](/reference/latest/billing/get-a-price-by-id). In addition to the standard list prices used for Amara's self-serve plans, there are other price variants that are the result of custom sales deals.
**Products**:
* **Platform access**
* Prices:
* `A`: £500 per month, in arrears (**list** price)
* `B`: £825 per month, in arrears (price variant)
* `C`: £650 per month, in arrears (price variant)
* `D`: £400 per month, in arrears (price variant)
* **AI add-on**
* Prices:
* `X`: 0-1000 included @ £250; \$0.45 overage fee (**list** price)
* `Y`: 0-2000 included @ £150; \$0.40 overage fee (price variant)
* `Z`: 0-5000 included @ £700; \$0.65 overage fee (price variant)
When a new customer signs up to the Scale Plan, Amara create a new billing schedule referencing the standard list price ids `A` for Platform access and price id `X` for AI add-on.
# Standard pricing
Source: https://docs.sequencehq.com/plans-products/subscription-pricing
Charge one-time or fixed recurring standard fees
## Fixed recurring fees
Charge a fixed recurring fee to bill for ongoing services on a regular basis (monthly, quarterly, semi-annually, annually, etc.).
`$1500` monthly fee, billed in arrears
Examples: [GitHub Copilot](https://github.com/features/copilot)
***
## One-time fees
Charge a once-off fee to bill for one-time services such as implementation or onboarding charges.
`$2500` one-time fee, billed in advance
Examples: [GitHub Copilot](https://github.com/features/copilot)
# Usage-based pricing
Source: https://docs.sequencehq.com/plans-products/usage-based-pricing
Sequence supports a range of standard and usage-based pricing models
## Linear pricing
Charge a single, linear rate for usage.
* `$0.1` per unit
* `550 units = $55.00`
Examples: [OpenAI - GPT-3 Davinci](https://openai.com/pricing/)
***
## Linear pricing (Percentage-based)
Charge a single, linear percentage-based fee for usage. You can optionally set a minimum and a maximum fee threshold. For example, charge 0.5% of every payment event with a \$1 minimum and a \$10 cap per payment.
* `0.5%` per payment
Calculation for 50 payments amounting to `$1,000` = `$1,000` \* `0.5%` = `$5.00`
Examples: [Stripe - Invoicing](https://stripe.com/gb/invoicing/pricing)
## Linear pricing with fee thresholds
Use minimum and maximum fee threshold to charge a predictable amount for transactions.
* `2.00%` per payment, `$1.00` minimum unit fee, `$10.00` maximum unit fee
Calculation for 3 payments of `$25`, `$100` and `$500`:
* `2.00%` of `$25.00` = `$0.50` -> `$1.00` minimum fee applies
* `2.00%` of `$100.00` = `$2.00` -> Within min and max fee threshold
`2.00%` of `$750.00` = `$15.00` -> `$10.00` cap applies
Total: `$1.00` + `$2.00` + `$10.00` = `$13.00`
Examples: [Stripe - Invoicing](https://stripe.com/gb/invoicing/pricing)
***
***
## Volume pricing
Offer volume discounts for higher usage and an optional flat fee per usage tier. Customers only pay the unit and flat fee in their current tier.
* Tier 1: 0 - 100 units @ `1$/unit` + `$20` flat fee
* Tier 2: 100 - ∞ units @ `$0.75/unit` + `$50` flat fee
Calculation for 125 units: `125 * $0.75 + $50 = $143.75`
Examples: [Twilio - SMS](https://www.twilio.com/sms/pricing/)
***
## Volume pricing (Percentage-based)
Similar to standard volume tiers, but the unit price is a percentage of a sum (e.g., total transactions). Customers only pay the percentage and flat fee in their current tier. Optionally configure a unit cap that applies to each percentage charge (e.g. 0.2% of transaction volume, capped at \$5 per transaction). For percentage-based volume pricing, you can optionally set a minimum and a maximum fee threshold. For example, charge 0.5% of every payment event with a \$1 minimum and a \$10 cap per payment.
* Tier 1: `0 - $10,000` @ 0.1% + `$500` flat fee
* Tier 2: `$10,000 - ∞` @ 0.05% + `$250` flat fee
Calculation for `$15,000` Transaction volume: `$15,000 * 0.05% + $250 = $325`
Examples: [Stripe - Payments](https://stripe.com/pricing)
***
## Graduated pricing
Charge multiple rates for multiple tiers (similar to progressive income tax), with an optional flat fee per tier. Tiers and flat fees accumulate.
* Tier 1: 0 - 500 units @ `$0.5/unit` + `$500` flat fee
* Tier 2: 501 - ∞ units @ `$0.7/unit` + `$750` flat fee
Calculation for 600 units: `500 * $0.5 + $500 + 100 * $0.7 + $750 = $1,570`
Examples: [Amazon Web Services - S3](https://aws.amazon.com/s3/pricing/)
***
## Graduated pricing (Percentage-based)
Similar to standard graduated tiers, but the unit price is a percentage of a sum (e.g., total transactions). Tiers and flat fees accumulate.
* Tier 1: `0 - $10000` @ 0.1% + `$500` flat fee
* Tier 2: `$10000 - ∞` @ 0.05% + `$250` flat fee
Calculation for `$15000` Transaction volume: `$10000 * 0.1% + $500 + $5000 * 0.05% + $250 = $762.50`
***
## Packaged pricing
Charge a fixed price for a package of units (similar to linear rate but with packaged quantities). Also known as stair-step pricing.
Pricing: `$10` per 250 units
Calculation for 600 units: `3 Packages * $10 = $30`
## Credit burndowns
Offer credit grants that customers can burn down each month. Unused credits are rolled over to subsequent billing periods. If all credits are burned down in a period, overages apply.
Credits: `$250` for 1500 API credits (no expiry)
Overages: `$0.10` per credit
Calculation for 1600 units: `100 * $0.10 = $10`
To implement this pricing model, grant credits to customers via API or dashboard. In addition to usage-credits (tied to a usage metric), you can also offer cash credits. Learn more about [credit grants](/credits/overview).
# Delete User
Source: https://docs.sequencehq.com/reference/2024-07-30/account/delete-user
account.2024-07-30.product.live DELETE /users/{id}
Delete one of your Users.
# Get a user
Source: https://docs.sequencehq.com/reference/2024-07-30/account/get-a-user
account.2024-07-30.product.live GET /users/{id}
Retrieve the details of one of your users.
# Get your account
Source: https://docs.sequencehq.com/reference/2024-07-30/account/get-your-account
account.2024-07-30.product.live GET /sequence-accounts/{id}
Retrieve the details of your Sequence account.
# List all Users
Source: https://docs.sequencehq.com/reference/2024-07-30/account/list-all-users
account.2024-07-30.product.live GET /users
List all users within your Sequence account.
# List your accounts
Source: https://docs.sequencehq.com/reference/2024-07-30/account/list-your-accounts
account.2024-07-30.product.live GET /sequence-accounts
List all of your Sequence accounts.
# Update Account
Source: https://docs.sequencehq.com/reference/2024-07-30/account/update-account
account.2024-07-30.product.live PUT /sequence-accounts/{id}
Update Sequence account information
# Get an Activity Log by ID
Source: https://docs.sequencehq.com/reference/2024-07-30/activity-stream/get-an-activity-log-by-id
activity-stream.2024-07-30.product.live GET /activity-logs/{id}
Get an Activity Log by ID
# List all Activity Logs
Source: https://docs.sequencehq.com/reference/2024-07-30/activity-stream/list-all-activity-logs
activity-stream.2024-07-30.product.live GET /activity-logs
List all Activity Logs
# Activate Billing Schedule
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/activate-billing-schedule
billing.2024-07-30.product.live PUT /billing-schedules/{billingScheduleId}/activate
Activate an existing draft [Billing Schedule](/billing/create-billing-schedules).
# Archive Billing Schedule
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/archive-billing-schedule
billing.2024-07-30.product.live POST /billing-schedules/{billingScheduleId}/archive
Archive a [Billing Schedule](/billing/create-billing-schedules).
# Create a customer credit grant
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/create-a-customer-credit-grant
billing.2024-07-30.product.live POST /credit-grants
Create a one-off cash credit grant held by a customer directly, outside any billing schedule. Its credit is issued after this request returns, so the response shows the grant as it stands at that moment: usually `state.issuance` PENDING with a zero `availableBalance`, becoming ISSUED with the full balance once funded. Retrying with the same `Idempotency-Key` returns the original grant without creating another. Keys never expire within your account, and a key reused with different terms is rejected.
# Create a new credit grant
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/create-a-new-credit-grant
billing.2024-07-30.product.live POST /credits
Create a new credit grant
# Create a new Price
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/create-a-new-price
billing.2024-07-30.product.live POST /prices
Create a new Price
# Create Billing Schedule
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/create-billing-schedule
billing.2024-07-30.product.live POST /billing-schedules
Create a new [Billing Schedule](/billing/create-billing-schedules).
# Delete a credit grant
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/delete-a-credit-grant
billing.2024-07-30.product.live DELETE /credits/{id}
Delete a credit grant by ID
# Delete a discount
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/delete-a-discount
billing.2024-07-30.product.live DELETE /discounts/{id}
Delete a discount
# Delete a Price
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/delete-a-price
billing.2024-07-30.product.live DELETE /prices/{id}
Delete a Price
# Duplicate a billing schedule
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/duplicate-a-billing-schedule
billing.2024-07-30.product.live POST /billing-schedules/{billingScheduleId}/duplicate
Duplicate a [billing schedule](/billing/create-billing-schedules) onto the customer named in the request. The copy is always created as a draft, and is given its own prices, phases and credit grants rather than sharing the source's.
Attachments and custom field values belong to the customer rather than to the schedule. Duplicating for the same customer carries both across, the attachments referencing the same assets so that nothing is re-uploaded. Duplicating for a different customer attaches nothing, and carries the custom field keys with blank values.
# Get a credit grant
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/get-a-credit-grant
billing.2024-07-30.product.live GET /credit-grants/{id}
Get a credit grant by ID, whether held by a customer or on one of their billing schedules, including its available balance, issuance and validity. Usage awaiting processing is not yet deducted from `availableBalance`.
# Get a customer credit grant
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/get-a-customer-credit-grant
billing.2024-07-30.product.live GET /credits/{id}
Get a customer credit grant by ID
# Get a discount by ID
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/get-a-discount-by-id
billing.2024-07-30.product.live GET /discounts/{id}
Get a discount by ID
# Get a Price by ID
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/get-a-price-by-id
billing.2024-07-30.product.live GET /prices/{id}
Get a Price by ID
# Get Billing Schedule
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/get-billing-schedule
billing.2024-07-30.product.live GET /billing-schedules/{billingScheduleId}
Retrieve the details of one of your Billing Schedules.
# List all billing products
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/list-all-billing-products
billing.2024-07-30.product.live GET /billing-products
List all products with billing prices
# List all Billing Schedules
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/list-all-billing-schedules
billing.2024-07-30.product.live GET /billing-schedules
List all Billing Schedules.
# List all discounts
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/list-all-discounts
billing.2024-07-30.product.live GET /discounts
List all discounts for Sequence account
# List all Prices
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/list-all-prices
billing.2024-07-30.product.live GET /prices
List all Prices
# List Billing Schedule Custom Field Keys
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/list-billing-schedule-custom-field-keys
billing.2024-07-30.product.live GET /billing-schedule-custom-field-keys
List all distinct custom field keys across billing schedules for the current account.
# List Credit Balances for a customer
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/list-credit-balances-for-a-customer
billing.2024-07-30.product.live GET /credits/{customerId}/balances
List all Credit Balances including their grants and transactions
# List credit grants
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/list-credit-grants
billing.2024-07-30.product.live GET /credit-grants
List credit grants on your account, whether held by a customer or on one of their billing schedules, newest first by default. Filter by billing schedule or customer, and use the pagination cursors to retrieve more results. Includes scheduled, unissued, depleted and expired grants. Issuance and validity are reported in `state`; `availableBalance` reports the credit usable now. Usage awaiting processing is not yet deducted from `availableBalance`.
# List Credit Grants for a customer
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/list-credit-grants-for-a-customer
billing.2024-07-30.product.live GET /credits/{customerId}/grants
List all Credit Grants and their outstanding balances where the balance is non-zero
# List customer credit grants
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/list-customer-credit-grants
billing.2024-07-30.product.live GET /credits
List all customer credit grants for this account
# Update a discount
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/update-a-discount
billing.2024-07-30.product.live PUT /discounts/{id}
Update a discount
# Update a Price
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/update-a-price
billing.2024-07-30.product.live PUT /prices/{id}
Update a Price
# Update Billing Schedule
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/update-billing-schedule
billing.2024-07-30.product.live PUT /billing-schedules/{billingScheduleId}
Update an existing [Billing Schedule](/billing/create-billing-schedules).
# Validate taxes on a billing schedule
Source: https://docs.sequencehq.com/reference/2024-07-30/billing/validate-taxes-on-a-billing-schedule
billing.2024-07-30.product.live POST /billing-schedules/validate-taxes
Validate the tax strategy that will apply to the given billing schedule before it's created or updated.
# Create billing schedule payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/create-billing-schedule-payment-settings
collections.2024-07-30.product.live POST /payments/settings/billing-schedules
Create payment settings for billing schedules. Invoices for billing schedules with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Billing schedule payment settings override customer payment settings. You can also override billing schedule payment settings with invoice payment settings.
# Create customer payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/create-customer-payment-settings
collections.2024-07-30.product.live POST /payments/settings/customers
Create payment settings for customers. Invoices for customers with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. You can override customer payment settings with billing schedule payment settings and invoice payment settings.
# Create invoice payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/create-invoice-payment-settings
collections.2024-07-30.product.live POST /payments/settings/invoices
Create payment settings for invoices. Invoices with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Invoice payment settings override billing schedule payment settings and customer payment settings.
# Delete billing schedule payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/delete-billing-schedule-payment-settings
collections.2024-07-30.product.live DELETE /payments/settings/billing-schedules/{id}
Delete payment settings for billing schedules. Invoices for billing schedules with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Billing schedule payment settings override customer payment settings. You can also override billing schedule payment settings with invoice payment settings.
# Delete customer payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/delete-customer-payment-settings
collections.2024-07-30.product.live DELETE /payments/settings/customers/{id}
Delete payment settings for customers. Invoices for customers with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. You can override customer payment settings with billing schedule payment settings and invoice payment settings.
# Delete invoice payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/delete-invoice-payment-settings
collections.2024-07-30.product.live DELETE /payments/settings/invoices/{id}
Delete payment settings for invoices. Invoices with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Invoice payment settings override billing schedule payment settings and customer payment settings.
# Get billing schedule payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/get-billing-schedule-payment-settings
collections.2024-07-30.product.live GET /payments/settings/billing-schedules/{id}
Get payment settings for billing schedules. Invoices for billing schedules with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Billing schedule payment settings override customer payment settings. You can also override billing schedule payment settings with invoice payment settings.
# Get billing schedule payment settings by billing schedule ID
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/get-billing-schedule-payment-settings-by-billing-schedule-id
collections.2024-07-30.product.live GET /payments/settings/billing-schedules/for-billing-schedule/{id}
Get payment settings for billing schedules by billing schedule ID. Invoices for billing schedules with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Billing schedule payment settings override customer payment settings. You can also override billing schedule payment settings with invoice payment settings.
# Get customer payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/get-customer-payment-settings
collections.2024-07-30.product.live GET /payments/settings/customers/{id}
Get payment settings for customers. Invoices for customers with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. You can override customer payment settings with billing schedule payment settings and invoice payment settings.
# Get invoice payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/get-invoice-payment-settings
collections.2024-07-30.product.live GET /payments/settings/invoices/{id}
Get payment settings for invoices. Invoices with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Invoice payment settings override billing schedule payment settings and customer payment settings.
# Get invoice payment settings by invoice ID
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/get-invoice-payment-settings-by-invoice-id
collections.2024-07-30.product.live GET /payments/settings/invoices/for-invoice/{id}
Get payment settings for invoices by invoice ID. Invoices with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Invoice payment settings override billing schedule payment settings and customer payment settings.
# Payment settings for Sequence account
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/payment-settings-for-sequence-account
collections.2024-07-30.product.live GET /payments/settings
Retrieves payment settings for the current Sequence accounts. If no settings exist, default settings will be returned.
# Stripe collection settings for Sequence account
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/stripe-collection-settings-for-sequence-account
collections.2024-07-30.product.live GET /stripe/collections/settings
Retrieves Stripe collection settings for the current Sequence accounts. If no settings exist, default settings will be returned.
# Update billing schedule payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/update-billing-schedule-payment-settings
collections.2024-07-30.product.live PUT /payments/settings/billing-schedules/{id}
Update payment settings for billing schedules. Invoices for billing schedules with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Billing schedule payment settings override customer payment settings. You can also override billing schedule payment settings with invoice payment settings.
# Update customer payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/update-customer-payment-settings
collections.2024-07-30.product.live PUT /payments/settings/customers/{id}
Update payment settings for customers. Invoices for customers with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. You can override customer payment settings with billing schedule payment settings and invoice payment settings.
# Update invoice payment settings
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/update-invoice-payment-settings
collections.2024-07-30.product.live PUT /payments/settings/invoices/{id}
Update payment settings for invoices. Invoices with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Invoice payment settings override billing schedule payment settings and customer payment settings.
# Update payment settings for Sequence account
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/update-payment-settings-for-sequence-account
collections.2024-07-30.product.live PUT /payments/settings/{id}
Updates payment settings for the current Sequence accounts.
# Update Stripe collection settings for Sequence account
Source: https://docs.sequencehq.com/reference/2024-07-30/collections/update-stripe-collection-settings-for-sequence-account
collections.2024-07-30.product.live PUT /stripe/collections/settings/{id}
Updates Stripe collection settings for the current Sequence accounts.
# Add a customer to a customer organization
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/add-a-customer-to-a-customer-organization
customer.2024-07-30.product.live POST /customer-organizations/{id}/members
Add a [customer](/customers/overview) to an existing customer organization. This action does not impact their membership in other organizations.
# Archive a contact
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/archive-a-contact
customer.2024-07-30.product.live POST /customers/{customer}/contacts/{id}/archive
Mark a contact as archived
# Archive customer
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/archive-customer
customer.2024-07-30.product.live POST /customers/{id}/archive
Archive a [customer](/customers/overview).
# Create a customer organization
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/create-a-customer-organization
customer.2024-07-30.product.live POST /customer-organizations
Create a customer organization to manage parent-child relationships for your [customers](/customers/overview).
# Create a new contact
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/create-a-new-contact
customer.2024-07-30.product.live POST /customers/{customer}/contacts
Create a contact
# Create a new Customer Alias
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/create-a-new-customer-alias
customer.2024-07-30.product.live POST /customer-aliases
Create a new Customer Alias
# Create customer
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/create-customer
customer.2024-07-30.product.live POST /customers
Create a new [customer](/customers/overview), who you can send money to and receive money from.
# Delete a Customer Alias
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/delete-a-customer-alias
customer.2024-07-30.product.live DELETE /customer-aliases/{id}
Delete a Customer Alias
# Get customer
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/get-customer
customer.2024-07-30.product.live GET /customers/{id}
Retrieve the details of one of your [Customers](/customers/overview).
# Get Customer Aliases
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/get-customer-aliases
customer.2024-07-30.product.live GET /customers/{id}/aliases
Retrieve the details of one of your [Customer's](/customers/overview) aliases.
# Get customer by alias
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/get-customer-by-alias
customer.2024-07-30.product.live GET /customers/by-alias/{alias}
Retrieve the details of one of your [customers](/customers/overview) using one of their aliases.
# List all contacts for a customer
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/list-all-contacts-for-a-customer
customer.2024-07-30.product.live GET /customers/{customer}/contacts
List all contacts for a customer
# List all Customer Aliases
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/list-all-customer-aliases
customer.2024-07-30.product.live GET /customer-aliases
List all Customer Aliases
# List customer custom property keys
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/list-customer-custom-property-keys
customer.2024-07-30.product.live GET /customer-custom-property-keys
List all distinct custom property keys across customers for the current account.
# List customers
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/list-customers
customer.2024-07-30.product.live GET /customers
List all [customers](/customers/overview).
# Replace members of a customer organization
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/replace-members-of-a-customer-organization
customer.2024-07-30.product.live PUT /customer-organizations/{id}/members
Replace all [customer](/customers/overview) in an existing customer organization. This action does not impact their membership in other organizations.
# Update a contact
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/update-a-contact
customer.2024-07-30.product.live PUT /customers/{customer}/contacts/{id}
Update a contact
# Update a Customer Alias
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/update-a-customer-alias
customer.2024-07-30.product.live PUT /customer-aliases/{id}
Update a Customer Alias
# Update customer
Source: https://docs.sequencehq.com/reference/2024-07-30/customer/update-customer
customer.2024-07-30.product.live PUT /customers/{id}
Update the details of one of your [customers](/customers/overview).
# Apply a Credit Note to an Invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/apply-a-credit-note-to-an-invoice
invoices.2024-07-30.product.live POST /credit-note-applications
Allocates an amount from a Credit Note's balance to an Invoice's balance.
# Convert upcoming invoice to draft
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/convert-upcoming-invoice-to-draft
invoices.2024-07-30.product.live POST /invoices/{id}/draft
Updates to DRAFT status and recalculates invoice. Returns 409 when an earlier billing run this document corrects has no document yet: PRIOR_RUN_STILL_IN_FLIGHT means retry shortly, OLD_BILLING_RUN_INCOMPLETE means escalate, as the earlier run needs repair. SUPERSEDED_BY_CREDIT_NOTE means the recalculation turned the invoice into a credit note.
# Create a new Credit Note
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/create-a-new-credit-note
invoices.2024-07-30.product.live POST /credit-notes
Create a new Credit Note
# Create a new Credit Note Line Item
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/create-a-new-credit-note-line-item
invoices.2024-07-30.product.live POST /credit-notes/{creditnote}/line-items
Create a new Credit Note Line Item
# Create a new Credit Note Line Item Group
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/create-a-new-credit-note-line-item-group
invoices.2024-07-30.product.live POST /credit-notes/{creditnote}/line-item-groups
Create a new Credit Note Line Item Group
# Create a new Line Item
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/create-a-new-line-item
invoices.2024-07-30.product.live POST /invoices/{invoice}/line-items
Create a new Line Item
# Create a new Line Item Group
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/create-a-new-line-item-group
invoices.2024-07-30.product.live POST /invoices/{invoice}/line-item-groups
Create a new Line Item Group
# Create an invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/create-an-invoice
invoices.2024-07-30.product.live POST /invoices
Create a new invoice
# Delete a Credit Note
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/delete-a-credit-note
invoices.2024-07-30.product.live DELETE /credit-notes/{id}
Delete a Credit Note
# Delete a Credit Note Line Item
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/delete-a-credit-note-line-item
invoices.2024-07-30.product.live DELETE /credit-notes/{creditnote}/line-items/{id}
Delete a Credit Note Line Item
# Delete a Credit Note Line Item Group
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/delete-a-credit-note-line-item-group
invoices.2024-07-30.product.live DELETE /credit-notes/{creditnote}/line-item-groups/{id}
Delete a Credit Note Line Item Group
# Delete a Line Item Group
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/delete-a-line-item-group
invoices.2024-07-30.product.live DELETE /invoices/{invoice}/line-item-groups/{id}
Delete a Line Item Group
# Delete an Invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/delete-an-invoice
invoices.2024-07-30.product.live DELETE /invoices/{id}
Delete an Invoice. NB. You can only delete a draft or in-progress invoice. If you want to correct an invoice you have already finalised, you should void it instead. If you want to correct an invoice you have already sent, you should create a credit note.
# Deletes a Line Item
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/deletes-a-line-item
invoices.2024-07-30.product.live DELETE /invoices/{invoice}/line-items/{id}
Deletes a Line Item
# Download credit note PDF
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/download-credit-note-pdf
invoices.2024-07-30.product.live GET /credit-notes/{id}/download
Download credit note PDF
# Download invoice PDF
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/download-invoice-pdf
invoices.2024-07-30.product.live GET /invoices/{id}/download
Download invoice PDF
# Finalize and mark invoice as sent without triggering actions except revenue recognition
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/finalize-and-mark-invoice-as-sent-without-triggering-actions-except-revenue-recognition
invoices.2024-07-30.product.live POST /invoices/{id}/mark-as-sent
Finalizes an invoice (if not already finalized) and sets its status to SENT. Emails or notifications are not sent. Integration syncs do not happen. Journal entries are created for the invoice.
# Finalize and send credit note
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/finalize-and-send-credit-note
invoices.2024-07-30.product.live POST /credit-notes/{id}/finalize-and-send
Updates to SENT status, generates credit note PDF and sends to end-customer
# Finalize and send invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/finalize-and-send-invoice
invoices.2024-07-30.product.live POST /invoices/{id}/finalize-and-send
Updates to SENT status, generates invoice PDF and sends to end-customer
# Finalize credit note
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/finalize-credit-note
invoices.2024-07-30.product.live POST /credit-notes/{id}/finalize
Updates to FINAL status, generates credit note PDF and prevents further editing
# Finalize invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/finalize-invoice
invoices.2024-07-30.product.live POST /invoices/{id}/finalize
Updates to FINAL status, generates invoice PDF and prevents further editing
# Fix invoices billing runs
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/fix-invoices-billing-runs
invoices.2024-07-30.product.live POST /invoices/fix-billing-runs
Fix invoices with missing billing runs
# Get a Credit Note by ID
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/get-a-credit-note-by-id
invoices.2024-07-30.product.live GET /credit-notes/{id}
Get a Credit Note by ID
# Get an Invoice by ID
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/get-an-invoice-by-id
invoices.2024-07-30.product.live GET /invoices/{id}
Get an Invoice by ID
# Get an invoice summary
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/get-an-invoice-summary
invoices.2024-07-30.product.live GET /invoices/summary
Returns aggregate invoice totals (count and gross total) grouped by currency for the invoices matching the supplied filters. Totals cover the whole matching set, so accurate figures can be retrieved in a single request without paginating.
# Get or create Invoice Render Settings
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/get-or-create-invoice-render-settings
invoices.2024-07-30.product.live GET /invoices/render-settings
Returns invoice render settings or creates new settings if they do not exist
# List all Credit Note Line Item Groups
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/list-all-credit-note-line-item-groups
invoices.2024-07-30.product.live GET /credit-notes/{creditnote}/line-item-groups
List all Credit Note Line Item Groups
# List all Credit Note Line Items
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/list-all-credit-note-line-items
invoices.2024-07-30.product.live GET /credit-notes/{creditnote}/line-items
List all Credit Note Line Items
# List all Credit Notes
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/list-all-credit-notes
invoices.2024-07-30.product.live GET /credit-notes
List all Credit Notes for this Sequence account
# List all Invoices
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/list-all-invoices
invoices.2024-07-30.product.live GET /invoices
List all invoices. balance and balanceVersion are returned only for FINAL and SENT invoices that already have a ledger balance. An absent balance means it is unavailable, never that the invoice is settled.
# List all Line Item Groups
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/list-all-line-item-groups
invoices.2024-07-30.product.live GET /invoices/{invoice}/line-item-groups
List all Line Item Groups
# List all Line Items
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/list-all-line-items
invoices.2024-07-30.product.live GET /invoices/{invoice}/line-items
List all Line Items
# List Currency Conversions for an Invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/list-currency-conversions-for-an-invoice
invoices.2024-07-30.product.live GET /invoices/{id}/currency-conversions
Lists all currency conversions for a specific invoice.
Currency conversions are automatically created for invoices that require regulatory
compliance (e.g., UK VAT requiring GBP conversion for foreign currency invoices).
# List Invoice summaries
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/list-invoice-summaries
invoices.2024-07-30.product.live GET /invoices/list-summary
List invoices with only the fields the summary table renders. balance and balanceVersion are returned only for FINAL and SENT invoices that already have a ledger balance. An absent balance means it is unavailable, never that the invoice is settled.
# Mark credit note as sent without triggering actions except revenue recognition
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/mark-credit-note-as-sent-without-triggering-actions-except-revenue-recognition
invoices.2024-07-30.product.live POST /credit-notes/{id}/mark-as-sent
Finalizes a credit note (if not already finalized) and sets its status to SENT. Emails or notifications are not sent. Integration syncs do not happen. Journal entries are created for the credit note.
# Merge invoices
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/merge-invoices
invoices.2024-07-30.product.live POST /invoices/merge
Merge multiple draft invoices into one
# Patch a sent invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/patch-a-sent-invoice
invoices.2024-07-30.product.live PATCH /invoices/{id}/sent
Patch fields on a SENT invoice. Supports updating the purchase order number, customer legal company name, customer billing address, memo, reference, and due date. Setting a due date records it as manually chosen and clears the invoice's stored payment terms, so it will not be recomputed from them later. Neither the due date nor the customer legal company name can be cleared: sending an explicit null for either is rejected.
# Patch an invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/patch-an-invoice
invoices.2024-07-30.product.live PATCH /invoices/{id}
Patch an invoice
# Reconcile invoices with external integration
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/reconcile-invoices-with-external-integration
invoices.2024-07-30.product.live POST /invoices/reconcile-with-integration
Reconcile invoice properties between our system and integration
# Send a payment reminder for an invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/send-a-payment-reminder-for-an-invoice
invoices.2024-07-30.product.live POST /invoices/{id}/send-payment-reminder
Send a payment reminder to the billing contacts for an invoice
# Send credit note
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/send-credit-note
invoices.2024-07-30.product.live POST /credit-notes/{id}/send
Updates to SENT status and sends to end-customer
# Send invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/send-invoice
invoices.2024-07-30.product.live POST /invoices/{id}/send
Updates to SENT status and sends to end-customer
# Update a Credit Note
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/update-a-credit-note
invoices.2024-07-30.product.live PUT /credit-notes/{id}
Update a Credit Note
# Update a Credit Note Line Item
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/update-a-credit-note-line-item
invoices.2024-07-30.product.live PUT /credit-notes/{creditnote}/line-items/{id}
Update a Credit Note Line Item
# Update a Credit Note Line Item Group
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/update-a-credit-note-line-item-group
invoices.2024-07-30.product.live PUT /credit-notes/{creditnote}/line-item-groups/{id}
Update a Credit Note Line Item Group
# Update a line item
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/update-a-line-item
invoices.2024-07-30.product.live PUT /invoices/{invoice}/line-items/{id}
Update a line item on an invoice
# Update a Line Item Group
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/update-a-line-item-group
invoices.2024-07-30.product.live PUT /invoices/{invoice}/line-item-groups/{id}
Update a Line Item Group
# Update an invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/update-an-invoice
invoices.2024-07-30.product.live PUT /invoices/{id}
Update an invoice
# Update an Invoice Render Settings
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/update-an-invoice-render-settings
invoices.2024-07-30.product.live PUT /invoices/render-settings/{id}
Update an Invoice Render Settings
# Update payment status for an invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/update-payment-status-for-an-invoice
invoices.2024-07-30.product.live PUT /invoices/{id}/payment-status
Update payment status for an invoice
# Void a Credit Note
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/void-a-credit-note
invoices.2024-07-30.product.live POST /credit-notes/{id}/void
Void a Credit Note
# Void an Invoice
Source: https://docs.sequencehq.com/reference/2024-07-30/invoices/void-an-invoice
invoices.2024-07-30.product.live POST /invoices/{id}/void
Void a DRAFT, FINAL, or SENT invoice. SENT invoices can only be voided if they are UNPAID or UNCOLLECTIBLE
# Add notification types to a policy
Source: https://docs.sequencehq.com/reference/2024-07-30/notifications/add-notification-types-to-a-policy
notifications.2024-07-30.product.live POST /notifications/policies/{id}/notification-types
Add new notification types to an existing Notification Policy.
# Add recipients to a policy
Source: https://docs.sequencehq.com/reference/2024-07-30/notifications/add-recipients-to-a-policy
notifications.2024-07-30.product.live POST /notifications/policies/{id}/recipients
Add new recipients to an existing Notification Policy.
# Create Notification policy
Source: https://docs.sequencehq.com/reference/2024-07-30/notifications/create-notification-policy
notifications.2024-07-30.product.live POST /notifications/policies
Create a new Notification Policy, which will send matching notifications to the recipients you specify.
# Delete notification policy
Source: https://docs.sequencehq.com/reference/2024-07-30/notifications/delete-notification-policy
notifications.2024-07-30.product.live DELETE /notifications/policies/{id}
Delete one of your Notification Policies, to stop sending matching notifications to its recipients.
# Get notification policy
Source: https://docs.sequencehq.com/reference/2024-07-30/notifications/get-notification-policy
notifications.2024-07-30.product.live GET /notifications/policies/{id}
Retrieve the details of a Notification Policy.
# List All Notification Policies
Source: https://docs.sequencehq.com/reference/2024-07-30/notifications/list-all-notification-policies
notifications.2024-07-30.product.live GET /notifications/policies
List All Notification Policies
# Remove a notification type from a policy
Source: https://docs.sequencehq.com/reference/2024-07-30/notifications/remove-a-notification-type-from-a-policy
notifications.2024-07-30.product.live DELETE /notifications/policies/{id}/notification-types/{type}
Remove a notification type from an existing Notification Policy.
# Remove a recipient from a policy
Source: https://docs.sequencehq.com/reference/2024-07-30/notifications/remove-a-recipient-from-a-policy
notifications.2024-07-30.product.live DELETE /notifications/policies/{id}/recipients/{recipient}
Delete a recipient from an existing Notification Policy.
# Get an asset
Source: https://docs.sequencehq.com/reference/2024-07-30/orchestra/get-an-asset
orchestra.2024-07-30.product.live GET /assets/{id}
Retrieves an asset by ID, including a signed URL for downloading the file.
Use this endpoint when you have an asset ID and need the asset's current metadata
or a new download URL. For example, invoice responses include attached assets in
`attachmentAssets`; pass an attachment's `id` to this endpoint to retrieve its
metadata and a new download URL.
# Upload an asset
Source: https://docs.sequencehq.com/reference/2024-07-30/orchestra/upload-an-asset
orchestra.2024-07-30.product.live POST /assets
Uploads a file and creates an asset. An asset is a stored file that you can
reference by ID elsewhere in the API.
For example, to attach a file to an invoice, upload it using this endpoint and
pass the returned `id` in `attachmentAssetIds` when calling **Create an invoice**
or **Patch an invoice**.
## Sending the file
Send a `multipart/form-data` request containing one part named `file`.
The filename must use a supported extension, and the file part must have a
supported `Content-Type`. We derive the asset's `format` and `type` from the file
part's `Content-Type`, not from its filename extension.
The request must include a `Content-Length` header indicating the size of the
multipart request body, in bytes. It must not exceed 10 MiB (10,485,760 bytes).
### Images
- `jpg` or `jpeg` with a `Content-Type` of `image/jpeg`
- `png` with a `Content-Type` of `image/png`
Image files may be re-encoded to remove metadata.
### Documents
- `pdf` with a `Content-Type` of `application/pdf`
### Binary files
- `csv` with a `Content-Type` of `text/csv`
- `txt` with a `Content-Type` of `text/plain`
- `md` with a `Content-Type` of `text/markdown`
- `rtf` with a `Content-Type` of `application/rtf`
- `doc` with a `Content-Type` of `application/msword`
- `docx` with a `Content-Type` of
`application/vnd.openxmlformats-officedocument.wordprocessingml.document`
- `xls` with a `Content-Type` of `application/vnd.ms-excel`
- `xlsx` with a `Content-Type` of
`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`
- `xlsm` with a `Content-Type` of `application/vnd.ms-excel.sheet.macroEnabled.12`
- `odt` with a `Content-Type` of `application/vnd.oasis.opendocument.text`
- `ods` with a `Content-Type` of `application/vnd.oasis.opendocument.spreadsheet`
- `zip` with a `Content-Type` of `application/zip`
# Archive a list price
Source: https://docs.sequencehq.com/reference/2024-07-30/product/archive-a-list-price
product.2024-07-30.product.live POST /list-prices/{id}/archive
Mark a list price as archived
# Archive a product
Source: https://docs.sequencehq.com/reference/2024-07-30/product/archive-a-product
product.2024-07-30.product.live POST /products/{id}/archive
Archive one of your products. Once archived, new prices cannot be created for the product.
# Create a list price
Source: https://docs.sequencehq.com/reference/2024-07-30/product/create-a-list-price
product.2024-07-30.product.live POST /list-prices
Create a new list price
# Create a new Product
Source: https://docs.sequencehq.com/reference/2024-07-30/product/create-a-new-product
product.2024-07-30.product.live POST /products
Create a new Product
# Get a list price
Source: https://docs.sequencehq.com/reference/2024-07-30/product/get-a-list-price
product.2024-07-30.product.live GET /list-prices/{id}
Get a list price by ID
# Get a Product by ID
Source: https://docs.sequencehq.com/reference/2024-07-30/product/get-a-product-by-id
product.2024-07-30.product.live GET /products/{id}
Get a Product by ID
# List all list prices
Source: https://docs.sequencehq.com/reference/2024-07-30/product/list-all-list-prices
product.2024-07-30.product.live GET /list-prices
List all list prices
# List all Products
Source: https://docs.sequencehq.com/reference/2024-07-30/product/list-all-products
product.2024-07-30.product.live GET /products
List all Products
# Update a list price
Source: https://docs.sequencehq.com/reference/2024-07-30/product/update-a-list-price
product.2024-07-30.product.live PUT /list-prices/{id}
Update a list price
# Update a Product
Source: https://docs.sequencehq.com/reference/2024-07-30/product/update-a-product
product.2024-07-30.product.live PUT /products/{id}
Update a Product
# Accept a published Quote
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/accept-a-published-quote
quote.2024-07-30.product.live POST /quotes/{id}/accept
Mark a quote as signed. This endpoint is disabled when e-signatures are active. The quote dashboard must be used instead.
# Archive a quote
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/archive-a-quote
quote.2024-07-30.product.live POST /quotes/{id}/archive
Mark a quote as archived
# Create a quote from a template
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/create-a-quote-from-a-template
quote.2024-07-30.product.live POST /quotes/from-template/{id}
Create a new quote from a quote template
# Download quote PDF
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/download-quote-pdf
quote.2024-07-30.product.live GET /quotes/{id}/download
Download the PDF for the latest published variant of a quote
# Get a published quote
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/get-a-published-quote
quote.2024-07-30.product.live GET /quotes/{id}/published
Get the latest published version of a quote by ID
# Get one of your quotes
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/get-one-of-your-quotes
quote.2024-07-30.product.live GET /quotes/{id}
Get a quote by ID including its phases
# Get quote analytics
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/get-quote-analytics
quote.2024-07-30.product.live GET /quotes/{id}/analytics
Retrieve view tracking analytics for a quote
# List quote templates
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/list-quote-templates
quote.2024-07-30.product.live GET /quote-templates
List quote templates for Sequence account
# List quotes
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/list-quotes
quote.2024-07-30.product.live GET /quotes
List all of your quotes
# Publish a quote
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/publish-a-quote
quote.2024-07-30.product.live POST /quotes/{id}/publish
Publishes the quote directly, or triggers the account's active quote approval workflow instead if one is configured.
# Send reminder emails
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/send-reminder-emails
quote.2024-07-30.product.live POST /quotes/{quoteId}/send-reminders
Send reminder emails to all unsigned participants. The latest version must be published.
# Update one of your quotes
Source: https://docs.sequencehq.com/reference/2024-07-30/quote/update-one-of-your-quotes
quote.2024-07-30.product.live PUT /quotes/{id}
Update a quote including its phases
# Archive a tax rate
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/archive-a-tax-rate
taxes.2024-07-30.product.live POST /tax-rates/{id}/archive
Archive a tax rate
# Create a new Tax Registration
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/create-a-new-tax-registration
taxes.2024-07-30.product.live POST /tax-registrations
Create a new Tax Registration
# Create a new TaxRate
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/create-a-new-taxrate
taxes.2024-07-30.product.live POST /tax-rates
Create a new TaxRate
# Delete a Tax Rate
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/delete-a-tax-rate
taxes.2024-07-30.product.live DELETE /tax-rates/{id}
Delete a Tax Rate
# Delete a Tax Registration
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/delete-a-tax-registration
taxes.2024-07-30.product.live DELETE /tax-registrations/{id}
Delete a Tax Registration
# Get a Tax Rate by ID
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/get-a-tax-rate-by-id
taxes.2024-07-30.product.live GET /tax-rates/{id}
Get a Tax Rate by ID
# Get a Tax Registration by ID
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/get-a-tax-registration-by-id
taxes.2024-07-30.product.live GET /tax-registrations/{id}
Get a Tax Registration by ID
# Get all tax registrations for a customer by customer ID
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/get-all-tax-registrations-for-a-customer-by-customer-id
taxes.2024-07-30.product.live GET /tax-registrations/for-customer/{id}
Get all tax registrations for a customer by customer ID
# Get all tax registrations for a merchant by merchant ID
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/get-all-tax-registrations-for-a-merchant-by-merchant-id
taxes.2024-07-30.product.live GET /tax-registrations/for-merchant/{id}
Get all tax registrations for a merchant by merchant ID
# List all Tax Rates
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/list-all-tax-rates
taxes.2024-07-30.product.live GET /tax-rates
List all Tax Rates
# List all Tax Registrations
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/list-all-tax-registrations
taxes.2024-07-30.product.live GET /tax-registrations
List all Tax Registrations
# Update a Tax Registration
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/update-a-tax-registration
taxes.2024-07-30.product.live PUT /tax-registrations/{id}
Update a Tax Registration
# Update a TaxRate
Source: https://docs.sequencehq.com/reference/2024-07-30/taxes/update-a-taxrate
taxes.2024-07-30.product.live PUT /tax-rates/{id}
Update a TaxRate
# Calculate usage metric for customer and timeframe
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/calculate-usage-metric-for-customer-and-timeframe
usage.2024-07-30.product.live GET /usage-metrics/{usageMetricId}/calculate
Calculate usage metric for customer and timeframe
# Create a new Usage Event
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/create-a-new-usage-event
usage.2024-07-30.product.live POST /usage-events
Create a new Usage Event
# Create a new Usage Metric
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/create-a-new-usage-metric
usage.2024-07-30.product.live POST /usage-metrics
Create a new Usage Metric
# Create a seat event
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/create-a-seat-event
usage.2024-07-30.product.live POST /seat-events
Create a new seat event. Seat events are used for calculating charges.
# Create a seat metric
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/create-a-seat-metric
usage.2024-07-30.product.live POST /seat-metrics
Create a new seat metric which can be used in prices.
# Delete a seat metric
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/delete-a-seat-metric
usage.2024-07-30.product.live DELETE /seat-metrics/{id}
Delete a seat metric
# Delete a Usage Metric
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/delete-a-usage-metric
usage.2024-07-30.product.live DELETE /usage-metrics/{id}
Delete a Usage Metric
# Get a seat event by ID
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/get-a-seat-event-by-id
usage.2024-07-30.product.live GET /seat-events/{id}
Retrieve a seat event by its ID
# Get a seat metric
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/get-a-seat-metric
usage.2024-07-30.product.live GET /seat-metrics/{id}
Retrieve the details of one of your seat metrics.
# Get a Usage Metric by ID
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/get-a-usage-metric-by-id
usage.2024-07-30.product.live GET /usage-metrics/{id}
Get a Usage Metric by ID
# List all seat events
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/list-all-seat-events
usage.2024-07-30.product.live GET /seat-events
Retrieve a paginated list of all your submitted seat events.
# List all seat metrics
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/list-all-seat-metrics
usage.2024-07-30.product.live GET /seat-metrics
Retrieve a paginated list of all your seat metrics.
# List all Usage Events
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/list-all-usage-events
usage.2024-07-30.product.live GET /usage-events
List all Usage Events
# List all Usage Metrics
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/list-all-usage-metrics
usage.2024-07-30.product.live GET /usage-metrics
List all Usage Metrics
# List Seat balances by Customer
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/list-seat-balances-by-customer
usage.2024-07-30.product.live GET /seat-balances
List Seat balances grouped by Customer and seat type.
# Update a seat metric
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/update-a-seat-metric
usage.2024-07-30.product.live PUT /seat-metrics/{id}
Update a seat metric which can be used in prices.
# Update a Usage Metric
Source: https://docs.sequencehq.com/reference/2024-07-30/usage/update-a-usage-metric
usage.2024-07-30.product.live PUT /usage-metrics/{id}
Update a Usage Metric
# Authentication
Source: https://docs.sequencehq.com/reference/authentication
Authenticate your API requests using a Client ID and Secret.
When you create your API client via the Dashboard, you are given a Client ID and Client Secret, both of which are needed to authenticate calls to our API.
Keep your Client Secret safe
Your Client Secret is generated and shown once when you create a new API client and cannot be shown again, so please make a copy of it. It can be used to initiate payments, so be sure to keep your Client Secret secure: do not make it publicly visible, for example by committing it to GitHub, deploying it in client-side code, etc.
## Authenticating an API request
To authenticate calls to our API, set the Authorization header to `Basic ` and then the Base64 encoding of the string `$clientId:$clientSecret`.
For example, if your Client ID is "key" and your Client Secret is "secret", your requests should contain the header:
```
Authorization: Basic a2V5OnNlY3JldA==
```
## Rate limits
The Sequence API uses a number of safeguards against bursts of incoming traffic to help maximize its stability. Users who send many requests in quick succession might see error responses that show up as status code `429`.
Sequence has a global rate limit of 1,500 API requests per minute per API key. The `POST /usage-events` endpoint has a higher limit of 12,000 requests per minute per API key.
Treat these limits as maximums and don’t generate unnecessary load. If you suddenly see a rising number of rate limited requests, please [contact support](mailto:support@sequencehq.com).
We may reduce limits to prevent abuse, or increase limits to enable high-traffic applications. To request an increased rate limit, please [contact support](mailto:support@sequencehq.com).
# Changes
Source: https://docs.sequencehq.com/reference/changes
All backward-incompatible changes to the Sequence REST API
## Version: 2024-07-30
### Activity Stream
* **NEW** [Get an activity log](/reference/2024-07-30/activity-stream/get-an-activity-log-by-id)
* **NEW** [List all activity logs](/reference/2024-07-30/activity-stream/list-all-activity-logs)
### Billing
* **NEW** [Delete Credit Grant](/reference/2024-07-30/billing/delete-a-credit-grant)
* **NEW** [Get V2 credit grant endpoint added](/reference/2024-07-30/billing/get-a-credit-grant)
* **NEW** [List V2 credit grants endpoint added](/reference/2024-07-30/billing/list-credit-grants)
* **UPDATED** [Get V2 credit grant](/reference/2024-07-30/billing/get-a-credit-grant)
* *Addition*: `state` with the grant's issuance and validity
* **UPDATED** [List V2 credit grants](/reference/2024-07-30/billing/list-credit-grants)
* *Addition*: `state` to response items, with each grant's issuance and validity
* **UPDATED** [List V2 credit grants](/reference/2024-07-30/billing/list-credit-grants)
* Includes credit grants held directly by a customer as well as those on billing schedules
* *Addition*: `scope` to response items, saying whether the grant is held by a customer or a billing schedule
* *Updated*: `billingScheduleId` absent for a customer grant
* *Updated*: `phaseId` absent for a customer grant
* **UPDATED** [Get V2 credit grant](/reference/2024-07-30/billing/get-a-credit-grant)
* Returns credit grants held directly by a customer as well as those on billing schedules
* *Addition*: `scope` saying whether the grant is held by a customer or a billing schedule
* *Updated*: `billingScheduleId` absent for a customer grant
* *Updated*: `phaseId` absent for a customer grant
* **NEW** [Create customer credit grant endpoint added](/reference/2024-07-30/billing/create-a-customer-credit-grant)
* **UPDATED** [Create billing schedule endpoint](/reference/2024-07-30/billing/create-billing-schedule)
* Updated `prices` to match models for Prices API
* **UPDATED** [Get billing schedule endpoint](/reference/2024-07-30/billing/get-billing-schedule)
* Updated `prices` to match models for Prices API
* *Addition*: `contractId`
* *Addition*: `paymentProvider`
* *Addition*: `autoCharge`
* **UPDATED** [Update billing schedule endpoint](/reference/2024-07-30/billing/update-billing-schedule)
* Removed `type` from request and response models
* Removed `discounts` from Billing Schedule creation request - these should now be provided as part of a Phase
* Renamed `createAsDraft` to `isDraft` on creation request
* Renamed `collectionPaymentProvider` to `paymentProvider` on creation request
* Removed `sequenceAccountId` from response model
* Removed `priceIds` from response model
* Updated `prices` to match models for Prices API
* **UPDATED** [List billing schedules endpoint](/reference/2024-07-30/billing/list-all-billing-schedules)
* Updated `prices` to match models for Prices API
* *Addition*: `paymentProvider`
* *Addition*: `autoCharge`
* **UPDATED** [Activate billing schedule endpoint](/reference/2024-07-30/billing/activate-billing-schedule)
* Updated `prices` to match models for Prices API
* *Addition*: `Added dryRun queryParam to validate without persisting`
* *Removed*: `Removed dryRun queryParam to validate without persisting`
* **UPDATED** [Archive billing schedule endpoint](/reference/2024-07-30/billing/archive-billing-schedule)
* HTTP method updated from `PUT` to `POST`
* Updated `prices` to match models for Prices API
* **NEW** [Duplicate a billing schedule endpoint](/reference/2024-07-30/billing/duplicate-a-billing-schedule)
* **NEW** [List billing schedule custom field keys endpoint](/reference/2024-07-30/billing/list-billing-schedule-custom-field-keys)
* **NEW** [Validate taxes on a billing schedule](/reference/2024-07-30/billing/validate-taxes-on-a-billing-schedule)
### Collections
* **NEW** [Get or create payment settings endpoint](/reference/2024-07-30/collections/payment-settings-for-sequence-account)
* **NEW** [Update payment settings endpoint](/reference/2024-07-30/collections/update-payment-settings-for-sequence-account)
* **NEW** [Get or create Stripe collection settings endpoint](/reference/2024-07-30/collections/stripe-collection-settings-for-sequence-account)
* **NEW** [Update Stripe collection settings endpoint](/reference/2024-07-30/collections/update-stripe-collection-settings-for-sequence-account)
### Customers
* **UPDATED** [Get customer endpoint](/reference/2024-07-30/customer/get-customer)
* Added field `organizations`
* Removed `contactName`, `email` and `billingEmails` fields in favour of `contacts`
* Removed field `telephone`
* Removed field `deletedAt`
* *Addition*: `status` to request and response
* **UPDATED** [List customers endpoint](/reference/2024-07-30/customer/list-customers)
* Added field `organizations`
* Removed `contactName`, `email` and `billingEmails` fields
* Removed field `telephone`
* Removed field `deletedAt`
* **UPDATED** [Create customer endpoint](/reference/2024-07-30/customer/create-customer)
* Added optional `parentId` field to request
* Added field `organizations` to response
* Removed `contactName`, `email` and `billingEmails` fields in favour of `contacts` in request and response
* Removed field `telephone` from request and response
* Removed field `deletedAt` from response
* *Addition*: `status` to request and response
* **UPDATED** [Update customer endpoint](/reference/2024-07-30/customer/update-customer)
* Added optional `parentId` field to request
* Added field `organizations` to response
* Removed `contactName`, `email` and `billingEmails` fields in favour of `contacts` in request and response
* Removed field `telephone` from request and response
* Removed field `deletedAt` from response
* *Addition*: `status` to request and response
* **UPDATED** [Archive customer endpoint](/reference/2024-07-30/customer/archive-customer)
* HTTP method updated from `PUT` to `POST`
* Added field `organizations`
* Removed `contactName`, `email` and `billingEmails` fields in favour of `contacts`
* Removed field `telephone`
* Removed field `deletedAt`
* *Addition*: `status` to request and response
* **NEW** [List customer custom property keys endpoint](/reference/2024-07-30/customer/list-customer-custom-property-keys)
* **NEW** [Create customer organization endpoint](/reference/2024-07-30/customer/create-a-customer-organization)
* **NEW** [Add customer organization member endpoint](/reference/2024-07-30/customer/add-a-customer-to-a-customer-organization)
* **NEW** [Replace customer organization members endpoint](/reference/2024-07-30/customer/replace-members-of-a-customer-organization)
### Invoices
* **NEW** [Patch sent invoice endpoint](/reference/2024-07-30/invoices/patch-a-sent-invoice)
* **NEW** [Mark invoices as sent endpoint](/reference/2024-07-30/invoices/finalize-and-mark-invoice-as-sent-without-triggering-actions-except-revenue-recognition)
* **NEW** [List Currency Conversions for an Invoice](/reference/2024-07-30/invoices/list-currency-conversions-for-an-invoice)
* **NEW** [Get invoice render settings endpoint](/reference/2024-07-30/invoices/get-or-create-invoice-render-settings)
* **NEW** [Update invoice render settings endpoint](/reference/2024-07-30/invoices/update-an-invoice-render-settings)
* **UPDATED** [Finalize credit note](/reference/2024-07-30/invoices/finalize-credit-note)
* *Updated*: `billingPeriodStart, billingPeriodEnd, and accountingDate validation added`
* **UPDATED** [Finalize and send credit note](/reference/2024-07-30/invoices/finalize-and-send-credit-note)
* *Updated*: `billingPeriodStart, billingPeriodEnd, and accountingDate validation added`
* **NEW** [Mark credit note as sent](/reference/2024-07-30/invoices/mark-credit-note-as-sent-without-triggering-actions-except-revenue-recognition)
### Orchestra
* **NEW** [Upload an asset](/reference/2024-07-30/orchestra/upload-an-asset)
* **NEW** [Get an asset](/reference/2024-07-30/orchestra/get-an-asset)
### Products
* **UPDATED** [Archive list price endpoint](/reference/2024-07-30/product/archive-a-list-price)
* HTTP method updated from `PUT` to `POST`
* **UPDATED** [Get Product](/reference/2024-07-30/product/get-a-product-by-id)
* *Addition*: `taxCategoryId` to response
* **UPDATED** [Create Product](/reference/2024-07-30/product/create-a-new-product)
* *Addition*: `taxCategoryId` to request and response
* **UPDATED** [Update Product](/reference/2024-07-30/product/update-a-product)
* *Addition*: `taxCategoryId` to request and response
* **UPDATED** [List Products](/reference/2024-07-30/product/list-all-products)
* *Addition*: `taxCategoryId` to response
### Quotes
* **NEW** [Create Quote From Template](/reference/2024-07-30/quote/create-a-quote-from-a-template)
* **NEW** [Send Signing Reminders](/reference/2024-07-30/quote/send-reminder-emails)
* **NEW** [Download quote pdf endpoint](/reference/2024-07-30/quote/download-quote-pdf)
* **NEW** [Get Published Quote](/reference/2024-07-30/quote/get-a-published-quote)
* **NEW** [List quote templates endpoint](/reference/2024-07-30/quote/list-quote-templates)
* **NEW** [Get quote analytics](/reference/2024-07-30/quote/get-quote-analytics)
### Taxes
* **UPDATED** [Archive tax rate endpoint](/reference/2024-07-30/taxes/archive-a-tax-rate)
* HTTP method updated from `PUT` to `POST`
## Version: 2024-05-09
Naming improvements and simplifications across billing, customers, products, taxes and usage APIs. Further details below.
### Billing
* Removed `POST /discounts` endpoint.
* Renamed `externalIds` to `integrationIds` in `Price` requests and updated model to be `{service: string, id: string}`.
* Renamed `externalIds` to `integrationIds` in `Price` responses and updated model to be `{service: string, id: string, lastSynced: timestamp}`.
* Removed `sequenceAccountId` and `deletedAt` from list `Price` response model.
* Removed `sequenceAccountId` from `Price` deletion response model.
* Removed `sequenceAccountId` from `Price` creation response model.
* Renamed `parameters` to `customMetricParameters` in `Price` request and response models.
* Updated the following fields on seat-based pricing structure:
* Renamed `seatTypeId` to `seatMetricId`
* Removed values `USE_FIRST` and `PRORATE_ALL_CHANGES` from `prorationStrategy`
* Renamed `includedSeats` to `contractedMinimumSeats`
* Removed `chargeMethod`
* Updated the following fields on the `Billing Schedule` models:
* Removed `type` from request and response models
* Removed `discounts` from `Billing Schedule` creation request - these should now be provided as part of a `Phase`
* Renamed `createAsDraft` to `isDraft` on creation request
* Renamed `collectionPaymentProvider` to `paymentProvider` on creation request
* Removed `sequenceAccountId` from response model
* Removed `priceIds` from response model
### Collections
* Updated the following URLs
* `POST /billing-schedule-settings` -> `POST /payments/settings/billing-schedules`
* `GET /billing-schedule-settings/for-billing-schedule/{id}` -> `GET /payments/settings/billing-schedules/for-billing-schedule/{id}`
* `GET /billing-schedule-settings/{id}` -> `GET /payments/settings/billing-schedules/{id}`
* `PUT /billing-schedule-settings/{id}` -> `PUT /payments/settings/billing-schedules/{id}`
* `DELETE /billing-schedule-settings/{id}` -> `DELETE /payments/settings/billing-schedules/{id}`
* `POST /invoice-settings` -> `POST /payments/settings/invoices`
* `GET /invoice-settings/for-invoice/{id}` -> `GET /payments/settings/invoices/for-invoice/{id}`
* `GET /invoice-settings/{id}` -> `GET /payments/settings/invoices/{id}`
* `PUT /invoice-settings/{id}` -> `PUT /payments/settings/invoices/{id}`
* `DELETE /invoice-settings/{id}` -> `DELETE /payments/settings/invoices/{id}`
* `POST /customer-settings` -> `POST /payments/settings/customers`
* `GET /customer-settings/{id}` -> `GET /payments/settings/customers/{id}`
* `PUT /customer-settings/{id}` -> `PUT /payments/settings/customers/{id}`
* `DELETE /customer-settings/{id}` -> `DELETE /payments/settings/customers/{id}`
### Customers
* Renamed `externalIds` to `integrationIds` in `Customer` requests and updated model to be `{service: string, id: string}`.
* Renamed `externalIds` to `integrationIds` in `Customer` responses and updated model to be `{service: string, id: string, lastSynced: timestamp}`.
### Products
* Removed `sequenceAccountId` from `Product` request and response models.
### Taxes
* Removed `subRates` from `Tax Rate` request and response models.
* Removed `sequenceAccountId` from `Tax Rate` response models.
### Usage
* Renamed `Seat Types` to `Seat Metrics` and updated URLs to be `/seat-metrics`.
* Removed `sequenceAccountId` from `Seat Metric` response model.
* Renamed `sequenceUserId` to `createdBy` on `Seat Metric` response model and removed it from request model.
* Renamed `key` to `seatType` on `Seat Metric` request and response models.
* Renamed `Seat Snapshots` to `Seat Events` and updated URLs to be `/seat-events`.
* Removed `seatChanges` from `Seat Event` request and response models.
## Version: 2024-01-01
Initial release of the versioned Sequence REST API.
# Getting Started
Source: https://docs.sequencehq.com/reference/gettingStarted
Learn how to completely automate your financial operations
The Sequence API lets developers securely manage and automate all of the financial operations of your company.
The API is based on REST, and uses standard REST features such as resource-based endpoints, HTTP verbs, standard responses and authentication.
We have 2 environments - Production and Sandbox.
Once you've set up your account you'll be able to authenticate your requests.
Define the metric that provides your customers with value.
Stream the usage events to Sequence to be calculated real time.
# Delete User
Source: https://docs.sequencehq.com/reference/latest/account/delete-user
account.latest.product.live DELETE /users/{id}
Delete one of your Users.
# Get a user
Source: https://docs.sequencehq.com/reference/latest/account/get-a-user
account.latest.product.live GET /users/{id}
Retrieve the details of one of your users.
# Get your account
Source: https://docs.sequencehq.com/reference/latest/account/get-your-account
account.latest.product.live GET /sequence-accounts/{id}
Retrieve the details of your Sequence account.
# List all Users
Source: https://docs.sequencehq.com/reference/latest/account/list-all-users
account.latest.product.live GET /users
List all users within your Sequence account.
# List your accounts
Source: https://docs.sequencehq.com/reference/latest/account/list-your-accounts
account.latest.product.live GET /sequence-accounts
List all of your Sequence accounts.
# Update Account
Source: https://docs.sequencehq.com/reference/latest/account/update-account
account.latest.product.live PUT /sequence-accounts/{id}
Update Sequence account information
# Get an Activity Log by ID
Source: https://docs.sequencehq.com/reference/latest/activity-stream/get-an-activity-log-by-id
activity-stream.latest.product.live GET /activity-logs/{id}
Get an Activity Log by ID
# List all Activity Logs
Source: https://docs.sequencehq.com/reference/latest/activity-stream/list-all-activity-logs
activity-stream.latest.product.live GET /activity-logs
List all Activity Logs
# Activate Billing Schedule
Source: https://docs.sequencehq.com/reference/latest/billing/activate-billing-schedule
billing.latest.product.live PUT /billing-schedules/{billingScheduleId}/activate
Activate an existing draft [Billing Schedule](/billing/create-billing-schedules).
# Archive Billing Schedule
Source: https://docs.sequencehq.com/reference/latest/billing/archive-billing-schedule
billing.latest.product.live POST /billing-schedules/{billingScheduleId}/archive
Archive a [Billing Schedule](/billing/create-billing-schedules).
# Create a customer credit grant
Source: https://docs.sequencehq.com/reference/latest/billing/create-a-customer-credit-grant
billing.latest.product.live POST /credit-grants
Create a one-off cash credit grant held by a customer directly, outside any billing schedule. Its credit is issued after this request returns, so the response shows the grant as it stands at that moment: usually `state.issuance` PENDING with a zero `availableBalance`, becoming ISSUED with the full balance once funded. Retrying with the same `Idempotency-Key` returns the original grant without creating another. Keys never expire within your account, and a key reused with different terms is rejected.
# Create a new credit grant
Source: https://docs.sequencehq.com/reference/latest/billing/create-a-new-credit-grant
billing.latest.product.live POST /credits
Create a new credit grant
# Create a new Price
Source: https://docs.sequencehq.com/reference/latest/billing/create-a-new-price
billing.latest.product.live POST /prices
Create a new Price
# Create Billing Schedule
Source: https://docs.sequencehq.com/reference/latest/billing/create-billing-schedule
billing.latest.product.live POST /billing-schedules
Create a new [Billing Schedule](/billing/create-billing-schedules).
# Delete a credit grant
Source: https://docs.sequencehq.com/reference/latest/billing/delete-a-credit-grant
billing.latest.product.live DELETE /credits/{id}
Delete a credit grant by ID
# Delete a discount
Source: https://docs.sequencehq.com/reference/latest/billing/delete-a-discount
billing.latest.product.live DELETE /discounts/{id}
Delete a discount
# Delete a Price
Source: https://docs.sequencehq.com/reference/latest/billing/delete-a-price
billing.latest.product.live DELETE /prices/{id}
Delete a Price
# Duplicate a billing schedule
Source: https://docs.sequencehq.com/reference/latest/billing/duplicate-a-billing-schedule
billing.latest.product.live POST /billing-schedules/{billingScheduleId}/duplicate
Duplicate a [billing schedule](/billing/create-billing-schedules) onto the customer named in the request. The copy is always created as a draft, and is given its own prices, phases and credit grants rather than sharing the source's.
Attachments and custom field values belong to the customer rather than to the schedule. Duplicating for the same customer carries both across, the attachments referencing the same assets so that nothing is re-uploaded. Duplicating for a different customer attaches nothing, and carries the custom field keys with blank values.
# Get a credit grant
Source: https://docs.sequencehq.com/reference/latest/billing/get-a-credit-grant
billing.latest.product.live GET /credit-grants/{id}
Get a credit grant by ID, whether held by a customer or on one of their billing schedules, including its available balance, issuance and validity. Usage awaiting processing is not yet deducted from `availableBalance`.
# Get a customer credit grant
Source: https://docs.sequencehq.com/reference/latest/billing/get-a-customer-credit-grant
billing.latest.product.live GET /credits/{id}
Get a customer credit grant by ID
# Get a discount by ID
Source: https://docs.sequencehq.com/reference/latest/billing/get-a-discount-by-id
billing.latest.product.live GET /discounts/{id}
Get a discount by ID
# Get a Price by ID
Source: https://docs.sequencehq.com/reference/latest/billing/get-a-price-by-id
billing.latest.product.live GET /prices/{id}
Get a Price by ID
# Get Billing Schedule
Source: https://docs.sequencehq.com/reference/latest/billing/get-billing-schedule
billing.latest.product.live GET /billing-schedules/{billingScheduleId}
Retrieve the details of one of your Billing Schedules.
# List all billing products
Source: https://docs.sequencehq.com/reference/latest/billing/list-all-billing-products
billing.latest.product.live GET /billing-products
List all products with billing prices
# List all Billing Schedules
Source: https://docs.sequencehq.com/reference/latest/billing/list-all-billing-schedules
billing.latest.product.live GET /billing-schedules
List all Billing Schedules.
# List all discounts
Source: https://docs.sequencehq.com/reference/latest/billing/list-all-discounts
billing.latest.product.live GET /discounts
List all discounts for Sequence account
# List all Prices
Source: https://docs.sequencehq.com/reference/latest/billing/list-all-prices
billing.latest.product.live GET /prices
List all Prices
# List Billing Schedule Custom Field Keys
Source: https://docs.sequencehq.com/reference/latest/billing/list-billing-schedule-custom-field-keys
billing.latest.product.live GET /billing-schedule-custom-field-keys
List all distinct custom field keys across billing schedules for the current account.
# List Credit Balances for a customer
Source: https://docs.sequencehq.com/reference/latest/billing/list-credit-balances-for-a-customer
billing.latest.product.live GET /credits/{customerId}/balances
List all Credit Balances including their grants and transactions
# List credit grants
Source: https://docs.sequencehq.com/reference/latest/billing/list-credit-grants
billing.latest.product.live GET /credit-grants
List credit grants on your account, whether held by a customer or on one of their billing schedules, newest first by default. Filter by billing schedule or customer, and use the pagination cursors to retrieve more results. Includes scheduled, unissued, depleted and expired grants. Issuance and validity are reported in `state`; `availableBalance` reports the credit usable now. Usage awaiting processing is not yet deducted from `availableBalance`.
# List Credit Grants for a customer
Source: https://docs.sequencehq.com/reference/latest/billing/list-credit-grants-for-a-customer
billing.latest.product.live GET /credits/{customerId}/grants
List all Credit Grants and their outstanding balances where the balance is non-zero
# List customer credit grants
Source: https://docs.sequencehq.com/reference/latest/billing/list-customer-credit-grants
billing.latest.product.live GET /credits
List all customer credit grants for this account
# Update a discount
Source: https://docs.sequencehq.com/reference/latest/billing/update-a-discount
billing.latest.product.live PUT /discounts/{id}
Update a discount
# Update a Price
Source: https://docs.sequencehq.com/reference/latest/billing/update-a-price
billing.latest.product.live PUT /prices/{id}
Update a Price
# Update Billing Schedule
Source: https://docs.sequencehq.com/reference/latest/billing/update-billing-schedule
billing.latest.product.live PUT /billing-schedules/{billingScheduleId}
Update an existing [Billing Schedule](/billing/create-billing-schedules).
# Validate taxes on a billing schedule
Source: https://docs.sequencehq.com/reference/latest/billing/validate-taxes-on-a-billing-schedule
billing.latest.product.live POST /billing-schedules/validate-taxes
Validate the tax strategy that will apply to the given billing schedule before it's created or updated.
# Create billing schedule payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/create-billing-schedule-payment-settings
collections.latest.product.live POST /payments/settings/billing-schedules
Create payment settings for billing schedules. Invoices for billing schedules with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Billing schedule payment settings override customer payment settings. You can also override billing schedule payment settings with invoice payment settings.
# Create customer payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/create-customer-payment-settings
collections.latest.product.live POST /payments/settings/customers
Create payment settings for customers. Invoices for customers with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. You can override customer payment settings with billing schedule payment settings and invoice payment settings.
# Create invoice payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/create-invoice-payment-settings
collections.latest.product.live POST /payments/settings/invoices
Create payment settings for invoices. Invoices with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Invoice payment settings override billing schedule payment settings and customer payment settings.
# Delete billing schedule payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/delete-billing-schedule-payment-settings
collections.latest.product.live DELETE /payments/settings/billing-schedules/{id}
Delete payment settings for billing schedules. Invoices for billing schedules with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Billing schedule payment settings override customer payment settings. You can also override billing schedule payment settings with invoice payment settings.
# Delete customer payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/delete-customer-payment-settings
collections.latest.product.live DELETE /payments/settings/customers/{id}
Delete payment settings for customers. Invoices for customers with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. You can override customer payment settings with billing schedule payment settings and invoice payment settings.
# Delete invoice payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/delete-invoice-payment-settings
collections.latest.product.live DELETE /payments/settings/invoices/{id}
Delete payment settings for invoices. Invoices with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Invoice payment settings override billing schedule payment settings and customer payment settings.
# Get billing schedule payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/get-billing-schedule-payment-settings
collections.latest.product.live GET /payments/settings/billing-schedules/{id}
Get payment settings for billing schedules. Invoices for billing schedules with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Billing schedule payment settings override customer payment settings. You can also override billing schedule payment settings with invoice payment settings.
# Get billing schedule payment settings by billing schedule ID
Source: https://docs.sequencehq.com/reference/latest/collections/get-billing-schedule-payment-settings-by-billing-schedule-id
collections.latest.product.live GET /payments/settings/billing-schedules/for-billing-schedule/{id}
Get payment settings for billing schedules by billing schedule ID. Invoices for billing schedules with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Billing schedule payment settings override customer payment settings. You can also override billing schedule payment settings with invoice payment settings.
# Get customer payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/get-customer-payment-settings
collections.latest.product.live GET /payments/settings/customers/{id}
Get payment settings for customers. Invoices for customers with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. You can override customer payment settings with billing schedule payment settings and invoice payment settings.
# Get invoice payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/get-invoice-payment-settings
collections.latest.product.live GET /payments/settings/invoices/{id}
Get payment settings for invoices. Invoices with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Invoice payment settings override billing schedule payment settings and customer payment settings.
# Get invoice payment settings by invoice ID
Source: https://docs.sequencehq.com/reference/latest/collections/get-invoice-payment-settings-by-invoice-id
collections.latest.product.live GET /payments/settings/invoices/for-invoice/{id}
Get payment settings for invoices by invoice ID. Invoices with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Invoice payment settings override billing schedule payment settings and customer payment settings.
# Payment settings for Sequence account
Source: https://docs.sequencehq.com/reference/latest/collections/payment-settings-for-sequence-account
collections.latest.product.live GET /payments/settings
Retrieves payment settings for the current Sequence accounts. If no settings exist, default settings will be returned.
# Stripe collection settings for Sequence account
Source: https://docs.sequencehq.com/reference/latest/collections/stripe-collection-settings-for-sequence-account
collections.latest.product.live GET /stripe/collections/settings
Retrieves Stripe collection settings for the current Sequence accounts. If no settings exist, default settings will be returned.
# Update billing schedule payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/update-billing-schedule-payment-settings
collections.latest.product.live PUT /payments/settings/billing-schedules/{id}
Update payment settings for billing schedules. Invoices for billing schedules with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Billing schedule payment settings override customer payment settings. You can also override billing schedule payment settings with invoice payment settings.
# Update customer payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/update-customer-payment-settings
collections.latest.product.live PUT /payments/settings/customers/{id}
Update payment settings for customers. Invoices for customers with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. You can override customer payment settings with billing schedule payment settings and invoice payment settings.
# Update invoice payment settings
Source: https://docs.sequencehq.com/reference/latest/collections/update-invoice-payment-settings
collections.latest.product.live PUT /payments/settings/invoices/{id}
Update payment settings for invoices. Invoices with payment settings contain payment links. If payment details are on file with Stripe or other payment providers, then payments are automatically collected when you finalise and send an invoice. Invoice payment settings override billing schedule payment settings and customer payment settings.
# Update payment settings for Sequence account
Source: https://docs.sequencehq.com/reference/latest/collections/update-payment-settings-for-sequence-account
collections.latest.product.live PUT /payments/settings/{id}
Updates payment settings for the current Sequence accounts.
# Update Stripe collection settings for Sequence account
Source: https://docs.sequencehq.com/reference/latest/collections/update-stripe-collection-settings-for-sequence-account
collections.latest.product.live PUT /stripe/collections/settings/{id}
Updates Stripe collection settings for the current Sequence accounts.
# Add a customer to a customer organization
Source: https://docs.sequencehq.com/reference/latest/customer/add-a-customer-to-a-customer-organization
customer.latest.product.live POST /customer-organizations/{id}/members
Add a [customer](/customers/overview) to an existing customer organization. This action does not impact their membership in other organizations.
# Archive a contact
Source: https://docs.sequencehq.com/reference/latest/customer/archive-a-contact
customer.latest.product.live POST /customers/{customer}/contacts/{id}/archive
Mark a contact as archived
# Archive customer
Source: https://docs.sequencehq.com/reference/latest/customer/archive-customer
customer.latest.product.live POST /customers/{id}/archive
Archive a [customer](/customers/overview).
# Create a customer organization
Source: https://docs.sequencehq.com/reference/latest/customer/create-a-customer-organization
customer.latest.product.live POST /customer-organizations
Create a customer organization to manage parent-child relationships for your [customers](/customers/overview).
# Create a new contact
Source: https://docs.sequencehq.com/reference/latest/customer/create-a-new-contact
customer.latest.product.live POST /customers/{customer}/contacts
Create a contact
# Create a new Customer Alias
Source: https://docs.sequencehq.com/reference/latest/customer/create-a-new-customer-alias
customer.latest.product.live POST /customer-aliases
Create a new Customer Alias
# Create customer
Source: https://docs.sequencehq.com/reference/latest/customer/create-customer
customer.latest.product.live POST /customers
Create a new [customer](/customers/overview), who you can send money to and receive money from.
# Delete a Customer Alias
Source: https://docs.sequencehq.com/reference/latest/customer/delete-a-customer-alias
customer.latest.product.live DELETE /customer-aliases/{id}
Delete a Customer Alias
# Get customer
Source: https://docs.sequencehq.com/reference/latest/customer/get-customer
customer.latest.product.live GET /customers/{id}
Retrieve the details of one of your [Customers](/customers/overview).
# Get Customer Aliases
Source: https://docs.sequencehq.com/reference/latest/customer/get-customer-aliases
customer.latest.product.live GET /customers/{id}/aliases
Retrieve the details of one of your [Customer's](/customers/overview) aliases.
# Get customer by alias
Source: https://docs.sequencehq.com/reference/latest/customer/get-customer-by-alias
customer.latest.product.live GET /customers/by-alias/{alias}
Retrieve the details of one of your [customers](/customers/overview) using one of their aliases.
# List all contacts for a customer
Source: https://docs.sequencehq.com/reference/latest/customer/list-all-contacts-for-a-customer
customer.latest.product.live GET /customers/{customer}/contacts
List all contacts for a customer
# List all Customer Aliases
Source: https://docs.sequencehq.com/reference/latest/customer/list-all-customer-aliases
customer.latest.product.live GET /customer-aliases
List all Customer Aliases
# List customer custom property keys
Source: https://docs.sequencehq.com/reference/latest/customer/list-customer-custom-property-keys
customer.latest.product.live GET /customer-custom-property-keys
List all distinct custom property keys across customers for the current account.
# List customers
Source: https://docs.sequencehq.com/reference/latest/customer/list-customers
customer.latest.product.live GET /customers
List all [customers](/customers/overview).
# Replace members of a customer organization
Source: https://docs.sequencehq.com/reference/latest/customer/replace-members-of-a-customer-organization
customer.latest.product.live PUT /customer-organizations/{id}/members
Replace all [customer](/customers/overview) in an existing customer organization. This action does not impact their membership in other organizations.
# Update a contact
Source: https://docs.sequencehq.com/reference/latest/customer/update-a-contact
customer.latest.product.live PUT /customers/{customer}/contacts/{id}
Update a contact
# Update a Customer Alias
Source: https://docs.sequencehq.com/reference/latest/customer/update-a-customer-alias
customer.latest.product.live PUT /customer-aliases/{id}
Update a Customer Alias
# Update customer
Source: https://docs.sequencehq.com/reference/latest/customer/update-customer
customer.latest.product.live PUT /customers/{id}
Update the details of one of your [customers](/customers/overview).
# Apply a Credit Note to an Invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/apply-a-credit-note-to-an-invoice
invoices.latest.product.live POST /credit-note-applications
Allocates an amount from a Credit Note's balance to an Invoice's balance.
# Convert upcoming invoice to draft
Source: https://docs.sequencehq.com/reference/latest/invoices/convert-upcoming-invoice-to-draft
invoices.latest.product.live POST /invoices/{id}/draft
Updates to DRAFT status and recalculates invoice. Returns 409 when an earlier billing run this document corrects has no document yet: PRIOR_RUN_STILL_IN_FLIGHT means retry shortly, OLD_BILLING_RUN_INCOMPLETE means escalate, as the earlier run needs repair. SUPERSEDED_BY_CREDIT_NOTE means the recalculation turned the invoice into a credit note.
# Create a new Credit Note
Source: https://docs.sequencehq.com/reference/latest/invoices/create-a-new-credit-note
invoices.latest.product.live POST /credit-notes
Create a new Credit Note
# Create a new Credit Note Line Item
Source: https://docs.sequencehq.com/reference/latest/invoices/create-a-new-credit-note-line-item
invoices.latest.product.live POST /credit-notes/{creditnote}/line-items
Create a new Credit Note Line Item
# Create a new Credit Note Line Item Group
Source: https://docs.sequencehq.com/reference/latest/invoices/create-a-new-credit-note-line-item-group
invoices.latest.product.live POST /credit-notes/{creditnote}/line-item-groups
Create a new Credit Note Line Item Group
# Create a new Line Item
Source: https://docs.sequencehq.com/reference/latest/invoices/create-a-new-line-item
invoices.latest.product.live POST /invoices/{invoice}/line-items
Create a new Line Item
# Create a new Line Item Group
Source: https://docs.sequencehq.com/reference/latest/invoices/create-a-new-line-item-group
invoices.latest.product.live POST /invoices/{invoice}/line-item-groups
Create a new Line Item Group
# Create an invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/create-an-invoice
invoices.latest.product.live POST /invoices
Create a new invoice
# Delete a Credit Note
Source: https://docs.sequencehq.com/reference/latest/invoices/delete-a-credit-note
invoices.latest.product.live DELETE /credit-notes/{id}
Delete a Credit Note
# Delete a Credit Note Line Item
Source: https://docs.sequencehq.com/reference/latest/invoices/delete-a-credit-note-line-item
invoices.latest.product.live DELETE /credit-notes/{creditnote}/line-items/{id}
Delete a Credit Note Line Item
# Delete a Credit Note Line Item Group
Source: https://docs.sequencehq.com/reference/latest/invoices/delete-a-credit-note-line-item-group
invoices.latest.product.live DELETE /credit-notes/{creditnote}/line-item-groups/{id}
Delete a Credit Note Line Item Group
# Delete a Line Item Group
Source: https://docs.sequencehq.com/reference/latest/invoices/delete-a-line-item-group
invoices.latest.product.live DELETE /invoices/{invoice}/line-item-groups/{id}
Delete a Line Item Group
# Delete an Invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/delete-an-invoice
invoices.latest.product.live DELETE /invoices/{id}
Delete an Invoice. NB. You can only delete a draft or in-progress invoice. If you want to correct an invoice you have already finalised, you should void it instead. If you want to correct an invoice you have already sent, you should create a credit note.
# Deletes a Line Item
Source: https://docs.sequencehq.com/reference/latest/invoices/deletes-a-line-item
invoices.latest.product.live DELETE /invoices/{invoice}/line-items/{id}
Deletes a Line Item
# Download credit note PDF
Source: https://docs.sequencehq.com/reference/latest/invoices/download-credit-note-pdf
invoices.latest.product.live GET /credit-notes/{id}/download
Download credit note PDF
# Download invoice PDF
Source: https://docs.sequencehq.com/reference/latest/invoices/download-invoice-pdf
invoices.latest.product.live GET /invoices/{id}/download
Download invoice PDF
# Finalize and mark invoice as sent without triggering actions except revenue recognition
Source: https://docs.sequencehq.com/reference/latest/invoices/finalize-and-mark-invoice-as-sent-without-triggering-actions-except-revenue-recognition
invoices.latest.product.live POST /invoices/{id}/mark-as-sent
Finalizes an invoice (if not already finalized) and sets its status to SENT. Emails or notifications are not sent. Integration syncs do not happen. Journal entries are created for the invoice.
# Finalize and send credit note
Source: https://docs.sequencehq.com/reference/latest/invoices/finalize-and-send-credit-note
invoices.latest.product.live POST /credit-notes/{id}/finalize-and-send
Updates to SENT status, generates credit note PDF and sends to end-customer
# Finalize and send invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/finalize-and-send-invoice
invoices.latest.product.live POST /invoices/{id}/finalize-and-send
Updates to SENT status, generates invoice PDF and sends to end-customer
# Finalize credit note
Source: https://docs.sequencehq.com/reference/latest/invoices/finalize-credit-note
invoices.latest.product.live POST /credit-notes/{id}/finalize
Updates to FINAL status, generates credit note PDF and prevents further editing
# Finalize invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/finalize-invoice
invoices.latest.product.live POST /invoices/{id}/finalize
Updates to FINAL status, generates invoice PDF and prevents further editing
# Fix invoices billing runs
Source: https://docs.sequencehq.com/reference/latest/invoices/fix-invoices-billing-runs
invoices.latest.product.live POST /invoices/fix-billing-runs
Fix invoices with missing billing runs
# Get a Credit Note by ID
Source: https://docs.sequencehq.com/reference/latest/invoices/get-a-credit-note-by-id
invoices.latest.product.live GET /credit-notes/{id}
Get a Credit Note by ID
# Get an Invoice by ID
Source: https://docs.sequencehq.com/reference/latest/invoices/get-an-invoice-by-id
invoices.latest.product.live GET /invoices/{id}
Get an Invoice by ID
# Get an invoice summary
Source: https://docs.sequencehq.com/reference/latest/invoices/get-an-invoice-summary
invoices.latest.product.live GET /invoices/summary
Returns aggregate invoice totals (count and gross total) grouped by currency for the invoices matching the supplied filters. Totals cover the whole matching set, so accurate figures can be retrieved in a single request without paginating.
# Get or create Invoice Render Settings
Source: https://docs.sequencehq.com/reference/latest/invoices/get-or-create-invoice-render-settings
invoices.latest.product.live GET /invoices/render-settings
Returns invoice render settings or creates new settings if they do not exist
# List all Credit Note Line Item Groups
Source: https://docs.sequencehq.com/reference/latest/invoices/list-all-credit-note-line-item-groups
invoices.latest.product.live GET /credit-notes/{creditnote}/line-item-groups
List all Credit Note Line Item Groups
# List all Credit Note Line Items
Source: https://docs.sequencehq.com/reference/latest/invoices/list-all-credit-note-line-items
invoices.latest.product.live GET /credit-notes/{creditnote}/line-items
List all Credit Note Line Items
# List all Credit Notes
Source: https://docs.sequencehq.com/reference/latest/invoices/list-all-credit-notes
invoices.latest.product.live GET /credit-notes
List all Credit Notes for this Sequence account
# List all Invoices
Source: https://docs.sequencehq.com/reference/latest/invoices/list-all-invoices
invoices.latest.product.live GET /invoices
List all invoices. balance and balanceVersion are returned only for FINAL and SENT invoices that already have a ledger balance. An absent balance means it is unavailable, never that the invoice is settled.
# List all Line Item Groups
Source: https://docs.sequencehq.com/reference/latest/invoices/list-all-line-item-groups
invoices.latest.product.live GET /invoices/{invoice}/line-item-groups
List all Line Item Groups
# List all Line Items
Source: https://docs.sequencehq.com/reference/latest/invoices/list-all-line-items
invoices.latest.product.live GET /invoices/{invoice}/line-items
List all Line Items
# List Currency Conversions for an Invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/list-currency-conversions-for-an-invoice
invoices.latest.product.live GET /invoices/{id}/currency-conversions
Lists all currency conversions for a specific invoice.
Currency conversions are automatically created for invoices that require regulatory
compliance (e.g., UK VAT requiring GBP conversion for foreign currency invoices).
# List Invoice summaries
Source: https://docs.sequencehq.com/reference/latest/invoices/list-invoice-summaries
invoices.latest.product.live GET /invoices/list-summary
List invoices with only the fields the summary table renders. balance and balanceVersion are returned only for FINAL and SENT invoices that already have a ledger balance. An absent balance means it is unavailable, never that the invoice is settled.
# Mark credit note as sent without triggering actions except revenue recognition
Source: https://docs.sequencehq.com/reference/latest/invoices/mark-credit-note-as-sent-without-triggering-actions-except-revenue-recognition
invoices.latest.product.live POST /credit-notes/{id}/mark-as-sent
Finalizes a credit note (if not already finalized) and sets its status to SENT. Emails or notifications are not sent. Integration syncs do not happen. Journal entries are created for the credit note.
# Merge invoices
Source: https://docs.sequencehq.com/reference/latest/invoices/merge-invoices
invoices.latest.product.live POST /invoices/merge
Merge multiple draft invoices into one
# Patch a sent invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/patch-a-sent-invoice
invoices.latest.product.live PATCH /invoices/{id}/sent
Patch fields on a SENT invoice. Supports updating the purchase order number, customer legal company name, customer billing address, memo, reference, and due date. Setting a due date records it as manually chosen and clears the invoice's stored payment terms, so it will not be recomputed from them later. Neither the due date nor the customer legal company name can be cleared: sending an explicit null for either is rejected.
# Patch an invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/patch-an-invoice
invoices.latest.product.live PATCH /invoices/{id}
Patch an invoice
# Reconcile invoices with external integration
Source: https://docs.sequencehq.com/reference/latest/invoices/reconcile-invoices-with-external-integration
invoices.latest.product.live POST /invoices/reconcile-with-integration
Reconcile invoice properties between our system and integration
# Send a payment reminder for an invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/send-a-payment-reminder-for-an-invoice
invoices.latest.product.live POST /invoices/{id}/send-payment-reminder
Send a payment reminder to the billing contacts for an invoice
# Send credit note
Source: https://docs.sequencehq.com/reference/latest/invoices/send-credit-note
invoices.latest.product.live POST /credit-notes/{id}/send
Updates to SENT status and sends to end-customer
# Send invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/send-invoice
invoices.latest.product.live POST /invoices/{id}/send
Updates to SENT status and sends to end-customer
# Update a Credit Note
Source: https://docs.sequencehq.com/reference/latest/invoices/update-a-credit-note
invoices.latest.product.live PUT /credit-notes/{id}
Update a Credit Note
# Update a Credit Note Line Item
Source: https://docs.sequencehq.com/reference/latest/invoices/update-a-credit-note-line-item
invoices.latest.product.live PUT /credit-notes/{creditnote}/line-items/{id}
Update a Credit Note Line Item
# Update a Credit Note Line Item Group
Source: https://docs.sequencehq.com/reference/latest/invoices/update-a-credit-note-line-item-group
invoices.latest.product.live PUT /credit-notes/{creditnote}/line-item-groups/{id}
Update a Credit Note Line Item Group
# Update a line item
Source: https://docs.sequencehq.com/reference/latest/invoices/update-a-line-item
invoices.latest.product.live PUT /invoices/{invoice}/line-items/{id}
Update a line item on an invoice
# Update a Line Item Group
Source: https://docs.sequencehq.com/reference/latest/invoices/update-a-line-item-group
invoices.latest.product.live PUT /invoices/{invoice}/line-item-groups/{id}
Update a Line Item Group
# Update an invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/update-an-invoice
invoices.latest.product.live PUT /invoices/{id}
Update an invoice
# Update an Invoice Render Settings
Source: https://docs.sequencehq.com/reference/latest/invoices/update-an-invoice-render-settings
invoices.latest.product.live PUT /invoices/render-settings/{id}
Update an Invoice Render Settings
# Update payment status for an invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/update-payment-status-for-an-invoice
invoices.latest.product.live PUT /invoices/{id}/payment-status
Update payment status for an invoice
# Void a Credit Note
Source: https://docs.sequencehq.com/reference/latest/invoices/void-a-credit-note
invoices.latest.product.live POST /credit-notes/{id}/void
Void a Credit Note
# Void an Invoice
Source: https://docs.sequencehq.com/reference/latest/invoices/void-an-invoice
invoices.latest.product.live POST /invoices/{id}/void
Void a DRAFT, FINAL, or SENT invoice. SENT invoices can only be voided if they are UNPAID or UNCOLLECTIBLE
# Add notification types to a policy
Source: https://docs.sequencehq.com/reference/latest/notifications/add-notification-types-to-a-policy
notifications.latest.product.live POST /notifications/policies/{id}/notification-types
Add new notification types to an existing Notification Policy.
# Add recipients to a policy
Source: https://docs.sequencehq.com/reference/latest/notifications/add-recipients-to-a-policy
notifications.latest.product.live POST /notifications/policies/{id}/recipients
Add new recipients to an existing Notification Policy.
# Create Notification policy
Source: https://docs.sequencehq.com/reference/latest/notifications/create-notification-policy
notifications.latest.product.live POST /notifications/policies
Create a new Notification Policy, which will send matching notifications to the recipients you specify.
# Delete notification policy
Source: https://docs.sequencehq.com/reference/latest/notifications/delete-notification-policy
notifications.latest.product.live DELETE /notifications/policies/{id}
Delete one of your Notification Policies, to stop sending matching notifications to its recipients.
# Get notification policy
Source: https://docs.sequencehq.com/reference/latest/notifications/get-notification-policy
notifications.latest.product.live GET /notifications/policies/{id}
Retrieve the details of a Notification Policy.
# List All Notification Policies
Source: https://docs.sequencehq.com/reference/latest/notifications/list-all-notification-policies
notifications.latest.product.live GET /notifications/policies
List All Notification Policies
# Remove a notification type from a policy
Source: https://docs.sequencehq.com/reference/latest/notifications/remove-a-notification-type-from-a-policy
notifications.latest.product.live DELETE /notifications/policies/{id}/notification-types/{type}
Remove a notification type from an existing Notification Policy.
# Remove a recipient from a policy
Source: https://docs.sequencehq.com/reference/latest/notifications/remove-a-recipient-from-a-policy
notifications.latest.product.live DELETE /notifications/policies/{id}/recipients/{recipient}
Delete a recipient from an existing Notification Policy.
# Get an asset
Source: https://docs.sequencehq.com/reference/latest/orchestra/get-an-asset
orchestra.latest.product.live GET /assets/{id}
Retrieves an asset by ID, including a signed URL for downloading the file.
Use this endpoint when you have an asset ID and need the asset's current metadata
or a new download URL. For example, invoice responses include attached assets in
`attachmentAssets`; pass an attachment's `id` to this endpoint to retrieve its
metadata and a new download URL.
# Upload an asset
Source: https://docs.sequencehq.com/reference/latest/orchestra/upload-an-asset
orchestra.latest.product.live POST /assets
Uploads a file and creates an asset. An asset is a stored file that you can
reference by ID elsewhere in the API.
For example, to attach a file to an invoice, upload it using this endpoint and
pass the returned `id` in `attachmentAssetIds` when calling **Create an invoice**
or **Patch an invoice**.
## Sending the file
Send a `multipart/form-data` request containing one part named `file`.
The filename must use a supported extension, and the file part must have a
supported `Content-Type`. We derive the asset's `format` and `type` from the file
part's `Content-Type`, not from its filename extension.
The request must include a `Content-Length` header indicating the size of the
multipart request body, in bytes. It must not exceed 10 MiB (10,485,760 bytes).
### Images
- `jpg` or `jpeg` with a `Content-Type` of `image/jpeg`
- `png` with a `Content-Type` of `image/png`
Image files may be re-encoded to remove metadata.
### Documents
- `pdf` with a `Content-Type` of `application/pdf`
### Binary files
- `csv` with a `Content-Type` of `text/csv`
- `txt` with a `Content-Type` of `text/plain`
- `md` with a `Content-Type` of `text/markdown`
- `rtf` with a `Content-Type` of `application/rtf`
- `doc` with a `Content-Type` of `application/msword`
- `docx` with a `Content-Type` of
`application/vnd.openxmlformats-officedocument.wordprocessingml.document`
- `xls` with a `Content-Type` of `application/vnd.ms-excel`
- `xlsx` with a `Content-Type` of
`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`
- `xlsm` with a `Content-Type` of `application/vnd.ms-excel.sheet.macroEnabled.12`
- `odt` with a `Content-Type` of `application/vnd.oasis.opendocument.text`
- `ods` with a `Content-Type` of `application/vnd.oasis.opendocument.spreadsheet`
- `zip` with a `Content-Type` of `application/zip`
# Archive a list price
Source: https://docs.sequencehq.com/reference/latest/product/archive-a-list-price
product.latest.product.live POST /list-prices/{id}/archive
Mark a list price as archived
# Archive a product
Source: https://docs.sequencehq.com/reference/latest/product/archive-a-product
product.latest.product.live POST /products/{id}/archive
Archive one of your products. Once archived, new prices cannot be created for the product.
# Create a list price
Source: https://docs.sequencehq.com/reference/latest/product/create-a-list-price
product.latest.product.live POST /list-prices
Create a new list price
# Create a new Product
Source: https://docs.sequencehq.com/reference/latest/product/create-a-new-product
product.latest.product.live POST /products
Create a new Product
# Get a list price
Source: https://docs.sequencehq.com/reference/latest/product/get-a-list-price
product.latest.product.live GET /list-prices/{id}
Get a list price by ID
# Get a Product by ID
Source: https://docs.sequencehq.com/reference/latest/product/get-a-product-by-id
product.latest.product.live GET /products/{id}
Get a Product by ID
# List all list prices
Source: https://docs.sequencehq.com/reference/latest/product/list-all-list-prices
product.latest.product.live GET /list-prices
List all list prices
# List all Products
Source: https://docs.sequencehq.com/reference/latest/product/list-all-products
product.latest.product.live GET /products
List all Products
# Update a list price
Source: https://docs.sequencehq.com/reference/latest/product/update-a-list-price
product.latest.product.live PUT /list-prices/{id}
Update a list price
# Update a Product
Source: https://docs.sequencehq.com/reference/latest/product/update-a-product
product.latest.product.live PUT /products/{id}
Update a Product
# Accept a published Quote
Source: https://docs.sequencehq.com/reference/latest/quote/accept-a-published-quote
quote.latest.product.live POST /quotes/{id}/accept
Mark a quote as signed. This endpoint is disabled when e-signatures are active. The quote dashboard must be used instead.
# Archive a quote
Source: https://docs.sequencehq.com/reference/latest/quote/archive-a-quote
quote.latest.product.live POST /quotes/{id}/archive
Mark a quote as archived
# Create a quote from a template
Source: https://docs.sequencehq.com/reference/latest/quote/create-a-quote-from-a-template
quote.latest.product.live POST /quotes/from-template/{id}
Create a new quote from a quote template
# Download quote PDF
Source: https://docs.sequencehq.com/reference/latest/quote/download-quote-pdf
quote.latest.product.live GET /quotes/{id}/download
Download the PDF for the latest published variant of a quote
# Get a published quote
Source: https://docs.sequencehq.com/reference/latest/quote/get-a-published-quote
quote.latest.product.live GET /quotes/{id}/published
Get the latest published version of a quote by ID
# Get one of your quotes
Source: https://docs.sequencehq.com/reference/latest/quote/get-one-of-your-quotes
quote.latest.product.live GET /quotes/{id}
Get a quote by ID including its phases
# Get quote analytics
Source: https://docs.sequencehq.com/reference/latest/quote/get-quote-analytics
quote.latest.product.live GET /quotes/{id}/analytics
Retrieve view tracking analytics for a quote
# List quote templates
Source: https://docs.sequencehq.com/reference/latest/quote/list-quote-templates
quote.latest.product.live GET /quote-templates
List quote templates for Sequence account
# List quotes
Source: https://docs.sequencehq.com/reference/latest/quote/list-quotes
quote.latest.product.live GET /quotes
List all of your quotes
# Publish a quote
Source: https://docs.sequencehq.com/reference/latest/quote/publish-a-quote
quote.latest.product.live POST /quotes/{id}/publish
Publishes the quote directly, or triggers the account's active quote approval workflow instead if one is configured.
# Send reminder emails
Source: https://docs.sequencehq.com/reference/latest/quote/send-reminder-emails
quote.latest.product.live POST /quotes/{quoteId}/send-reminders
Send reminder emails to all unsigned participants. The latest version must be published.
# Update one of your quotes
Source: https://docs.sequencehq.com/reference/latest/quote/update-one-of-your-quotes
quote.latest.product.live PUT /quotes/{id}
Update a quote including its phases
# Archive a tax rate
Source: https://docs.sequencehq.com/reference/latest/taxes/archive-a-tax-rate
taxes.latest.product.live POST /tax-rates/{id}/archive
Archive a tax rate
# Create a new Tax Registration
Source: https://docs.sequencehq.com/reference/latest/taxes/create-a-new-tax-registration
taxes.latest.product.live POST /tax-registrations
Create a new Tax Registration
# Create a new TaxRate
Source: https://docs.sequencehq.com/reference/latest/taxes/create-a-new-taxrate
taxes.latest.product.live POST /tax-rates
Create a new TaxRate
# Delete a Tax Rate
Source: https://docs.sequencehq.com/reference/latest/taxes/delete-a-tax-rate
taxes.latest.product.live DELETE /tax-rates/{id}
Delete a Tax Rate
# Delete a Tax Registration
Source: https://docs.sequencehq.com/reference/latest/taxes/delete-a-tax-registration
taxes.latest.product.live DELETE /tax-registrations/{id}
Delete a Tax Registration
# Get a Tax Rate by ID
Source: https://docs.sequencehq.com/reference/latest/taxes/get-a-tax-rate-by-id
taxes.latest.product.live GET /tax-rates/{id}
Get a Tax Rate by ID
# Get a Tax Registration by ID
Source: https://docs.sequencehq.com/reference/latest/taxes/get-a-tax-registration-by-id
taxes.latest.product.live GET /tax-registrations/{id}
Get a Tax Registration by ID
# Get all tax registrations for a customer by customer ID
Source: https://docs.sequencehq.com/reference/latest/taxes/get-all-tax-registrations-for-a-customer-by-customer-id
taxes.latest.product.live GET /tax-registrations/for-customer/{id}
Get all tax registrations for a customer by customer ID
# Get all tax registrations for a merchant by merchant ID
Source: https://docs.sequencehq.com/reference/latest/taxes/get-all-tax-registrations-for-a-merchant-by-merchant-id
taxes.latest.product.live GET /tax-registrations/for-merchant/{id}
Get all tax registrations for a merchant by merchant ID
# List all Tax Rates
Source: https://docs.sequencehq.com/reference/latest/taxes/list-all-tax-rates
taxes.latest.product.live GET /tax-rates
List all Tax Rates
# List all Tax Registrations
Source: https://docs.sequencehq.com/reference/latest/taxes/list-all-tax-registrations
taxes.latest.product.live GET /tax-registrations
List all Tax Registrations
# Update a Tax Registration
Source: https://docs.sequencehq.com/reference/latest/taxes/update-a-tax-registration
taxes.latest.product.live PUT /tax-registrations/{id}
Update a Tax Registration
# Update a TaxRate
Source: https://docs.sequencehq.com/reference/latest/taxes/update-a-taxrate
taxes.latest.product.live PUT /tax-rates/{id}
Update a TaxRate
# Calculate usage metric for customer and timeframe
Source: https://docs.sequencehq.com/reference/latest/usage/calculate-usage-metric-for-customer-and-timeframe
usage.latest.product.live GET /usage-metrics/{usageMetricId}/calculate
Calculate usage metric for customer and timeframe
# Create a new Usage Event
Source: https://docs.sequencehq.com/reference/latest/usage/create-a-new-usage-event
usage.latest.product.live POST /usage-events
Create a new Usage Event
# Create a new Usage Metric
Source: https://docs.sequencehq.com/reference/latest/usage/create-a-new-usage-metric
usage.latest.product.live POST /usage-metrics
Create a new Usage Metric
# Create a seat event
Source: https://docs.sequencehq.com/reference/latest/usage/create-a-seat-event
usage.latest.product.live POST /seat-events
Create a new seat event. Seat events are used for calculating charges.
# Create a seat metric
Source: https://docs.sequencehq.com/reference/latest/usage/create-a-seat-metric
usage.latest.product.live POST /seat-metrics
Create a new seat metric which can be used in prices.
# Delete a seat metric
Source: https://docs.sequencehq.com/reference/latest/usage/delete-a-seat-metric
usage.latest.product.live DELETE /seat-metrics/{id}
Delete a seat metric
# Delete a Usage Metric
Source: https://docs.sequencehq.com/reference/latest/usage/delete-a-usage-metric
usage.latest.product.live DELETE /usage-metrics/{id}
Delete a Usage Metric
# Get a seat event by ID
Source: https://docs.sequencehq.com/reference/latest/usage/get-a-seat-event-by-id
usage.latest.product.live GET /seat-events/{id}
Retrieve a seat event by its ID
# Get a seat metric
Source: https://docs.sequencehq.com/reference/latest/usage/get-a-seat-metric
usage.latest.product.live GET /seat-metrics/{id}
Retrieve the details of one of your seat metrics.
# Get a Usage Metric by ID
Source: https://docs.sequencehq.com/reference/latest/usage/get-a-usage-metric-by-id
usage.latest.product.live GET /usage-metrics/{id}
Get a Usage Metric by ID
# List all seat events
Source: https://docs.sequencehq.com/reference/latest/usage/list-all-seat-events
usage.latest.product.live GET /seat-events
Retrieve a paginated list of all your submitted seat events.
# List all seat metrics
Source: https://docs.sequencehq.com/reference/latest/usage/list-all-seat-metrics
usage.latest.product.live GET /seat-metrics
Retrieve a paginated list of all your seat metrics.
# List all Usage Events
Source: https://docs.sequencehq.com/reference/latest/usage/list-all-usage-events
usage.latest.product.live GET /usage-events
List all Usage Events
# List all Usage Metrics
Source: https://docs.sequencehq.com/reference/latest/usage/list-all-usage-metrics
usage.latest.product.live GET /usage-metrics
List all Usage Metrics
# List Seat balances by Customer
Source: https://docs.sequencehq.com/reference/latest/usage/list-seat-balances-by-customer
usage.latest.product.live GET /seat-balances
List Seat balances grouped by Customer and seat type.
# Update a seat metric
Source: https://docs.sequencehq.com/reference/latest/usage/update-a-seat-metric
usage.latest.product.live PUT /seat-metrics/{id}
Update a seat metric which can be used in prices.
# Update a Usage Metric
Source: https://docs.sequencehq.com/reference/latest/usage/update-a-usage-metric
usage.latest.product.live PUT /usage-metrics/{id}
Update a Usage Metric
# Versioning
Source: https://docs.sequencehq.com/reference/versioning
Learn how to specify the version of the REST API you want to use.
The Sequence REST API uses a versioning system where each API version is denoted by the release date. For instance, the API version titled `2024-01-01` signifies its release on January 1, 2024.
To use a specific version of the API, include the desired version in the `Sequence-Version` header of your HTTP request. If the `Sequence-Version` header is missing, the request defaults to the most recent API version.
As an illustration, to access the `2024-01-01` version, the following HTTP request format is required:
```http Request theme={null}
GET https://eu.sequencehq.com/api/customers
Content-Type: application/json
Authorization: Basic a2V5OnNlY3JldA==
Sequence-Version: 2024-01-01
```
Utilizing an unrecognized API version will result in a 400 Bad Request response, accompanied by an error message detailing the mismatch:
```http Request theme={null}
GET https://eu.sequencehq.com/api/customers
Content-Type: application/json
Authorization: Basic a2V5OnNlY3JldA==
Sequence-Version: 2017-01-01
```
```http Response theme={null}
HTTP/1.1 400 Bad Request
Content-type: application/json; charset=utf-8
{
"error": {
"type": "UnrecognisedApiVersion",
"message": "No matching API version found. Please make sure the specified API version is valid."
}
}
```
All HTTP responses returned by the API will include the `Sequence-Version` header, indicating the version of the API that was used to process the request. This header is useful for debugging and troubleshooting purposes.
```http Response theme={null}
HTTP/1.1 200 OK
Content-type: application/json; charset=utf-8
Sequence-Version: 2024-01-01
```
## Pinning API keys to the current version
When creating new API keys, there is an option to anchor these keys to the current API version. This ensures that the keys will always map to the latest API version at the time the API keys were created, irrespective of subsequent releases. When new API versions are released, the keys will continue to function as intended, without requiring any client modifications until the API version that the keys are pinned to is deprecated.
Without pinning, the keys will default to the version indicated in the `Sequence-Version` header or to the latest version if no version header was sent with the request.
## Release schedule
New API versions are released periodically, with the frequency of releases determined by the number of new features, enhancements, and bug fixes. The release schedule is not fixed and can vary based on the complexity of the changes being introduced. New versions are only released when we introduce backward-incompatible changes to the API.
All backward-incompatible changes are documented in the [API Changelog](/reference/changes), which is updated with each new release of the REST API. We recommend that you review the changelog to understand the backward-incompatible changes introduced in each new version of the API.
Backward-compatible changes include:
* Adding new API endpoints
* Adding new, optional query parameters to existing API endpoints
* Adding new, optional request fields to existing API endpoints
* Adding new response fields to existing API endpoints
Backward-incompatible changes include:
* Removing API endpoints
* Removing query parameters from existing API endpoints
* Removing response fields from existing API endpoints
* Changing the data type of existing response fields
* Changing the format of existing response fields
* Changing the default value of existing query parameters
## Deprecation policy
When a new version of the REST API is released, the previous version is deprecated. We recommend that you update your application to use the latest version of the REST API to avoid any breaking changes in the future. Deprecated versions of the REST API are supported for at least 60 days after the release of the new version.
## API changelog
The API changelog provides a comprehensive list of backward-incompatible changes made to the REST API, including new features, enhancements, and bug fixes. The changelog is updated with each new release of the REST API and is accessible in the [API Changelog](/reference/changes).
# Webhook events
Source: https://docs.sequencehq.com/reference/webhook-events
Reference for the events Sequence sends, the payload envelope, signature header, and delivery behavior.
This page is the reference for what Sequence sends and how. For a step-by-step integration walkthrough, see [Set up webhooks](/reference/webhooks).
## Request format
Sequence delivers webhooks as `POST` requests with `Content-Type: application/json`. Every payload has the same envelope:
```typescript theme={null}
{
notificationType: string;
sequenceAccountId: string;
resourceType?: string;
resourceId?: string;
resource?: Record;
}
```
The `resource` field contains the state of the resource that triggered the event.
### Example payload
A `BILLING_SCHEDULE_CREATED` delivery looks like this. The `prices` and `phases` arrays are simplified for readability; in real deliveries they contain the full pricing and phase structure for the schedule.
```json theme={null}
{
"notificationType": "BILLING_SCHEDULE_CREATED",
"sequenceAccountId": "019e6eb6-db30-7cf2-8017-06a5a2859e13",
"resourceType": "BillingScheduleResponse",
"resourceId": "019e6eb6-cd26-74eb-808b-e7a37f1c4ef1",
"resource": {
"id": "019e6eb7-0c24-765b-8446-6fb074f018d7",
"status": "DRAFT",
"startDate": "2026-04-27",
"endDate": "2027-04-26",
"customerId": "019e6eb7-353e-7ddf-a5ae-75f2d9509d6b",
"recurrenceDayOfMonth": 1,
"autoIssueInvoices": false,
"rollUpBilling": false,
"defaultDueDateDays": 30,
"prices": [],
"phases": [],
"taxRates": [],
"attachmentAssets": [],
"integrationIds": [],
"createdAt": "2026-04-27T17:04:11.601533Z",
"updatedAt": "2026-04-27T17:04:11.601533Z"
}
}
```
## `Sequence-Signature` header
Every webhook includes a `Sequence-Signature` header containing a timestamp and an HMAC signature:
```
Sequence-Signature: t=1748866120822,s=6be6887a470c20978427ff89941ebecb83b2804ceed66fd93b3afc00de2e9f11
```
* `t` is the delivery timestamp, in Unix milliseconds.
* `s` is an HMAC-SHA256 signature of `${t}.${rawBody}`, computed using the webhook's signing secret.
The timestamp is part of the signed payload, so receivers can reject deliveries with a stale `t` to mitigate replay attacks.
For working verification code, see [Verify the signature](/reference/webhooks#verify-the-signature) in the integration guide.
## Delivery
* **Acknowledgment.** Sequence considers any `2xx` response a successful delivery.
* **Retries.** Any non-`2xx` response causes Sequence to retry. Retries continue for up to **24 hours**, with exponential backoff.
New event types may be added over time. Handlers should accept and ignore types they don't recognize.
## Event catalog
| Event | Resource type | Triggered when |
| - | - | - |
| `CUSTOMER_CREATED` | Customer | A customer is created |
| `CUSTOMER_UPDATED` | Customer | A customer is updated |
| `CUSTOMER_ARCHIVED` | Customer | A customer is archived |
| `INVOICE_CREATED` | Invoice | An invoice is created |
| `INVOICE_ISSUED` | Invoice | An invoice is issued |
| `INVOICE_UPDATED` | Invoice | An invoice is updated |
| `INVOICE_REMINDER_SENT` | Invoice | A dunning payment reminder is sent to a customer |
| `BILLING_SCHEDULE_CREATED` | BillingSchedule | A billing schedule is created |
| `BILLING_SCHEDULE_UPDATED` | BillingSchedule | A billing schedule is updated |
| `BILLING_SCHEDULE_ARCHIVED` | BillingSchedule | A billing schedule is archived |
| `CREDIT_NOTE_CREATED` | CreditNote | A credit note is created |
| `CREDIT_NOTE_UPDATED` | CreditNote | A credit note is updated |
| `CREDIT_NOTE_ISSUED` | CreditNote | A credit note is issued |
| `QUOTE_PUBLISHED` | Quote | A quote is published |
| `QUOTE_SIGNED` | Quote | A quote is signed |
| `QUOTE_ACCEPTED` | Quote | A quote is accepted |
| `MERCHANT_UPDATED` | Merchant | Merchant-level settings are updated |
| `WATCHTOWER_TASK_ASSIGNED` | WatchtowerTask | A Watchtower review task is assigned to a user |
# Set up webhooks
Source: https://docs.sequencehq.com/reference/webhooks
Learn how to set up webhooks in Sequence.
In Sequence, you can listen to various events to trigger your own workflows. These are called webhooks.
Sequence sends webhooks when something changes in your account - customers, invoices, billing schedules, credit notes, quotes. Point a webhook at your endpoint, and Sequence will POST the event data there whenever one of those changes occurs.
For the full event catalog, payload envelope, signature format, and delivery behavior, see [Webhook events](/reference/webhook-events).
## Quickstart
This section walks you through setting up an endpoint, configuring a webhook in Sequence, and confirming a test delivery.
### 1. Spin up an endpoint
The fastest way to start is [webhook.site](https://webhook.site). It gives you a public URL and shows every request that lands. Copy your unique URL.
If you want to receive webhooks on your machine, set up a local server and use a tunnel like [ngrok](https://ngrok.com/docs/agent/overview) to receive webhooks locally.
### 2. Create a webhook
Open **Settings → Webhooks** and create a new webhook. Paste your endpoint URL, choose the events you want, and save.
```bash theme={null}
curl --request POST \
--url https://eu.sequencehq.com/api/notifications/policies \
--header 'Authorization: ' \
--header 'Content-Type: application/json' \
--data '{
"name": "Dev team integration webhooks",
"recipients": ["https://api.company.com/webhooks"],
"notificationTypes": ["INVOICE_ISSUED", "CUSTOMER_CREATED"],
"channel": "WEBHOOK"
}'
```
Then go to **Webhooks → Show secret key** and copy the secret key - you will need it for verification.
### 3. Trigger a test event
Create a customer or an invoice in the dashboard. Within a few seconds the request should appear at your endpoint. Confirm the payload's `notificationType` matches the event you triggered.
## Verify the signature
Every webhook arrives with a `Sequence-Signature` header containing a timestamp and HMAC signature:
```
Sequence-Signature: t=1748866120822,s=6be6887a470c20978427ff89941ebecb83b2804ceed66fd93b3afc00de2e9f11
```
To verify a delivery:
1. Concatenate the timestamp and the raw request body with a `.` separator: `TIMESTAMP.RAW_BODY`. For example: `1779974397972.{"notificationType":"..."}`
2. Compute HMAC-SHA-256 of that string using your webhook's signing secret
3. Compare the result with `s` using a constant-time comparison
**Use raw bytes, not re-serialized JSON.** The signature is computed over the exact bytes Sequence sent. If you parse the body to a JSON object and re-stringify it before verification, whitespace and key ordering differences will produce a different hash and verification will always fail.
### Full working example
Save the following as `verify-webhooks-server.ts`. It runs an HTTP server on port 8080 that verifies signatures on requests to `POST /webhook`.
Dependencies: `npm install express @types/express tsx`
Run with: `npx tsx verify-webhooks-server.ts`
```ts theme={null}
#!/usr/bin/env tsx
const express = require("express");
const cryptoModule = require("crypto");
// Your webhook secret (from webhooks settings in the Sequence dashboard)
const WEBHOOK_SECRET = "YOUR_WEBHOOK_SECRET";
const PORT = 8080;
const app = express();
function verifyWebhookSignature(payloadBytes: Buffer, signatureHeader: string, secret: string): boolean {
const payloadString = payloadBytes.toString("utf-8");
const parts = signatureHeader.split(",");
const timestampPart = parts.find((p: string) => p.startsWith("t="));
const signaturePart = parts.find((p: string) => p.startsWith("s="));
if (!timestampPart || !signaturePart) return false;
const timestamp = timestampPart.substring(2);
const signatureFromHeader = signaturePart.substring(2);
const dataToSign = `${timestamp}.${payloadString}`;
const expectedSignature = cryptoModule
.createHmac("sha256", secret)
.update(dataToSign, "utf8")
.digest("hex");
const signatureBuffer = Buffer.from(signatureFromHeader, "hex");
const expectedBuffer = Buffer.from(expectedSignature, "hex");
if (signatureBuffer.length !== expectedBuffer.length) return false;
return cryptoModule.timingSafeEqual(signatureBuffer, expectedBuffer);
}
// Ensure webhook handler receives the raw bytes via express.raw()
app.use("/webhook", express.raw({ type: "application/json" }));
app.post("/webhook", (req: any, res: any) => {
const payloadBytes: Buffer = req.body;
const signatureHeader = req.headers["sequence-signature"] as string;
if (!payloadBytes?.length || !signatureHeader) {
return res.status(400).send("Bad Request");
}
if (verifyWebhookSignature(payloadBytes, signatureHeader, WEBHOOK_SECRET)) {
console.log("Webhook verified.");
return res.status(200).send("OK");
} else {
console.log("Verification failed.");
return res.status(403).send("Verification failed");
}
});
app.listen(PORT, "0.0.0.0", () => {
console.log(`Webhook server listening on http://0.0.0.0:${PORT}/webhook`);
});
```
### Verify manually
When you want to confirm an end-to-end setup without writing code, two tools together are enough:
1. Point your webhooks at [webhook.site](https://webhook.site) URL and trigger an event in Sequence
2. You should see the webhook event captured in webhook.site with the raw payload and the `Sequence-Signature` header
3. Open [metatoolhub.com](https://metatoolhub.com/tools/hmac-encrypt-decrypt)'s HMAC verification tool
4. Algorithm: select "HMAC-SHA-256"
5. Message/Data: paste the timestamp value, then `.`, then the raw event payload
6. Secret Key: paste your webhook's signing secret
7. HMAC to Verify: paste the `s` value from the `sequence-signature` header
A "Valid HMAC" message confirms your secret and the payload are correct.
## Handle webhooks well
* **Return 200 quickly.** Acknowledge the request and do any non-trivial work asynchronously (via a queue or background worker). A slow handler blocks the delivery and risks retries
* **Handle out-of-order events and out-of-date payloads.** You can use webhooks as a signal that something has changed, then re-read the resource from the Sequence API to get its current state
* **Be idempotent.** The same event may arrive more than once if a previous delivery failed
* **Ignore unknown event types and fields.** Sequence may add new event types or fields in the future. Accept and ignore types your handler doesn't recognize rather than throwing
## Troubleshooting
### Signature mismatch
Almost always caused by verifying against re-serialized JSON instead of the raw request body. Confirm your framework gives you the exact bytes Sequence sent.
A mismatch in the working example above prints lines like:
```
Verification failed.
Details: Got='abc123...', Expected='def456...'
```
You can use an online HMAC verification tool like [metatoolhub.com](https://metatoolhub.com/tools/hmac-encrypt-decrypt) to verify the expected signature.
### Webhook not received, or repeatedly retried
Your handler must return a `2xx` response. Confirm the endpoint is publicly reachable and isn't returning an error to Sequence. Any non-`2xx` response causes Sequence to retry. Failed deliveries are retried for up to **24 hours**.
## Next step
For the full event catalog, payload envelope, signature format, and delivery behavior, see [Webhook events](/reference/webhook-events).
# Currencies
Source: https://docs.sequencehq.com/resources/currencies
Default currencies available in Sequence
Currencies follow ISO 4217 standards. By default, `USD`, `GBP` and `EUR` are enabled. Go to your dashboard settings to enable currencies.
| Code | Currency name | Symbol |
| - | - | - |
| `ARS` | Argentinian Pesos | ARS |
| `AUD` | Australian Dollars | A\$ |
| `BRL` | Brazilian Real | R\$ |
| `CAD` | Canadian Dollars | CA\$ |
| `CHF` | Swiss Franc | CHF |
| `CNY` | Yuan Renminbi | CN¥ |
| `COP` | Colombian Pesos | COP |
| `CZK` | Czech Koruna | CZK |
| `DKK` | Danish Krone | DKK |
| `EUR` | Euros | € |
| `GBP` | Great British Pounds | £ |
| `HKD` | Hong Kong Dollar | HK\$ |
| `ILS` | New Israeli Sheqel | ₪ |
| `JPY` | Yen | JP¥ |
| `KRW` | KRW | ₩ |
| `MXN` | Mexican Pesos | MX\$ |
| `NOK` | Norwegian Krone | NOK |
| `NZD` | New Zealand Dollar | NZ\$ |
| `PLN` | Zloty | PLN |
| `SEK` | Swedish Krona | SEK |
| `SGD` | Singapore Dollar | SGD |
| `THB` | Baht | THB |
| `USD` | US Dollars | \$ |
| `UYU` | Uruguayan Pesos | UYU |
| `ZAR` | South African Rand | ZAR |
Speak to a member of our team to enable additional currencies
# End-customer guide
Source: https://docs.sequencehq.com/resources/end-customer-guide
Guide for end-customers receiving invoices via Sequence
Fast-growing B2B companies use Sequence to provide their customers a world class billing experience.
If you've received a link to this guide from your vendor, read on to understand what to expect.
## Receiving invoices via Sequence
Here's an overview of what to expect if your vendor has switched their billing system to Sequence. You will now receive email notification each time an invoice is issued to you via Sequence. Invoices are available digitally or as a PDF.
Here's what you need to know:
Each invoice is delivered to you via email. If you need additional team members to receive the invoice, please inform your vendor. The email will include a PDF attachment of the invoice and a link to view the invoice online.
Click `View invoice details` in your invoice email to view the invoice in your browser and see its up to date payment status. This way you can see a more granular breakdown, including payment details.
If you are charged based on consumption, you can view usage in context of an invoice.
Payment details for the invoice.
View a history of current and past invoices issued to you by your vendor, along with their due date and payment status.
You will receive a payment reminder 7 days before the invoice is due, and on the invoice due date. Further reminders may be sent by your vendor ad-hoc as needed.
Each invoice email includes a PDF attachment of the invoice. Alternatively, you can download invoices from the online view.
# Rolling out Sequence
Source: https://docs.sequencehq.com/resources/vendor-guide
Guide for businesses rolling out Sequences to their customers
Fast-growing B2B companies use Sequence to provide their customers a world class billing experience.
If you're about to roll out Sequence, use this guide to get advice on how to communicate your new billing workflow to customers.
## Information for businesses using Sequence
Give your customer a heads-up about your new billing workflow with this example email template (you may optionally include any of the above images).
We're improving our billing process and are switching to a new billing provider: **[Sequence](https://www.sequencehq.com/)**.
Here's what this means for you:
**• Enhanced invoice emails**: You will now receive invoice emails via Sequence, sent from [notifications@sequencehq.com](mailto:notifications@sequencehq.com).
**• View invoices online**: Invoices can be viewed online through a unique link, in your personalized billing portal.
**• Invoice history**: Your billing portal includes a history of past invoices and their payment status.
**• Usage overview**: Track consumption in your billing portal, and see how each invoice is calculated in granular detail based on your latest usage.
You can learn more about Sequence **[here](https://docs.sequencehq.com/resources/end-customer-guide)**. We're excited to bring more transparency to your billing process. If you have any further questions, please do not hesitate to reach out.
## Guide for end-customers
Use the end-customer guide to help your customers understand what to expect and how to retrieve invoices.
[End-customer guide](https://docs.sequencehq.com/resources/end-customer-guide)
# Credit grants
Source: https://docs.sequencehq.com/revenue-recognition/credit-grants
How prepaid credit grants reduce recognized revenue as they're consumed
Credit grants are prepaid balances that customers hold against future consumption: committed spend, prepaid usage, or goodwill credits. A credit grant carries revenue that has already been recognized when the grant was issued. Consuming the grant against a subsequent invoice draws down that balance rather than recognizing new revenue.
When a grant settles part or all of an invoice line item, Sequence recognizes only the net amount (gross minus grant) on the line's normal recognition schedule. The grant's drawdown does not appear a second time as new revenue.
Drawdown only applies to credit grants. A flat line item on a billing schedule is not a grant: usage events will not deduct from it, and it recognizes normally.
Each grant has an underlying transaction history. Debit entries are consumption, credit entries are reversals (for example, an unused portion being credited back).
## When credit grants apply
Credit grants are designed for **prepaid then draw down** patterns. A customer prepays a balance upfront and draws it down as they consume.
The prepaid amount is recognized at the point of sale (or over the service period). Subsequent invoices that consume the grant do not double-count revenue.
# Credit notes
Source: https://docs.sequencehq.com/revenue-recognition/credit-notes
How credit notes reverse and rebalance previously recognized revenue
Credit notes reverse revenue that has already been recognized or deferred. The journal pattern depends on the credit note variant and on the account's revenue impact mode.
## Credit note variants
Sequence supports four credit note variants. The variant determines how the service period and recognition method are derived.
A credit note issued against a specific invoice, line item, or set of line items.
* Service period and recognition method are **inherited from the original invoice's line items**.
* If the service period is longer than a single day, the credit note defaults to straight-line recognition.
* A single-day service period defaults to point-in-time recognition.
* The reversal posts against the original invoice's deferred and recognized balances.
This is the most common variant and the most predictable.
A credit note created by Sequence itself when a billing schedule is recalculated and the resulting amount is less than what has already been invoiced. The original invoice is voided and the credit note takes its place.
* Recognition follows the same inheritance rules as invoice-attached credit notes.
* Sign, product attribution, and deferred-balance unwinding all use the recalculated values.
A credit note produced when a negating charge appears on a billing schedule (for example, a downward true-up that exceeds the upcoming invoice amount).
* Sequence resolves the negating charge against the original schedule and produces a credit note whose recognition shape mirrors the original recognition.
* The credit note's product attribution matches the schedule line it is reversing.
A credit note that is not tied to a specific invoice. For example, a goodwill credit applied against future invoices.
* Standalone credit notes follow normal recognition rules with negative amounts.
* They appear as their own rows in the deferred revenue report.
* When applied against future invoices, the credit is consumed in line with that invoice's normal recognition.
## Cancellation vs Adjustment mode
The **Credit note revenue impact** setting on your revenue recognition settings controls how a credit note moves previously recognized revenue. The two modes produce visibly different journals, and picking the right one matters.
The default is `CANCELLATION`. Switch to `ADJUSTMENT` when management reporting relies on **recognized + deferred = net billed** holding true at all times.
### Cancellation mode
Cancellation mode treats the credit note as the end of an obligation. It deletes any unposted future revenue, reverses the remaining deferred balance, and only touches recognized revenue if the credit exceeds what is still deferred.
**Scenario**
* **Original invoice**: \$12,000 annual subscription, billed and recognized 1 Jan 2026 to 31 Dec 2026.
* **As of 30 Sep 2026**: \$9,000 recognized, \$3,000 deferred.
* **Credit note issued 1 Oct 2026**: \$6,000.
**What happens**
1. Future-dated recognition (\$3,000 for Q4) is deleted.
2. The \$3,000 deferred balance is reversed: Debit Deferred Revenue (-\$3,000), Credit Billed Revenue (-\$3,000).
3. The remaining \$3,000 of credit is taken against already-recognized revenue: Debit Recognized Revenue (-\$3,000), Credit Billed Revenue (-\$3,000).
**Result**
* Net billed (after credit): \$6,000.
* Recognized: \$6,000.
* Deferred: \$0.
* The invoice produces no further recognition.
### Adjustment mode
Adjustment mode treats the credit note as a reallocation. The original invoice continues recognizing as scheduled. The credit note posts daily mirror entries that reduce recognized revenue and rebuild deferred revenue across the credit note's own service period.
**Scenario**
* **Original invoice**: \$12,000 annual subscription, recognized straight-line 1 Jan 2026 to 31 Dec 2026. Monthly recognition: \$1,000.
* **As of 30 Jun 2026**: \$6,000 recognized, \$6,000 deferred.
* **Credit note issued 1 Jul 2026**: \$3,000, service period 1 Jul 2026 to 31 Dec 2026 (six months). Monthly allocation: \$500.
**What happens**
1. On 1 Jul 2026, the deferred balance is reduced by the credit's net amount of \$3,000. Deferred drops from \$6,000 to \$3,000.
2. Each month from July to December, two journals post for the credit note:
* Reverse the credit's monthly allocation: Debit Recognized Revenue \$500.
* Rebuild deferred by the same amount: Credit Deferred Revenue \$500.
3. The original invoice's monthly recognition continues unchanged: Debit Deferred Revenue \$1,000, Credit Recognized Revenue \$1,000.
**Why both journals are needed**
The original invoice continues recognizing on its own schedule. The rebuilding entry prevents the deferred ledger from over-draining as if the credit had not been issued.
**Position at month-end**
| Date | Recognized | Deferred | Sum |
| - | -: | -: | -: |
| 30 Jun 2026 | \$6,000 | \$6,000 | \$12,000 |
| 1 Jul 2026 (after credit note applied) | \$6,000 | \$3,000 | \$9,000 |
| 31 Jul 2026 | \$6,500 | \$2,500 | \$9,000 |
| 31 Aug 2026 | \$7,000 | \$2,000 | \$9,000 |
| 30 Sep 2026 | \$7,500 | \$1,500 | \$9,000 |
| 31 Oct 2026 | \$8,000 | \$1,000 | \$9,000 |
| 30 Nov 2026 | \$8,500 | \$500 | \$9,000 |
| 31 Dec 2026 | \$9,000 | \$0 | \$9,000 |
At every as-of date from 1 Jul onward, **recognized + deferred = net billed (\$9,000)**.
Sequence posts the credit note's reversal and rebuild as daily journals (one per day of the service period). The monthly figures above aggregate those daily entries for readability.
## Inheritance and defaults
When a credit note is created without an explicit service period or recognition method, Sequence fills the gaps from the originating document.
* **Service period** is taken from the linked invoice line items.
* **Recognition method** is inferred from the service period: longer than one day defaults to straight-line; single-day defaults to point-in-time.
* **Accounting date** falls back through a chain when missing: corrected billing period, then credit note issue date, then original invoice billing period.
If the linked invoice's recognition method has been overridden (for example, to force straight-line on a credit note that would otherwise have been point-in-time), that override is preserved across credit note regeneration.
## Direction of the reversal
A credit note's line item amount can be positive (a refund) or negative (an additional charge flowing through the credit note document). The sign of the line item determines the direction of the reversal in future journals:
* **Positive credit note**: recognized revenue decreases over time.
* **Negative line item on a credit note**: recognized revenue increases over time.
The deferred revenue report's `Remaining` column reflects this signed contribution to the deferred balance.
## Regeneration and historical preservation
When the line items on a credit note are regenerated (for example, because the originating invoice was recalculated), Sequence re-recognizes the credit note in line with the new shape. Two guardrails apply:
* **Recognition method is preserved.** A straight-line credit note stays straight-line.
* **Cases that do not reconcile are skipped.** If a credit note's totals do not align cleanly to the related invoice (for example, because the document was manually edited or has rounding inconsistencies that will not reconcile), Sequence keeps the existing document rather than regenerating something it cannot validate.
In those skipped cases, the existing journals stand and the document is flagged for manual review.
## Credit notes and account period locks
When account period locking is enabled, credit note reversals respect the lock the same way invoices do:
* Reversals that would post into a locked period are held back to the first open day.
* Journal narratives explicitly note when an entry has been shifted to respect the lock.
* The portion of the credit note service period that sits before the lock is reversed in a single catch-up entry on the lock end date. Everything after the lock unwinds day-by-day as normal.
## When to override recognition on a credit note
The default inheritance behavior is usually correct. Two situations call for an override:
* **You want the credit fully reversed today**, rather than spread across a service period. Switch the credit note's recognition method to **point-in-time**. Common when the originating invoice was issued in error or the customer has not paid.
* **You want the credit reallocated across the service period**, rather than capped at recognized-to-date. Set the account to **adjustment mode** and confirm the credit note's service period covers the period you want the reallocation to apply to.
# Deferred revenue
Source: https://docs.sequencehq.com/revenue-recognition/deferred-revenue
Track and export the deferred revenue balance across customers, products, and invoices
The deferred revenue report shows invoiced amounts that have not yet been recognized as revenue, scoped to a chosen as-of date. It is the working paper finance teams use to substantiate the deferred revenue liability at period-end.
## What each row contains
For every recognition schedule, the report shows:
* The customer, product, and source document (invoice or credit note).
* The service period the schedule covers.
* The amount originally invoiced and the amount recognized to the as-of date.
* Two distinct measures of what is left: **Balance** and **Remaining**.
Credit notes appear as their own rows so reversals against the deferred liability are visible alongside the invoices they relate to. See [Credit notes in the report](#credit-notes-in-the-report) below.
## As-of date
The **As-of date** filter produces a point-in-time snapshot of the deferred liability. Setting it to a fiscal period end gives you the figure that should reconcile to the deferred revenue line on the balance sheet for that close.
When an as-of date is set, the report:
* Includes recognition schedules that were active on that date.
* Calculates Balance and Remaining as they stood on that date.
* Includes credit note reversals that had been posted by that date and excludes those that had not.
For year-end reconciliation, set the as-of date to your fiscal year-end. The total ties to the deferred revenue balance on the journal report for the same period.
## Balance vs Remaining
Each row carries two measures. They agree for a normal invoice. They can diverge once a credit note reverses revenue against a back-dated parent.
| Column | Definition | When to use it |
| - | - | - |
| **Balance** | The remaining performance obligation: how much of the invoiced amount has not yet been recognized on this schedule, at the as-of date. | Operational reporting and forecasting future recognition. |
| **Remaining** | The row's net movement against the deferred revenue ledger, after all postings on or before the as-of date. Ties to the revenue waterfall's remaining figure. | Reconciling to the deferred revenue balance on the general ledger. |
For a normal invoice schedule with no credit notes, every dollar of recognition moves cleanly from deferred to recognized, so Balance = Remaining at any point in time.
For a credit note that reverses revenue against a back-dated parent, **Remaining** captures the net effect on the deferred ledger (which matches the trial balance), while **Balance** captures the obligation left to deliver.
Use **Balance** when the question is *"how much have we billed but not yet earned on this schedule?"*. Use **Remaining** when the question is *"what amount on this row makes up the deferred revenue balance in the general ledger?"*.
## Credit notes in the report
Credit notes appear as their **own rows** in the report, including:
* Credit notes attached to specific invoices.
* Standalone credit notes that have no parent invoice.
* Credit notes attached to schedules whose original recognition has already completed. The parent schedule itself is closed, but the credit note row remains visible so reversals against historical revenue are not lost.
Each credit note appears at most once per `(credit note, product)` pair. A credit note that spans multiple products produces one row per product, with the reversal allocated correctly across them.
## What is excluded by default
To keep the report focused on substantive rows, the following are excluded:
* **Zero-balance, zero-remaining rows.** Schedules that have netted out to nothing.
* **Archived schedules.** Only active schedules appear in the paginated list.
* **Completed obligations** (configurable). When *"Hide completed obligations"* is on, schedules whose recognition was fully complete by the as-of date are hidden. Related credit notes are also hidden if their only link to the report is through the completed schedule.
## Exporting
For larger books, the export runs asynchronously:
Choose the as-of date and any filters, then submit.
Sequence assembles the export. You can navigate away from the page while this runs.
When the file is ready, you'll receive an email with a signed download URL. The link is also surfaced inside the dashboard.
The link serves the CSV directly. The signed URL has a limited lifetime, so download soon after the email arrives.
Generation time depends on the volume of data in the export. For smaller books the file is typically ready within seconds; larger date ranges take proportionally longer.
### Working with the CSV in spreadsheets
Long date ranges can produce CSVs that exceed the row limit of Excel and Google Sheets (around 1 million rows). If you hit the limit:
* Narrow the date range and run multiple exports.
* Aggregate to monthly granularity before exporting.
* Load the CSV into a database tool (DuckDB, BigQuery) for analysis.
## Reconciling to the revenue waterfall
The deferred revenue report and the [revenue waterfall](/revenue-recognition/revenue-waterfall) describe the same book of business at the same as-of date. They reconcile when scoped consistently.
To make them tie:
* Use the same as-of date on both reports.
* Read the **Remaining** column on the deferred report (not Balance). Remaining ties to the waterfall's remaining figure because both are measured against the deferred ledger.
* For accounts with historical data, set both reports to start at the same earliest date.
Small differences can appear where a credit note reverses revenue from a back-dated parent and routes part of the movement directly through recognized revenue. Both reports are correct for their respective purposes: the deferred report describes what is on the deferred ledger; the waterfall describes how that balance is expected to run off in future periods.
# Journal reports
Source: https://docs.sequencehq.com/revenue-recognition/journal-report
Review, export, and integrate revenue recognition journals
Journal reports export every recognition movement Sequence has generated, in formats designed for direct import into Xero, QuickBooks, NetSuite, or a generic GL system.
## Monthly journal reports
For each month, Sequence assembles a summary that combines all the revenue subledger journals for the period.
By default, the report shows one journal per **customer, product, and invoice** combination. On a monthly invoice cadence, this maps roughly to one journal per invoice line item group.
The report includes daily journal entries. Once exported, you can group them into monthly buckets or keep the daily granularity, depending on your accounting system's preference.
### Journal details
Click into any journal to see the underlying daily entries Sequence generated.
The detailed view shows:
* Daily recognition amounts.
* The source transaction (invoice, billing schedule, credit note, or standalone manual journal).
* Account movements (deferred to recognized, billed to deferred, and so on).
* The recognition method that produced the entry.
* The narrative, including any note Sequence added when a posting date was shifted to respect an account period lock.
### Source field
Every journal carries a **Source** that explains where the entry originated:
| Source | Description |
| - | - |
| Invoice | Recognition driven by an issued invoice. |
| Billing schedule | Recognition driven by a billing schedule (used for unbilled-revenue scenarios). |
| Credit note | Reversal or rebuild from a credit note. |
| Standalone | A manual journal posted via the dashboard, not tied to a Sequence document. |
The Source field is available on the API response and as a filter in the dashboard, so reconciliation by source is straightforward.
## Filters
The report supports the filters most relevant to month-end close:
* **Date range**: from / to (inclusive).
* **As of date**: what the journal report looked like as of a specific historical date.
* **Currency**: one currency per report, since each ledger is currency-scoped.
* **Journal type**: system-generated or manual.
* **Customer, product, invoice, or credit note**: scoped subsets for targeted reconciliation.
* **Exclude fully recognized**: hides journals whose recognition is fully complete by the as-of date.
## Export formats
Sequence supports four export formats. Pick the one that matches your downstream system.
A general-purpose CSV format suitable for any GL system. Columns:
| Column | Notes |
| - | - |
| `Journal Number` | Sequence-generated identifier. |
| `Date` | ISO 8601 date. |
| `Narrative` | Explanation of the journal, including lock-shift notes. |
| `Product name` | Product associated with the journal. |
| `Customer ID` | Sequence customer ID. |
| `Customer name` | Customer's legal name. |
| `Direction` | `DEBIT` or `CREDIT`. |
| `Ledger account name` | E.g., Billed Revenue, Deferred Revenue, Recognized Revenue. |
| `Amount` | Positive amount; the sign comes from the Direction column. |
| `Invoice ID` | Source invoice ID, if applicable. |
| `Invoice number` | Invoice number, if applicable. |
| `Xero ledger account code` | Included only when the Xero connector is enabled. Resolved per-entry from the product's Xero mapping. |
Formatted as a Xero **Manual Journals** import file, so each journal can be loaded into Xero without further transformation. Columns:
| Column | Notes |
| - | - |
| `*Narration` | Journal narrative (required by Xero). |
| `*Date` | ISO 8601 date (required). |
| `Description` | Free-text description. |
| `*AccountCode` | The mapped Xero ledger account code for the entry. |
| `*TaxRate` | Tax rate (left blank for revenue journals). |
| `*Amount` | Signed amount; sign respects Xero's normal-balance convention. Amounts are rounded to two decimal places, with trailing zeroes stripped where appropriate. |
| `TrackingName1 / TrackingOption1` | Tracking categories. |
| `TrackingName2 / TrackingOption2` | Second tracking dimension. |
See [Xero connector](/connectors/xero) for ledger account setup.
A CSV laid out for QuickBooks Online's journal entry import, so each journal loads without further transformation.
A CSV laid out for NetSuite's journal entry import. The column layout differs from the QuickBooks format to match NetSuite's import template.
See [NetSuite connector](/connectors/netsuite) for the customer and product sync that backs invoice and journal posting.
## Sign convention
Sequence's internal ledger uses an explicit `Direction` (Debit or Credit). When generating the Xero export, the amount is signed according to each Xero account's **normal balance**:
* Debiting a debit-normal account produces a positive amount.
* Crediting a credit-normal account produces a positive amount.
* Crediting a debit-normal account produces a negative amount.
* Debiting a credit-normal account produces a negative amount.
This mirrors what Xero expects on import, so journals load without manual sign correction.
## Async download flow
For larger reports, generation runs in the background:
Pick the format (Sequence, Xero, QuickBooks, or NetSuite) and the filters you want, then start the export.
Sequence begins assembling the report. The dashboard shows a "Generating…" state. You can navigate away from the page while this runs.
When the report is ready, Sequence sends an email containing a signed link to download the file. The link is also surfaced inside the dashboard.
Click the link to download the CSV directly. The signed URL has a limited lifetime, so download soon after the email arrives.
The streaming endpoint remains available for small reports that complete in time, but the async flow is the recommended path for monthly close exports on accounts of any meaningful size. How long generation takes depends on the volume of journals in the report.
### Spreadsheet row limits
Large date ranges can produce CSVs that exceed Excel and Google Sheets' row limits (\~1M rows). A full calendar year of daily journals on a high-volume account can hit this.
If you hit the limit:
* Narrow the export to a quarter or month at a time.
* Aggregate to monthly granularity before exporting.
* Load the CSV into a database or BI tool (DuckDB, BigQuery, ClickHouse) for analysis.
## Push journals to Xero
If your account has the Xero connector enabled, you can post recognition journals straight to Xero from this page, instead of exporting a CSV and importing it by hand. Open the **⋯** menu in the top right and choose **Push to Xero**, then pick the periods to push. Each period shows a sync status, and re-pushing only posts what has changed.
See [Posting revenue recognition journals to Xero](/connectors/xero#posting-revenue-recognition-journals-to-xero) in the Xero connector guide for the full flow: account setup, journal posting mode, sync statuses, and currency handling.
## Analysis report
Before pushing, you can produce an analysis report to review how your revenue splits out. Open the **⋯** menu and choose **Generate analysis report**. It gives you a breakdown of your recognized revenue that you can check before the journals land in Xero.
## Connector workflow
Read the journals in Sequence for accuracy. Pay particular attention to credit note reversals and any entries with lock-shift narratives.
Pick the format matching your GL: Xero, QuickBooks, NetSuite, or the generic Sequence CSV.
If your GL prefers monthly totals over daily granularity, group entries in a spreadsheet before import.
Use your accounting system's journal import feature.
Tie exported amounts back to ledger balances. The deferred revenue and waterfall reports reconcile to the journal report. See [Deferred revenue](/revenue-recognition/deferred-revenue) for the reconciliation guide.
## Manual adjustments
Any Sequence-generated journal can be selected for manual adjustment, to correct errors or recognize revenue not captured automatically.
Common adjustment cases:
* **Correction entries**: fix recognition timing or amounts.
* **Manual recognition**: handle complex scenarios not automated.
* **Reclassifications**: move revenue between accounts.
* **One-off adjustments**: account for unique business events.
All manual adjustments are tracked separately, marked as **Standalone** in the Source field, and retain a full audit trail.
## Activity log
Successful revenue recognition runs for invoices and credit notes are written to the account's activity log. This provides a chronological record of what was recognized and when, separate from the journal entries themselves.
# Overview
Source: https://docs.sequencehq.com/revenue-recognition/overview
Streamline your month end process with automated journal reports
Sequence's revenue recognition module produces the journals that move billed amounts into recognized revenue across the service period. The primary output is a monthly journal report you can post directly into your general ledger.
Reports can be customized in granularity and format to match your accounting conventions and downstream system.
Sequence implements revenue recognition in line with ASC 606 (US GAAP) and IFRS 15 (IFRS), with equivalent treatment under FRS 102 §23 for UK SMEs.
## Key concepts
**In-advance and in-arrears billing**
Revenue recognition distinguishes between when customers are billed and when revenue is earned:
* **In-advance billing**: customers are charged upfront and revenue is recognized over time as services are delivered (e.g., annual subscriptions paid upfront).
* **In-arrears billing**: services are delivered first and billed afterwards, with revenue recognized as services are delivered (e.g., monthly usage-based billing).
**Recognition methods**
Sequence supports four recognition methods:
* **Straight-line**: Revenue divided evenly across the service period (most common).
* **Usage-based**: Revenue recognized based on actual usage each period.
* **Point-in-time**: Full amount recognized on a specific date (e.g., implementation fees).
* **Milestone**: Revenue recognized only when milestones are marked as complete.
For straight-line specifically, you can choose between three **allocation strategies**, which differ only in how the part-months at the start and end of a contract are prorated. See [Recognition methods](/revenue-recognition/recognition-methods#allocation-methods) and [Settings](/revenue-recognition/settings#allocation-strategy).
**Revenue accounts**
Sequence tracks revenue through four main accounts:
* **Billed Revenue**: Amounts invoiced to customers.
* **Recognized Revenue**: Revenue earned through service delivery.
* **Deferred Revenue**: Invoiced amounts not yet earned (for advance billing).
* **Unbilled Revenue**: Earned revenue not yet invoiced (for arrears billing).
**Account period locking**
Once a month is closed, Sequence can prevent any further journals from posting into it. Two methods are supported: lock against each invoice's accounting date, or set a single fixed lock date for the whole account. See [Settings](/revenue-recognition/settings#account-period-locking).
**Credit note behavior**
Credit notes either **cancel** future obligations or **adjust** previously recognized revenue, depending on a per-account setting. The two modes produce visibly different journals. See [Credit notes](/revenue-recognition/credit-notes) for the trade-off and worked examples.
**Credit grants**
Prepaid credit grants reduce recognized revenue as they're consumed, so revenue isn't double-counted when an invoice is settled by a grant balance. See [Credit grants](/revenue-recognition/credit-grants).
## Frequently asked questions
* **Straight-line**: subscriptions and fixed-fee services delivered evenly over time.
* **Usage-based**: API usage, data processing, consumption billing.
* **Point-in-time**: setup fees, implementation services, one-off deliverables.
* **Milestone**: project work with specific deliverables tied to acceptance.
Product-level discounts are netted against the product's price within the same journal entry. A \$1,200 subscription with a \$120 discount generates one journal for the net \$1,080.
Invoice-level discounts are allocated across line items in proportion to each line's list price. Each line then recognizes its net amount on its own schedule.
Yes. Account period locking prevents new journals from posting into a closed month. Use each invoice's accounting date as its lock floor, or set a single custom lock date for the whole account. Invoices and credit notes can still be issued for locked periods; they post their revenue against the next open period. See [Settings](/revenue-recognition/settings#account-period-locking).
A credit grant represents revenue that has already been recognized at the point the grant was booked. When the grant is consumed against a subsequent invoice, the recognized revenue for that invoice is reduced by the consumed amount so revenue is not recognized twice. See [Credit grants](/revenue-recognition/credit-grants).
# Recognition methods
Source: https://docs.sequencehq.com/revenue-recognition/recognition-methods
Choose the right method to recognize revenue based on how you deliver value
Recognition methods determine how revenue is allocated over time. The method selected should align with how value is delivered to customers, not necessarily how they are billed.
Recognition methods can be set per product in your product catalog and overwritten on individual invoice line items.
## Straight-line recognition
**Straight-line** recognition spreads the contracted amount evenly across the service period. Use it for subscriptions, licenses, and ongoing support.
Sequence offers three straight-line **allocation methods**. They all recognize the same total and give every full month an equal amount — they differ only in how the part-months at the start and end of the service period are prorated. By default, Sequence uses the **Prorate first & last with daily rate, even months** method; see [Allocation methods](#allocation-methods) to compare all three.
### In-advance billing with straight-line recognition
For subscriptions paid upfront:
1. **On invoice date**: Revenue is deferred
* Debit: Billed Revenue (+\$12,000)
* Credit: Deferred Revenue (+\$12,000)
2. **Daily recognition**: Revenue is recognized over time
* Debit: Deferred Revenue (-\$33/day)
* Credit: Recognized Revenue (+\$33/day)
**Scenario**
* **Amount**: €3,600.00 per quarter
* **Billing**: Quarterly in advance
* **Service period**: March 10 - June 9, 2025 (92 days total)
**Revenue recognition pattern**:
* **On invoice date**: Full amount deferred
* Debit: Billed Revenue (+€3,600)
* Credit: Deferred Revenue (+€3,600)
* **Monthly recognition totals**:
* March (22 days): €860.86 recognized (€3,600 ÷ 92 days \* 22 days)
* April (30 days): €1,193.48 recognized (allocated evenly between full months)
* May (31 days): €1,193.49 recognized (allocated evenly between full months, with remainder)
* June (9 days): €352.17 recognized (€3,600 ÷ 92 days \* 9 days)
* **Daily recognition granularity**: Revenue recognized evenly as services are delivered
* Daily amount: e.g. March €39.13 per day (€860.86 ÷ 22 days)
* Daily journal: Debit Deferred Revenue (-€39.13), Credit Recognized Revenue (+€39.13)
This example uses Sequence's default **Prorate first & last with daily rate, even months** allocation method: the part-months (March and June) are paid at the contract's daily rate, and the full months (April, May) share the rest evenly. See [Allocation methods](#allocation-methods) to compare the alternatives.
### In-arrears billing with straight-line recognition
For services billed after delivery:
1. **During service period**: Revenue is recognized as unbilled
* Debit: Unbilled Revenue (+monthly amount)
* Credit: Recognized Revenue (+monthly amount)
2. **On invoice date**: Unbilled revenue becomes billed
* Debit: Billed Revenue (+monthly amount)
* Credit: Unbilled Revenue (-monthly amount)
**Scenario**
* **Amount**: £600.00 per month
* **Billing**: Monthly in arrears
* **Service period**: January 16 - April 15, 2025 (90 days total)
**Revenue recognition pattern**:
* **Monthly recognition totals**:
* January (16 days): £309.68 recognized, invoiced February 1st
* February (28 days): £600.00 recognized, invoiced March 1st
* March (31 days): £600.00 recognized, invoiced April 1st
* April (15 days): £300.00 recognized, invoiced April 16th
* **Daily recognition granularity**: Revenue recognized evenly as services are delivered
* Daily amount: £600.00 monthly amount ÷ days in that month
* Daily journal: Debit Unbilled Revenue (+daily amount), Credit Recognized Revenue (+daily amount)
* **On each invoice date**: Unbilled revenue becomes billed
* Monthly journal: Debit Billed Revenue (+monthly amount), Credit Unbilled Revenue (-monthly amount)
This example uses Sequence's default allocation method. First and last months are prorated based on actual days in the service period. See [Allocation methods](#allocation-methods) for how the alternatives differ.
### Allocation methods
Sequence offers three straight-line allocation methods. All recognize the same total and give every full month an equal amount — they differ only in how the partial months at the start and end of the service period are prorated.
1. Prorate first & last with daily rate, even months (default)
2. Even months, prorate first, balance last
3. Even months, prorate first & last
The tabs below show how each method splits the same £12,000 contract across two example service periods.
| Month | 15 Jan 2025 to 14 Jan 2026
(full 12 months) | 5 Jan to 14 Dec 2025
(truncated) |
| - | -: | -: |
| First month (partial) | £558.79 | £941.76 |
| Middle months (full)\* | £998.27 | £1,056.99 |
| Last month (partial) | £460.18 | £488.32 |
| **Total** | **£12,000.00** | **£12,000.00** |
\*The last full month absorbs the rounding remainder.
**How it works**: The first and last part-months are paid at the contract's overall daily rate (total ÷ days); the remaining revenue is split evenly across the full months. The last full month absorbs any rounding remainder.
**When to use**: when you want day-level precision at the start and end of a contract — for example, aligning to a specific go-live date.
| Month | 15 Jan 2025 to 14 Jan 2026
(full 12 months) | 5 Jan to 14 Dec 2025
(truncated) |
| - | -: | -: |
| First month (partial) | £548.38 | £950.13 |
| Middle months (full) | £1,000.00 | £1,090.90 |
| Last month (partial) | £451.62 | £140.87 |
| **Total** | **£12,000.00** | **£12,000.00** |
**How it works**: Every full month recognizes an equal amount. The first part-month is prorated to its days, and the final month carries whatever balance remains.
**When to use**: when each full month's revenue should look identical for the same contract, and you're comfortable with the final month carrying the balancing figure.
| Month | 15 Jan 2025 to 14 Jan 2026
(full 12 months) | 5 Jan to 14 Dec 2025
(truncated) |
| - | -: | -: |
| First month (partial) | £548.38 | £923.07 |
| Middle months (full) | £1,000.00 | £1,059.82 |
| Last month (partial) | £451.62 | £478.73 |
| **Total** | **£12,000.00** | **£12,000.00** |
**How it works**: Every full month recognizes an equal amount, and both part-months are prorated in proportion to their days, so equal-length part-months always recognize equal revenue.
**When to use**: when you want equal full months and the two part-months treated symmetrically — the most balanced even-month option.
The method is set on the [revenue recognition settings](/revenue-recognition/settings#allocation-strategy) page. New schedules pick up the current setting; existing schedules continue under the method they were created with.
## Usage-based recognition
**Usage-based** recognition captures revenue as customers consume. Use it for API calls, data processing, and consumption pricing.
Revenue is recognized at the end of the period based on actual usage during that period, regardless of when the invoice is issued.
### In-arrears usage-based billing
Most usage-based pricing follows this pattern:
1. **As usage occurs**: Revenue is recognized in full at the end of the period
* Debit: Unbilled Revenue (+usage amount)
* Credit: Recognized Revenue (+usage amount)
2. **On invoice date**: Unbilled revenue becomes billed
* Debit: Billed Revenue (+usage amount)
* Credit: Unbilled Revenue (-usage amount)
**Scenario**
* **Product**: Usage Product at \$10.00 per unit
* **Billing**: Monthly in arrears
* **Service period**: May 1 - May 31, 2025
* **Usage**: 4 events during May
**Revenue recognition pattern**:
* **During service period**: Usage events tracked but not yet recognized
* 4 events × \$10.00 = \$40.00 total usage for May
* **End of service period** (May 31st): All usage recognized in single journal
* Journal: Debit Unbilled Revenue (+\$40.00), Credit Recognized Revenue (+\$40.00)
* **On invoice date** (June 1st): Unbilled revenue becomes billed
* Invoice amount: \$40.00 for May usage
* Journal: Debit Billed Revenue (+\$40.00), Credit Unbilled Revenue (-\$40.00)
Usage-based recognition captures revenue as value is delivered through actual consumption, regardless of billing timing.
## Point-in-time recognition
**Point-in-time** recognition captures the full amount on a specific date, typically the service delivery date. Use it for implementation fees, setup charges, and one-time deliverables.
Point in time recognition is only available as a recognition method when the service period of the item is a single day.
**Example**: \$5,000 implementation fee
* Full \$5,000 recognized on delivery date
**Scenario**
* **Amount**: ¥125,000
* **Service period**: July 10, 2025 (single day)
* **Invoice date**: August 7, 2025
* **Recognition method**: Point-in-time
**Revenue recognition pattern**:
* **On service delivery date** (July 10th): Full amount recognized as unbilled
* Journal: Debit Unbilled Revenue (+¥125,000), Credit Recognized Revenue (+¥125,000)
* **On invoice date** (August 7th): Unbilled revenue becomes billed
* Journal: Debit Billed Revenue (+¥125,000), Credit Unbilled Revenue (-¥125,000)
Point-in-time recognition captures the full revenue immediately when the service is delivered, regardless of the date the invoice is issued.
### In-advance point-in-time
For fees paid before delivery:
**On invoice date**: Revenue is recognized immediately
* Debit: Billed Revenue (+\$5,000)
* Credit: Recognized Revenue (+\$5,000)
Point-in-time recognition creates a single journal entry on the invoice accounting date, regardless of billing timing. Revenue is recognized immediately rather than deferred.
### In-arrears point-in-time
For fees billed after delivery:
1. **On delivery date**: Revenue is recognized as unbilled
* Debit: Unbilled Revenue (+\$5,000)
* Credit: Recognized Revenue (+\$5,000)
2. **On invoice date**: Unbilled revenue becomes billed
* Debit: Billed Revenue (+\$5,000)
* Credit: Unbilled Revenue (-\$5,000)
## Milestone-based recognition
**Milestone** recognition releases revenue only when milestones are marked complete. Use it for project work with specific deliverables, such as consulting engagements, custom development, or phased implementations.
Recognition timing tracks actual delivery rather than a fixed schedule.
**Example**: \$45,000 project with 2 milestones
* Milestone 1 completion: \$10,000 recognized
* Milestone 2 completion: \$35,000 recognized
**Scenario**
* **Product**: Custom software development
* **Amount**: \$45,000 total project fee
* **Billing**: Invoiced upfront on contract signing
* **Invoice date**: January 15, 2025
* **Service period**: January 15 - June 15, 2025
* **Milestones**:
* Milestone 1: Requirements analysis (\$10,000)
* Milestone 2: Development and deployment (\$35,000)
**Revenue recognition pattern**:
* **On invoice date** (January 15th): Full amount deferred until milestones complete
* Journal: Debit Billed Revenue (+\$45,000), Credit Deferred Revenue (+\$45,000)
* **Milestone 1 completed** (March 1st): First milestone revenue recognized
* Journal: Debit Deferred Revenue (-\$10,000), Credit Recognized Revenue (+\$10,000)
* Remaining deferred: \$35,000
* **Milestone 2 completed** (May 15th): Final milestone revenue recognized
* Journal: Debit Deferred Revenue (-\$35,000), Credit Recognized Revenue (+\$35,000)
* Project complete: \$45,000 total recognized
Milestone recognition provides complete control over revenue timing, ensuring recognition only occurs when specific deliverables are actually completed.
### Milestone recognition workflow
1. **On invoice date**: Revenue is deferred (regardless of billing timing)
* Debit: Billed Revenue (+\$45,000)
* Credit: Deferred Revenue (+\$45,000)
2. **When milestone is marked complete**: Revenue is recognized
* Milestone 1: Debit Deferred Revenue (-\$10,000), Credit Recognized Revenue (+\$10,000)
* Milestone 2: Debit Deferred Revenue (-\$35,000), Credit Recognized Revenue (+\$35,000)
To recognize revenue for completed milestones, navigate to the revenue recognition dashboard and mark the appropriate milestone as delivered.
## Choosing a recognition method
| Scenario | Method |
| - | - |
| Monthly SaaS subscription | Straight-line |
| Annual license paid upfront | Straight-line |
| API usage billing | Usage-based |
| Data processing charges | Usage-based |
| Setup or onboarding fee | Point-in-time |
| Custom development project | Milestone |
# Revenue waterfall
Source: https://docs.sequencehq.com/revenue-recognition/revenue-waterfall
See how deferred revenue burns down into recognized revenue across future months
The revenue waterfall projects recognition across future months for every active schedule. It is the standard view for forecasting future revenue and for the run-off of the deferred liability.
## What each row shows
Each row corresponds to a grouping, typically customer with product as a child row:
* **Booked total**: the total invoiced amount tied to that row.
* **Recognized**: the amount recognized as of today.
* **Remaining**: the amount still to be recognized in future periods.
* **Monthly columns**: one column per future month, showing the recognition expected in that month.
The columns extend to the latest end date across all active schedules in the row, giving a complete picture of the recognition runway.
## Grouping
The waterfall is grouped hierarchically:
1. **Customer level**: total booked, recognized, and remaining for that customer. The monthly columns sum across all of the customer's products.
2. **Product level** (child rows): the same metrics scoped to one product for one customer.
For a multi-product customer this makes it straightforward to see which product drives which month's recognition, and to spot upcoming end-of-term recognition spikes or renewal cliffs.
## Exporting
The waterfall is exportable to CSV for offline analysis. For accounts whose volume permits it, the export runs synchronously and the file downloads directly.
Very large accounts may push the synchronous endpoint to its limit. If a timeout occurs, narrow the date range and re-export, or contact support about an asynchronous export path.
### What the CSV contains
The CSV mirrors the in-app waterfall: one row per grouping, with the monthly columns expanded out as date-stamped columns. The format is well-suited to spreadsheet pivots and BI tools.
## Reconciling to the deferred revenue report
The waterfall and the [deferred revenue report](/revenue-recognition/deferred-revenue) describe the same book of business from two angles. They reconcile when scoped consistently.
To make the figures tie:
* Use the same as-of date on both reports.
* Read the deferred report's **Remaining** column (not Balance). Remaining is the column that ties to the waterfall, because both are measured against the deferred ledger.
* For accounts with historical data, set both reports to start at the same earliest date (for example, the first month your business started recognizing revenue in Sequence).
Small differences can appear where a credit note reverses revenue from a back-dated parent invoice and routes part of the movement directly through recognized revenue. Both reports remain correct for their respective purposes: the deferred report shows the ledger balance at a point in time, the waterfall shows how that balance is expected to run off.
# Settings
Source: https://docs.sequencehq.com/revenue-recognition/settings
Configure how Sequence recognizes revenue across your business
Revenue recognition settings are on the **Account / Revenue recognition** page. They control posting dates, allocation, credit note treatment, and Xero account mapping.
## Account period locking
Once a month has been closed in your general ledger, no further revenue should post into it. Account period locking enforces this on the Sequence side, so a late invoice or credit note cannot quietly write into a closed month.
The lock applies at journal creation, not at charge generation. Invoices and credit notes can still be issued for dates inside a locked period; they simply post their revenue against the next open period.
### Lock date method
Two options control how the lock date is determined:
| Method | Behavior |
| - | - |
| **Accounting date (invoice date)** | Sequence uses each invoice's accounting (invoice) date as its effective lock floor. Revenue recognized before that date is held back and posted at the earliest open date. |
| **Custom lock date** | You set a single date for the whole account. Any revenue that would otherwise post before this date is realigned to the earliest open date. |
### Service periods that span the lock
A service period that begins before the lock and ends after it is not rejected. Sequence allocates revenue for the locked portion to the first open day, then continues recognizing day-by-day from that point.
For example, with a lock date of **31 Dec 2025**, an invoice covering **1 Dec 2025 to 31 Mar 2026** will:
* Catch up the December recognition in a single entry on **1 Jan 2026**.
* Recognize January, February, and March normally.
Journal narratives explicitly call out when an entry has been shifted to respect the lock, so the audit trail stays transparent.
### Credit notes against locked periods
Credit note reversals follow the same principle. Anything that would unwind into a locked period is held until the lock end date and catches up on the first open day.
## Allocation strategy
The allocation strategy controls how straight-line revenue is spread across the service period. All three strategies recognize the same total and give every full month an equal amount; they differ only in how the part-months at the start and end of the period are prorated.
| Strategy | How it works |
| - | - |
| **Prorate first & last with daily rate, even months** *(default)* | The first and last part-months are paid at the contract's overall daily rate (total ÷ days); the remaining revenue is split evenly across the full months. The last full month absorbs any rounding remainder. |
| **Even months, prorate first, balance last** | Every full month recognizes an equal amount. The first part-month is prorated to its days, and the final month carries whatever balance remains. |
| **Even months, prorate first & last** | Every full month recognizes an equal amount, and both part-months are prorated in proportion to their days, so equal-length part-months always recognize equal revenue. |
See [Allocation methods](/revenue-recognition/recognition-methods#allocation-methods) for worked breakdowns showing how each strategy splits the same contract.
The setting is exposed on the revenue recognition settings API as `allocationPartialProrationStrategy`, with values `PRORATE_DAILY` (Prorate first & last with daily rate), `BALANCE_EVEN_MONTHLY` (Even months, balance last), or `PRORATE_MONTHLY` (Even months, prorate first & last). Changes apply to new recognition schedules; existing schedules continue under the strategy they were created with.
## Credit note revenue impact
Credit notes have two distinct effects on previously recognized revenue. The appropriate treatment depends on whether you prefer an immediate adjustment to recognized revenue or a prospective reallocation over the remaining performance period.
The credit note cancels future obligations. Sequence reverses revenue in this order:
1. Delete any future-dated recognition journals that have not posted yet.
2. Reverse remaining deferred revenue.
3. Reverse any already-recognized revenue if the credit exceeds the remaining deferred balance.
**What you'll see in reports**: the original invoice stops recognizing further revenue. Recognized + deferred no longer equals net billed, because the cancellation removes future obligations without redistributing the already-recognized portion.
Cancellation mode keeps each invoice and its credit note paired. Use it when the credit note represents a true cancellation (e.g., a refund for unused service).
The credit note spreads its reversal proportionally across the credit note's service period. The original invoice continues recognizing as scheduled.
**What you'll see in reports**: recognized + deferred ≈ net billed at any point in time. The original invoice and the credit note move daily in opposite directions, netting to the correct figure in aggregate.
Use adjustment mode when a credit represents a partial reduction in scope (e.g., a renegotiation, a usage true-down) and the reallocation matches how the business reads its revenue trajectory.
On the first day of the credit note service period, the deferred balance is reduced by the credit's net amount. From that day forward, the credit note posts daily mirror-image entries (debit recognized / credit deferred) against the original invoice's continuing recognition.
The setting is exposed on the API as `creditNoteRevenueImpact`, with values `CANCELLATION` or `ADJUSTMENT`. See [Credit notes](/revenue-recognition/credit-notes) for worked examples.
The two modes produce materially different journals. Switching the setting partway through a financial period will create inconsistencies between historical and new credit notes. Confirm and agree the change internally before switching the setting.
## Recognition triggers
Sequence creates recognition journals when an invoice or credit note reaches a state that signals delivery has begun:
* **Issued**: the document is finalized and posted, with an accounting (invoice) date assigned.
* **Marked as sent**: the document is marked sent without re-issuing (e.g., a previously issued invoice manually marked sent after export). Recognition runs on this transition for both invoices and credit notes, so a document marked sent outside the standard flow still recognizes.
Any subsequent edit that regenerates a credit note's line items will preserve the recognition method already chosen, so a straight-line credit note stays straight-line rather than flipping to point-in-time mid-life.
## Xero account mappings
If your account has the Xero connector enabled, the settings page also shows the accounts and journal options for posting recognition journals to Xero.
### Journal posting
**Journal mode** controls the state journals arrive in when you push them to Xero.
* **Draft** (default): journals are created unposted, for review in Xero before they affect the general ledger.
* **Posted**: journals are created in their final state and affect the general ledger straight away.
### Ledger accounts
Map the Xero ledger accounts each journal entry should hit:
* **Deferred revenue accounts**: hold billed but not yet earned revenue (the liability side).
* **Recognized revenue accounts**: hold earned revenue (the income side).
* **Unbilled revenue accounts**: hold earned but not yet invoiced revenue (used for billing in arrears).
* **Clearing account**: a single temporary holding account that connects Xero's automatic invoice journals to Sequence's recognition journals.
Each journal entry takes its Xero account code from the per-product mapping for that ledger account, managed on the product itself. Deferred, recognized, and unbilled accounts can be overridden per product; the clearing account is a single shared account for the whole workspace.
See [Xero connector](/connectors/xero#posting-revenue-recognition-journals-to-xero) for the full setup, including the clearing account, allocation and recognition journals, and currency handling.
# Use-cases
Source: https://docs.sequencehq.com/revenue-recognition/use-cases
Handle discounts, credit notes, one-time invoices, and minimum fees
Revenue recognition handles complex billing scenarios automatically. This guide covers discounts, credit notes, one-time invoices, and minimum fees.
## Discounts
Discounts reduce the transaction price according to ASC 606/IFRS 15 guidelines. Sequence supports two types of discounts with different recognition treatments.
### Product-level discounts
Product-level discounts appear as negative line items within an existing line item group. They're netted against the product's price and recognized using the same method and service period.
**Example**: \$1,200 annual subscription with 10% discount
* Standard price: \$1,200
* Discount: -\$120 (within same line group)
* **Net recognition**: \$1,080 over 12 months using straight-line method
**Scenario**
* **Product**: Annual subscription service
* **Standard price**: \$1,200
* **Product-level discount**: 10% (-\$120)
* **Net amount**: \$1,080
* **Billing**: Annual in advance
* **Service period**: July 1, 2024 - June 30, 2025 (365 days)
* **Recognition method**: Straight-line
**Revenue recognition pattern**:
* **On invoice date** (July 1, 2024): Net amount deferred
* Journal: Debit Billed Revenue (+\$1,080), Credit Deferred Revenue (+\$1,080)
* **Daily recognition**: Revenue recognized based on actual days in each month
* Base daily amount: \$2.96 per day (\$1,080 ÷ 365 days)
* Most days: \$2.90 recognized daily
* Month-end adjustments: \$3.00 on final day to ensure monthly total of \$90
* Example for May 2025: 30 days × \$2.90 + 1 day × \$3.00 = \$90.00
Product-level discounts are netted against the product price and recognized using the same method and timing as the underlying product.
### Invoice-level discounts
Invoice-level (global) discounts are separate line item groups with negative amounts. Sequence automatically allocates these discounts pro-rata across all invoice line items based on their standalone selling price.
**Example**: \$1,000 total invoice with \$100 global discount
* Line 1: \$800 subscription (gets \$80 discount allocation)
* Line 2: \$200 setup fee (gets \$20 discount allocation)
* **Recognition**: Each line recognizes its reduced amount using its own recognition method
Allocation is based on standalone selling price (SSP) - the transaction price of each line item - ensuring compliance with ASC 606/IFRS 15 standards.
This allocation happens automatically on the invoice date, so each line item's revenue schedule reflects the discounted amount.
## Credit notes
Credit notes reverse previously recognized revenue. The exact behavior depends on the credit note variant (invoice-attached, direct, schedule-correction, or standalone) and on the account-level **revenue impact mode** (cancellation or adjustment). See [Credit notes](/revenue-recognition/credit-notes) for the full treatment with worked examples.
**Quick summary**:
* In **cancellation mode** (default), the credit note removes future obligations and reverses the deferred balance, before touching recognized revenue if needed.
* In **adjustment mode**, the original invoice continues recognizing as scheduled, and the credit note posts daily mirror entries that reallocate the reversal across the credit note's service period.
## One-time invoices
One-time invoices recognize revenue based on their service period and selected recognition method, with sensible defaults.
### Default behaviors
**Single-day service period**: Point-in-time recognition
* Full amount recognized immediately
* Common for ad-hoc charges, refunds, or adjustments
**Multi-day service period**: Straight-line recognition
* Revenue spread evenly over the service period
* Partial periods are prorated based on actual days over 365
* Common for project work or time-based services
### Customizing invoice line items
You can override any defaults when editing the invoice:
* Change recognition method per line item
* Adjust service periods independently
* Select different revenue classifications (arrears/advance)
## Minimum fees and true-ups
When usage falls short of committed minimums, Sequence automatically generates true-up line items to ensure the minimum spend is met.
### True-up creation
When actual usage falls short of the committed minimum, Sequence automatically calculates and adds a true-up line item to meet the shortfall.
**Scenario**
* **Products**: Two usage-based products (A and B)
* **Monthly minimum**: A\$100.00
* **Actual usage**: A\$20.00 (Product A only, Product B had no usage)
* **True-up required**: A\$80.00
* **Service period**: May 2025
* **Billing**: Monthly in arrears (June invoice)
**Revenue recognition pattern**:
* **During May**: Usage tracked but not yet recognized
* Product A usage: A\$20.00
* Product B usage: A\$0.00
* **End of May**: Usage and true-up recognized simultaneously
* Usage recognition: Debit Unbilled Revenue (+A\$20.00), Credit Recognized Revenue (+A\$20.00)
* True-up recognition: Debit Unbilled Revenue (+A\$80.00), Credit Recognized Revenue (+A\$80.00)
* Total recognized: A\$100.00 (meeting minimum requirement)
* **On invoice date** (June): All unbilled revenue becomes billed
* Invoice total: A\$100.00 (A\$20.00 usage + A\$80.00 true-up)
* Journal: Debit Billed Revenue (+A\$100.00), Credit Unbilled Revenue (-A\$100.00)
True-up fees use point-in-time recognition because the service period has already been delivered, ensuring immediate recognition when the shortfall is identified.
## Credit grants
Prepaid credit grants reduce recognized revenue as they're consumed against invoices, so the same revenue isn't recognized twice. See [Credit grants](/revenue-recognition/credit-grants) for the model, examples, and limitations.
# Guide to seat-based billing
Source: https://docs.sequencehq.com/seats/api-guide
Learn how to build a seat-based billing model end-to-end via API or Dashboard
This step-by-step guide will provide detailed instructions on configure seat-based billing configuration through our API, from configuring your API keys to submitting seat usage and reviewing invoices.
In this guide you will learn how to:
* Configure your API keys
* Setting up products, tax rates and
Follow these detailed steps to configure your pricing and billing via the Sequence API. Each step is designed to help you seamlessly integrate and automate your billing processes.
Prefer a more visual approach? You can accomplish all the API steps directly within the Sequence dashboard. Our user interface is designed for intuitive navigation, allowing you to configure your billing settings effortlessly.
### Configure your API keys
Before you begin integration with the Sequence API, you'll need to set up your API keys. Follow these steps to manage your API credentials:
Accessing Your API Keys
* Log into the Sequence Dashboard: [Navigate to the dashboard using your credentials](https://dashboard.sequencehq.com/).
* Generate or Retrieve API Keys: Navigate to your [account settings](https://dashboard.sequencehq.com/settings/api-keys). If you haven't yet created an API key, select the option to generate a new key pair. If you already have a pair, you can use those.
### Setting Up Environment Variables
After obtaining your API key and secret, set them as environment variables on your system. Setting your API keys as environment variables prepares your system for the next steps in setting up billing for a new customer using Sequence.
```shell theme={null}
export API_KEY=your-api-key
export API_SECRET=your-api-secret
```
### Create a product
Next, we need to define the product for which we will be billing. In this example, the product is the number of seats available.
In Sequence, products appear as groups of line items on invoices. It's important to name your products in a way that is easily recognizable to you when using our dashboard.
Remember to note down the Product IDs you receive in the response. You will need these IDs for later steps.
```shell Create a product theme={null}
curl -X POST --location "https://eu.sequencehq.com/api/products" \
--basic --user $API_KEY:$API_SECRET \
-H "Content-Type: application/json" \
-d '{
"name": "Example product",
"label": "Example product"
}'
```
```json Product response theme={null}
{
"id": "c7326e0d-d2fb-434e-ae8f-f5ae6142a476",
"name": "Example product",
"label": "Example product",
"createdAt": "2024-05-02T14:26:48.63792Z",
"updatedAt": "2024-05-02T14:26:48.637932Z"
}
```
### Create a seat metric
We will create the seat metric for the type of seat we intend to charge for. For this example, we are creating a "standard" seat type. This designation will help determine the pricing for each seat. Note that each seat metric can have multiple prices associated with it. For instance, you could use a single seat type to represent both your standard and pro pricing tiers, or you could create separate seat types for each pricing level.
Be sure to note down the Seat Type ID you receive in the response, as it will be necessary for subsequent steps.
```shell Create a seat type theme={null}
curl -X POST --location "https://eu.sequencehq.com/api/seat-metrics" \
--basic --user $API_KEY:$API_SECRET \
-H "Content-Type: application/json" \
-d '{
"seatType": "editor",
"label": "Editor Seat"
}'
```
```json Seat type response theme={null}
{
"id": "49b62ade-938b-4182-b1e0-01a1f295a8ad",
"seatType": "editor",
"label": "Editor Seat",
"createdAt": "2024-05-02T14:52:18.913471Z",
"updatedAt": "2024-05-02T14:52:18.913471Z"
}
```
### Create a seat price
Finally, we will set the pricing for the 'standard' seat type we previously created. The price per seat is set at £15.00 and will be billed monthly in arrears. The proration strategy used is 'PRORATE\_INCREMENTS', which adjusts the customer's bill based on the number of seats they use during the current billing month.
The pricing model is 'SEAT\_BASED', indicating that the pricing specifically applies to each seat used.
We've set the contracted minimum seats to zero, ensuring that the customer pays for every seat they consume. If you have a minimum number of seats you would like to charge for, even if not all seats were consumed, then you can set this value to a number larger than zero.
Remember to note the ID of the price you receive in the response, as this will be important for future steps.
```shell Create a seat price theme={null}
curl -X POST --location "https://eu.sequencehq.com/api/prices" \
--basic --user $API_KEY:$API_SECRET \
-H "Content-Type: application/json" \
-d '{
"name": "Editor seat for ",
"productId": "c7326e0d-d2fb-434e-ae8f-f5ae6142a476",
"currency": "GBP",
"billingFrequency": "MONTHLY",
"billingType": "IN_ARREARS",
"structure": {
"pricingType": "SEAT_BASED"
"seatMetricId": "49b62ade-938b-4182-b1e0-01a1f295a8ad",
"pricePerSeat": "15.0",
"prorationStrategy": "PRORATE_INCREMENTS",
"contractedMinimumSeats": 0
},
"externalIds": []
}'
```
```json Price response theme={null}
{
"id": "018f39d9-b6ec-760f-87c0-032b73c86b1b",
"sequenceAccountId": "a633a6ef-f023-4d03-91c7-5879356d5eae",
"productId": "c7326e0d-d2fb-434e-ae8f-f5ae6142a476",
"name": "Standard seat price",
"currency": "GBP",
"structure": {
"pricingType": "SEAT_BASED",
"seatTypeId": "49b62ade-938b-4182-b1e0-01a1f295a8ad",
"pricePerSeat": "15.0",
"prorationStrategy": "PRORATE_INCREMENTS",
"contractedMinimumSeats": 0,
"tiers": []
},
"billingFrequency": "MONTHLY",
"billingType": "IN_ARREARS",
"createdAt": "2024-05-02T15:08:40.556433Z",
"externalIds": [],
"customMetricParameters": []
}
```
### Create a customer
Up to this point, we have established the foundational models, such as the seat-based pricing model, that apply universally to all customers. This pricing model is designed to be reusable for any customer who signs up for your service. The following steps are specific to individual customers and should be repeated each time you onboard someone new.
First, you will need to create a customer through our API. The customer object is a central component in Sequence and represents the entity you will bill. It includes essential information such as contact details, billing preferences, and any external IDs you might need. For instance, in this example, we are incorporating a Stripe customer ID as an external ID, allowing us to link the Sequence customer with their Stripe counterpart.
```shell Create a customer theme={null}
curl -X POST --location "https://eu.sequencehq.com/api/customers" \
--basic --user $API_KEY:$API_SECRET \
-H "Content-Type: application/json" \
-d '{
"legalName": "John Doe",
"contactName": "John Doe",
"address": {
"line1": "Flat 1",
"line2": "123 Fake Street",
"town": "London",
"postcode": "AB1 2EF",
"country": "GB"
},
"email": "john@example.com",
"billingEmails": ["billing@example.com"],
"telephone": "001122334455",
"url": "https://example.com/",
"label": "Example Customer",
"taxStatus": "TAXED",
"customerAliases": [],
"integrationIds": [{
"service": "Stripe",
"id": "cus_OCtCxqQDgu1uX9"
}]
}'
```
```json Customer response theme={null}
{
"id": "d512f4cb-ff5c-405b-888e-ef96e2e99077",
"createdAt": "2024-05-02T15:07:48.806213Z",
"sequenceAccountId": "a633a6ef-f023-4d03-91c7-5879356d5eae",
"legalName": "John Doe",
"contactName": "John Doe",
"address": {
"line1": "Flat 1",
"line2": "123 Fake Street",
"town": "London",
"postcode": "AB1 2EF",
"country": "GB"
},
"email": "john@example.com",
"billingEmails": [
"billing@example.com"
],
"telephone": "001122334455",
"url": "https://example.com/",
"taxStatus": "TAXED",
"label": "Example Customer",
"externalIds": [{
"service": "Stripe",
"id": "cus_OCtCxqQDgu1uX9",
"lastSynced": "2024-05-09T16:09:44.303644Z",
"url": "https://dashboard.stripe.com/customers/cus_OCtCxqQDgu1uX9"
}]
}
```
### Create tax rates
For simplicity, we'll assume that all future customers will be subject to tax. To accommodate this, you first need to create a tax rate. This rate will be applied later when setting up billing schedules for each customer.
```shell cURL theme={null}
curl -X POST --location "https://eu.sequencehq.com/api/tax-rates" \
--basic --user $API_KEY:$API_SECRET \
-H "Content-Type: application/json" \
-d '{
"isPublished": true,
"name": "UK Sales Tax",
"invoiceName": "Value Added Tax",
"invoiceShortName": "VAT",
"description": "Value Added Tax applied to sales in the UK",
"amount": "0.2",
"country": "GB"
}'
```
```json Tax rate response theme={null}
{
"id": "4e49a233-c195-4453-8da3-f2964cd6e528",
"versionId": "c1f427df-02c3-42c4-8677-3b3c26eaf1eb",
"sequenceAccountId": "a633a6ef-f023-4d03-91c7-5879356d5eae",
"version": 0,
"isPublished": true,
"name": "UK Sales Tax",
"invoiceName": "Value Added Tax",
"invoiceShortName": "VAT",
"description": "Value Added Tax applied to sales in the UK",
"amount": "0.2",
"country": "GB",
"isArchived": false
}
```
### Create a billing schedule
Once the customer is set up, the next step is to create a billing schedule. The billing schedule outlines the customer’s billing plan, including start and end dates, the day of recurrence, and pricing phases. In this example, we are establishing a billing schedule that spans from January 1st, 2024, to December 31st, 2024. This schedule features a single phase that covers the entire year and incorporates the price we've created earlier.
Additionally, the tax rate we established will be included in the billing schedule. This ensures that the correct tax amount is applied to the price and invoice during billing.
After the billing schedule is in place, Sequence will automatically generate invoices based on the seat events you report for the customer.
```shell Create a billing schedule theme={null}
curl -X POST --location "https://eu.sequencehq.com/api/billing-schedules" \
--basic --user $API_KEY:$API_SECRET \
-H "Content-Type: application/json" \
-d '{
"type": "PHASES",
"customerId": "d512f4cb-ff5c-405b-888e-ef96e2e99077",
"startDate": "2024-01-01",
"endDate": "2024-12-31",
"recurrenceDayOfMonth": 1,
"phases": [
{
"priceIds": ["018f39d9-b6ec-760f-87c0-032b73c86b1b"],
"startDate": "2024-01-01",
"endDate": "2024-12-31"
}
],
"taxRates": [
{
"priceId": "018f39d9-b6ec-760f-87c0-032b73c86b1b",
"taxRateId": "4e49a233-c195-4453-8da3-f2964cd6e528"
}
],
"isDraft": false,
"rollUpBilling": true
}'
```
```json Billing schedule response theme={null}
{
"id": "8da1e0ae-205f-42ee-bb3e-38b670ded0d2",
"customerId": "d512f4cb-ff5c-405b-888e-ef96e2e99077",
"status": "ACTIVE",
"startDate": "2024-01-01",
"endDate": "2024-12-31",
"taxRates": [
{
"priceId": "018f39d9-b6ec-760f-87c0-032b73c86b1b",
"taxRateId": "4e49a233-c195-4453-8da3-f2964cd6e528"
}
],
"recurrenceDayOfMonth": 1,
"autoIssueInvoices": false,
"prices": [
{
"id": "018f39d9-b6ec-760f-87c0-032b73c86b1b",
"sequenceAccountId": "a633a6ef-f023-4d03-91c7-5879356d5eae",
"productId": "c7326e0d-d2fb-434e-ae8f-f5ae6142a476",
"name": "Standard seat price",
"currency": "GBP",
"structure": {
"pricingType": "SEAT_BASED",
"seatTypeId": "49b62ade-938b-4182-b1e0-01a1f295a8ad",
"pricePerSeat": "15.0",
"prorationStrategy": "PRORATE_INCREMENTS",
"includedSeats": 0,
"chargeMethod": "CHARGE_CONSUMED",
"tiers": []
},
"billingFrequency": "MONTHLY",
"billingType": "IN_ARREARS",
"createdAt": "2024-05-02T15:08:40.556433Z",
"externalIds": [],
"customMetricParameters": []
}
],
"createdAt": "2024-05-02T15:14:40.331734Z",
"updatedAt": "2024-05-02T15:14:40.331734Z",
"phases": [
{
"id": "018f39df-3458-7f08-a4af-6b5fabcd1f79",
"createdAt": "2024-05-02T15:14:40.344175Z",
"billingScheduleId": "8da1e0ae-205f-42ee-bb3e-38b670ded0d2",
"priceIds": [
"018f39d9-b6ec-760f-87c0-032b73c86b1b"
],
"startDate": "2024-01-01",
"endDate": "2024-12-31",
"discounts": [],
"minimums": []
}
],
"rollUpBilling": true
}
```
### Submitting seat events
With all billing related information out of the way, you can now start submitting seat events to us when your customers consume seats on your platform.
To overwrite a seat event, resubmit it with the same `customerEventId`. If you submit two or more seat events for the same day with **different** `customerEventId` values, billing uses the **highest seat count** for that day. See [Seat events](/seats/seat-updates#how-sequence-uses-seat-events-for-billing) for details.
```shell Create a seat event theme={null}
curl -X POST --location "https://eu.sequencehq.com/api/seat-events" \
--basic --user $API_KEY:$API_SECRET \
-H "Content-Type: application/json" \
-d '{
"customerEventId": "10be23bc-09a2-4078-959b-551e8a402781",
"customerAlias": "d512f4cb-ff5c-405b-888e-ef96e2e99077",
"seatType": "editor",
"eventTimestamp": "2024-05-02T19:00:00.000000Z",
"total": 1
}'
```
```json Seat event response theme={null}
{
"id": "018f5e30-7992-7b82-a352-3a73cfccacb0",
"customerEventId": "10be23bc-09a2-4078-959b-551e8a402781",
"customerAlias": "d512f4cb-ff5c-405b-888e-ef96e2e99077",
"seatType": "editor",
"sequenceAccountId": "a633a6ef-f023-4d03-91c7-5879356d5eae",
"eventTimestamp": "2024-05-02T19:00:00.000000Z",
"total": 10
}
```
### Invoices
Finally, after the first billing period has finished, you can retrieve all invoices related to the billing schedules you have created.
```shell Retrieve invoices theme={null}
curl -X GET --location "https://eu.sequencehq.com/api/invoices" \
--basic --user $API_KEY:$API_SECRET
```
```json Invoices response theme={null}
{
"items": [
{
"id": "32761569-e9a8-4155-bedb-0abaac30ecb4",
"sequenceAccountId": "a633a6ef-f023-4d03-91c7-5879356d5eae",
"billingScheduleId": "8da1e0ae-205f-42ee-bb3e-38b670ded0d2",
"status": "DRAFT",
"currency": "GBP",
"customerEmails": [
"exampleCorpInvoices@example.com"
],
"customerLegalCompanyName": "John Doe",
"customerBillingAddress": {
"line1": "Flat 1",
"line2": "123 Fake Street",
"town": "London",
"postcode": "AB1 2EF",
"country": "GB"
},
"customerShippingAddress": {
"line1": "Flat 1",
"line2": "123 Fake Street",
"town": "London",
"postcode": "AB1 2EF",
"country": "GB"
},
"paymentOptions": [
"STRIPE"
],
"billingPeriod": {
"start": "2024-01-01",
"endInclusive": "2024-01-31"
},
"customerId": "d512f4cb-ff5c-405b-888e-ef96e2e99077",
"totalTax": "30",
"netTotal": "150",
"grossTotal": "180",
"metadata": [],
"paymentStatus": "UNPAID",
"createdAt": "2024-02-01T16:16:47.850079Z",
"creditNoteIds": [],
"linkedServices": [],
"billingRunId": "018f5e24-8f9b-71e6-a47b-e7647f55e8b8",
"accountingDate": "2024-01-31",
"calculatedAt": "2024-02-01T16:16:47.850079Z",
"customerTaxStatus": "TAXED"
}
],
"pagination": {
"after": null,
"before": null,
"totalResultSize": 1
}
}
```
## Conclusion
If you check your Sequence Dashboard, you should now see the tax rate, seat type, product, price, customer, and billing schedule you've created.
It's important to note that while all these configurations can be accomplished directly through the Sequence Dashboard, this API example was designed to demonstrate how you can embed similar functionalities directly into your codebase for a more integrated solution.
We hope this end-to-end API guide has been informative and useful for your integration efforts. Please reach out to let us know your feedback or if you need assistance designing any other billing models to optimize your billing processes.
# Overview
Source: https://docs.sequencehq.com/seats/overview
Leverage comprehensive seat-based billing infrastructure
Sequence provides native support for businesses with seat-based pricing, including seat types, a simple API to submit seat updates and a dashboard to track seat balances and changes.
## Concepts
### Seat metrics
Seat metrics represent the types of seats that exist in your product, such as Admin seats, Viewer seats, Editor seats, etc.
### Seat balances
The seat balance reflects the latest number of seats in use for a customer, per seat metric. For example, a customer may have a seat balance of 120 Admin seats. The next day 5 new Admin seats are added, 1 is removed. The new seat balance is 124 Admin seats. Learn more about a customer's seat balances [here](/seats/seat-balances).
### Seat events
Seat events describe changes in seat balances. The seat events view shows a log of all seat events you have sent to Sequence. Each seat event includes a granular view of the number of seats that were added and removed as well as the balance at the time the seat update was submitted. Learn more about seat events [here](/seats/seat-updates).
To submit a seat update via the dashboard (typically for testing), select a customer and seat metric and define how many seats are added and/or removed.
## Getting started with seat-based billing
For a detailed setup guide, view our [seat-based billing guide](/seats/api-guide)
Start by configuring your seat metrics in Sequence. Seat metrics reflect the different types of seats available via your app that your customers are billed for. You can optionally also include free seats (e.g. Viewer seats).
You can submit a seat event to update a customer's seat balance via the Sequence dashboard for testing. Actual seat updates are submitted via API.
On the balances view, you can now see the new balance for the customer.
Create a billing schedule for the customer and configure a seat-based price, using the seat metric you've configured.
Once you start the billing schedule, you should see an in-progress invoice including any seat-based charges for the customer.
Submit seat events to Sequence whenever a user adds or removes seats.
You can now create and add seat-based prices to your billing schedules. Sequence will automatically calculate seat balances and calculate billing based on your seat-based pricing configuration.
***
## Seat-based pricing: Industry examples
* [Miro](https://help.miro.com/hc/en-us/articles/360017571714-How-Miro-billing-works-) and [Figma](https://www.figma.com/pricing-faq/) have per-seat pricing with self-serve flows to add/remove users. Charges are prorated in both cases. Figma does not refund downgrades for annual seats.
* [Loom](https://support.loom.com/hc/en-us/articles/7310782877469-Loom-s-Billing-Policy-Business-Plans-) and [Asana](https://asana.com/guide/help/premium/billing) have per-seat pricing, but only prorate upgrades – downgrades are effective from the next billing cycle.
* [Grafana](https://grafana.com/pricing/#faqActiveUser) and [Kadence](https://kadence.co/pricing/) charge a fixed amount per “active user”: there is no set limit to how many users a customer can have, and they will get charged based on how many seats were active in a given billing period, where “active” means having used the product at least once in that period. With this definition, seats are either fully active or fully inactive each period, so there is no proration.
* [Slack](https://slack.com/help/articles/218915077-Slacks-Fair-Billing-Policy) price based on “active seats” and seats can be partially active in a billing period, in which case proration applies.
* With [Github](https://docs.github.com/en/billing/managing-the-plan-for-your-github-account/about-per-user-pricing), customers are charged in-advance based on the latest number of seats. If a customer adds seats mid-month, they are immediately charged a prorated amount. Downgrades are still charged for in the current billing period (no refund/credit).
* [HubSpot](https://www.hubspot.com/company-news/announcing-upcoming-changes-to-hubspots-pricing) bills monthly in-arrears based on number of seats. If customer adds a user, the next bill will include a prorated charge based on when the user was added. Removing a user does not remove the paid seat.
(Examples: Last updated in early 2024)
# Seat balances
Source: https://docs.sequencehq.com/seats/seat-balances
Seat balances reflect the latest number of seats in use for a customer
The seat balance reflects the latest number of seats in use for a customer, per seat metric. For example, a customer may have a seat balance of 120 Admin seats. The next day 5 new Admin seats are added, 1 is removed. The new seat balance is 124 Admin seats.\
If multiple seat metrics are defined for a customer, the balance column will show the total across all seat metrics. Expand the customer view to get a breakdown by seat metric.
The seat event view shows a historical log of seat changes made by your customers, over time, per seat metric. Learn more about [seat events](/seats/seat-updates)
# Seat events
Source: https://docs.sequencehq.com/seats/seat-updates
View the log of seat update events submitted to Sequence
The seat updates view shows a log of all seat events you have sent to Sequence. Each seat event includes a granular view of the number of seats that were added and removed as well as the new balance (at the time).
Submit seat events via the dashboard for testing.
Use the Seat API to send seat events from your app to Sequence. Below is an example response:
```
{
"id": "018ef546-b6ee-7370-9202-f21f0b6ddf41",
"customerSnapshotId": "018ef546-b6ee-7370-9203-7d76d20756b3",
"customerAlias": "018ef1f0-b892-72ab-bf30-d4db466616c9",
"seatType": "analyst_seat",
"sequenceAccountId": "0187338e-c6c4-77be-94ae-387031824db6",
"snapshotTimestamp": "2024-04-19T00:00:00Z",
"total": 30,
"seatChanges": [
{
"id": "018ef546-b6fe-7635-a3f8-8c52596d6876",
"seatSnapshotId": "018ef546-b6ee-7370-9202-f21f0b6ddf41",
"timestamp": "2024-04-19T00:00:00Z",
"changeType": "SEAT_ADDED"
}
```
## How Sequence uses seat events for billing
Each seat event reports the **total** seat balance for a customer and seat metric at a given `eventTimestamp`. Sequence stores every event you submit. When calculating charges, it builds a daily seat timeline from those events.
### Overwriting a seat event
To correct or replace a seat event, resubmit it with the same `customerEventId`. The new submission supersedes the previous event with that ID for billing purposes.
Sequence does not support deleting seat events via the API. Use the same `customerEventId` to overwrite an event you no longer want billed.
### Multiple events on the same day
Sequence does not prorate seat changes within a single calendar day.
If you submit two or more seat events for the same customer, seat metric, and calendar day with **different** `customerEventId` values, billing uses the **highest seat count** reported that day.
This means a temporary peak during the day is what billing sees for that day, even if another same-day event (with a different `customerEventId`) reports a lower balance.
All submitted events remain visible in the seat events log. Same-day selection only affects how totals are used when calculating charges.
**Example**
| `customerEventId` | Event timestamp | Reported total |
| - | - | - |
| `seat-update-a` | 10 April, 09:00 | 13 |
| `seat-update-b` | 10 April, 16:00 | 15 |
| `seat-update-c` | 10 April, 18:00 | 12 |
Because these events use different `customerEventId` values, for billing on 10 April Sequence uses **15 seats** (the highest total that day).
# Managing sales tax
Source: https://docs.sequencehq.com/tax/manage-sales-tax
Configure sales tax rates by region and apply them to your invoices
With Sequence, you can manage sales tax on your invoices. Add tax rates by region, including individual US states, and Sequence applies them to each invoice based on the product's tax category, the customer's region and their tax status. You don't need a third-party tax engine to charge tax on your invoices.
If you need tax calculated at a more granular level, such as by ZIP code, or you'd rather automate rate maintenance and filing, you can [connect a tax engine](#automating-tax-calculation-with-a-connector) instead. To manage tax status per customer, including tax registration IDs, see [tax status](/tax/tax-status).
### How tax is applied
Sequence applies tax to each invoice line based on three things:
* **Tax category**: the category assigned to the product, which lets you charge different rates for different types of good
* **Customer region**: the customer's region, so the rate you set for that region applies (for example, a specific US state)
* **Tax status**: whether the customer is taxable, tax exempt or reverse charged
You configure the rates once per region and category, and Sequence applies them as you bill.
### Create and manage tax categories and rates
Go to Settings > Sales tax to manage tax categories and tax rates.
Tax categories are assigned to products and let you charge different tax rates depending on the type of good sold. For example, you may charge a different rate on your subscription fee than on your implementation service.
When you create a new tax category, you can optionally provide tax rates for each region you have already configured.
When you add a tax rate for a region, you can optionally provide a rate for each category. Regions can be countries or individual US states, so you can set state-level rates for the places you sell into and Sequence applies the right one automatically.
### Assigning or updating product tax categories
Go to the product catalogue and select a product to update its tax category. You need to recalculate any draft invoices for a product tax category change to take effect.
### Charging sales tax
When you create a billing schedule for a taxable customer, Sequence looks up whether you have provided a tax rate for the customer's region.
If no tax rate has been configured for that region, Sequence prompts you to add one. If you skip this step, you can still add the rate later.
Once the rate is set, Sequence applies it to invoices automatically going forward.
The invoice below includes tax based on the product's tax category, the customer's region and their tax status.
### Automating tax calculation with a connector
Setting rates yourself is enough to charge tax anywhere, including across US states. We recommend connecting a tax engine when you need tax determined at a more granular level than you want to maintain by hand, for example down to ZIP code, or when you need automated tax filing. The connector then calculates the tax on each invoice and keeps rates current for every jurisdiction.
* [Anrok](/connectors/anrok): calculate, apply and record sales tax, with filing-ready records
* [Sphere](/connectors/sphere): calculate and apply tax with two-way customer and product sync
* [Numeral](/connectors/numeral): calculate tax and handle automated return filing
* [Avalara](/connectors/avalara): calculate tax with built-in address validation
If you charge tax at a regional or state level, we recommend managing your rates directly in Sequence. Connect a tax engine when you need tax determined at a more granular level, such as by ZIP code, or you want automated filing.
### Frequently asked questions (FAQ)
Add a tax rate for each region you sell into, including individual US states, under Settings > Sales tax. Sequence applies the rate you've set to every invoice based on the product's tax category and the customer's region, so you don't need a third-party tax engine to bill US customers.
If you need tax determined at a more granular level, such as by ZIP code, or you need automated filing, [connect a tax engine](#automating-tax-calculation-with-a-connector).
You can either mark the customer as tax exempt, or set up a 0% tax rate for the customer's region in the product's tax category.
Go to Settings > Sales tax and select the tax rate or category you want to update. You will need to recalculate any draft or upcoming invoices for the change to take effect.
Go to the customer's page in Sequence and select `Edit`, then update the customer's tax status. You will need to recalculate any draft or upcoming invoices for the change to take effect. See [tax status](/tax/tax-status) for more detail.
To show your customer's Tax or VAT ID, go to the customer's page in Sequence, select `Edit` and add a tax ID. Recalculate any draft or upcoming invoices for the change to take effect. To show your own company's Tax or VAT ID on invoices, get in touch with a member of the team.
When you create a credit note for an invoice, each credit line inherits the tax rate on the original invoice. If you create a credit note from scratch, you provide a tax rate for each credit line.
# Tax status
Source: https://docs.sequencehq.com/tax/tax-status
In Sequence, you can mark your customers as taxable (default), tax exempt or reverse charged (only relevant for EU businesses).
### Setting a customer's tax status
When creating a customer, select their tax status: taxed (default), tax exempt, or reverse charged.
If a customer is marked as tax exempt, tax will not be included on their invoices.
Reverse charge invoices are marked as such and do not include any tax rates. Instead your customer will be responsible to collect tax (as per the reverse-charge procedure). Reverse charge invoices include the VAT number of your customer which can be provided via the Tax ID field. Reverse-charge procedures may apply if a UK-based business is selling products to a business based in France, for example.
**Need to change a customer's tax status?**
Go to the customer's page in Sequence and select `Edit`, then update the customer's tax status. You will need to recalculate any draft or upcoming invoices for changes to reflect.
When you're billing a taxable customer, Sequence will look up the tax rate based on the [product's tax category](/tax/manage-sales-tax) and the customer's region. If no tax rate has been provided, you will prompted to provide one.
### Configuring tax registration IDs for invoicing
If you need invoices to include your customer's tax registration ID (such as VAT ID or GSTIN), edit a customer and add a tax registration.
Once added, the tax ID will be displayed on the customer's detail page and on subsequent invoices below the customer's address.
Tax ID on invoices:
# Roles & Permissions
Source: https://docs.sequencehq.com/users/roles-permissions
Manage user access and permissions with finance-centric role-based access controls
Control user access to Sequence with role-based permissions designed for finance teams. Roles & permissions prevent accidental changes, support audit trails, and enable workflows across your teams.
## Understanding roles & permissions
Sequence uses role-based access control (RBAC) to manage what users can see and do within your workspace. Each user can be assigned one or more roles, with permissions designed around common finance team structures.
| | |
| - | - |
| **Workspace** | Your Sequence account where roles are managed |
| **Role** | A collection of permissions that defines what a user can do |
| **Permission** | Specific access rights to resources and actions |
| **Resource** | Objects like customers, invoices, or billing schedules |
| **Action** | Operations like create, read, update, delete, or feature-specific actions |
| **Least privilege** | Users start with minimal access and are granted additional permissions as needed |
### Default user roles
Sequence provides four default roles that mirror common finance team structures. Users can be assigned multiple roles to customize their access level.
Full access to all resources and actions, including user management and system settings.
Complete access to billing operations with limited administrative capabilities.
Quote management and customer interaction focused permissions.
Read-only access across all resources for reporting and analysis.
## Permission matrix
The following table shows the specific permissions for each default role across Sequence resources:
| Resource or Action | Admin | Finance User | Sales User | View-only |
| - | - | - | - | - |
| **Customers** | ✅ Full access | ✅ Full access | ✅ Full access | 👁️ View-only |
| **Billing Schedules** | ✅ Full access | ✅ Full access | 👁️ View-only | 👁️ View-only |
| **Start a schedule** | ✅ | ✅ | ❌ | ❌ |
| **Products & Pricing** | ✅ Full access | ✅ Full access | 👁️ View-only | 👁️ View-only |
| **Quotes** | ✅ Full access | 👁️ View-only | ✅ Full access | 👁️ View-only |
| **Publish quote** | ✅ | ❌ | ✅ | ❌ |
| **Accept quote** | ✅ | ❌ | ✅ | ❌ |
| **Execute quote** | ✅ | ✅ | ✅ | ❌ |
| **Invoices** | ✅ Full access | ✅ Full access | 👁️ View-only | 👁️ View-only |
| **Finalize & send invoice** | ✅ | ✅ | ❌ | ❌ |
| **Credit Notes** | ✅ Full access | ✅ Full access | 👁️ View-only | 👁️ View-only |
| **Usage & Events** | ✅ Full access | 👁️ View-only | 👁️ View-only | 👁️ View-only |
| **Revenue Recognition** | ✅ Full access | ✅ Full access | 👁️ View-only | 👁️ View-only |
| **Settings** | ✅ Full access | 👁️ View-only | 👁️ View-only | 👁️ View-only |
| **Invite users** | ✅ | ✅ | ✅ | ❌ |
| **Edit users** | ✅ | ❌ | ❌ | ❌ |
| **Connectors** | ✅ Full access | 👁️ View-only | 👁️ View-only | 👁️ View-only |
| **Discounts** | ✅ Full access | ✅ Full access | 👁️ View-only | 👁️ View-only |
| **Credit Grants** | ✅ Full access | ✅ Full access | 👁️ View-only | 👁️ View-only |
| **Tax Management** | ✅ Full access | ✅ Full access | 👁️ View-only | 👁️ View-only |
**Legend**: ✅ = Full CRUD access, 👁️ = View-only access, ❌ = No access
## Managing user roles
### Inviting new users
When inviting new users to your workspace, they are assigned the **View-only** role by default following the principle of least privilege. You can upgrade their permissions after they join.
Go to Settings > Users in your Sequence dashboard
Click "Invite User" and enter their email address
Select the appropriate role(s) for the new user
The user will receive an email invitation to join your workspace
### Updating user permissions
Existing users can be assigned multiple roles to customize their access level. Admin users can modify role assignments at any time.
## Security & compliance
### Audit trails
All user permission change actions are logged with role information for compliance and security auditing.
## Best practices
* Start with the most restrictive role appropriate for each user's job function
* Assign multiple roles only when necessary for cross-functional responsibilities
* Regularly review and audit user permissions
* Use View-only role for external stakeholders and reporting needs
* **Finance Users**: Day-to-day billing operations, invoice management, revenue recognition
* **Sales Users**: Quote creation and management, customer relationship activities
* **Admin**: System configuration, user management, connector setup
* **View-only**: Executives, analysts, and external auditors
* Maintain at least two admin users for redundancy
* Remove access immediately when team members leave
* Use View-only role for temporary or external access
## Frequently asked questions
Yes, users can be assigned multiple roles. Their effective permissions will be the union of all assigned roles.
Custom roles are not available in the initial release. The system is designed to support additional granular permissions in future updates.
Always maintain at least one active admin user. The system will prevent removing admin permissions from the last admin user.
# Single sign-on (SSO)
Source: https://docs.sequencehq.com/users/single-sign-on
Sign in to Sequence with your company identity provider
Sequence supports enterprise single sign-on (SSO), where your team can sign in to Sequence using their existing company identity.
Your identity provider (IdP) becomes the source of truth for access to Sequence: your IdP decides who can access Sequence and uses your existing MFA and login policies.
## Supported identity providers
| Identity provider | Protocols |
| - | - |
| **Okta** | SAML, OIDC |
| **Microsoft Entra ID** | SAML, OIDC |
| **Google Workspace** | SAML, OIDC |
## Signing in with SSO
Your team continues to sign in via the Sequence login page when SSO is enabled. After entering their work email, members of your organization are sent to your identity provider and land back in Sequence once authenticated.
## Setting up SSO
To enable SSO for your organization, reach out to your Sequence representative. We'll work with your IT team to connect your identity provider and configure the options below.
## Access controls
### Enforce SSO
Require everyone in your organization to sign in through your identity provider. Magic link sign-in is turned off, so access to Sequence follows your identity provider.
### Emergency access
Exempt specific members from SSO so your organization can't be locked out if your identity provider is unavailable. At least one exempt member is required before SSO can be enforced. Exemptions also suit external users, such as auditors, who aren't in your identity provider.
### Just-in-time provisioning
Off by default, so only invited users can sign in. When turned on, anyone your identity provider authorizes is added to Sequence on first sign-in with the View-only role. Admins can then adjust their access in [Roles & permissions](/users/roles-permissions).
## Changing identity providers
If a user's email stays the same, they're linked to their existing Sequence user when they first sign in through your new identity provider.
If a user's email changes, Sequence treats them as a new user. They'll need an invite, or are added automatically if just-in-time provisioning is on. Reach out to your Sequence representative if you're planning a migration.