{
"error": {
"code": "ERR_BAD_REQUEST",
"message": "Bad request — the input payload is malformed, missing required fields, or contains invalid data."
}
}
{
"error": {
"code": "ERR_NOT_FOUND",
"message": "Not found — the resource you are looking for does not exist."
}
}
Invoices
Finalize an invoice
Issues a draft invoice. Final tax is committed, the date of issue and due date are stamped, the invoice leaves draft for its terminal status, and it is sent to the customer’s invoice recipients. Only drafts can be issued.
due_date_basis is optional — omit it and the invoice inherits the order’s default, or keeps a due date already set by editing it. Sending a basis re-derives the due date and replaces an edited one. Send CUSTOM with a due_at to name the due date outright; either one without the other is rejected.
Waiting for the document
By default the request is held until the invoice’s PDF has rendered, so a 200 means the invoice is issued and its document is ready to retrieve.
Pass async=true to queue the issue and get an answer immediately, with the draft as it stands. Poll the invoice to see it issued.
A 202 means the work is still in flight: with async=true the invoice has been accepted for issuing, and without it the invoice is issued but its PDF is still rendering. Neither is a failure — an invoice that could not be issued at all comes back 400.
What the issued invoice's due date follows. Omit it to inherit the order's default — unless the invoice already carries a due date you set by editing it, which is kept. Sending a basis re-derives the due date and replaces an edited one. CUSTOM names the date outright and must be sent with due_at.
ID of the end customer this invoice is for — the company that consumes the subscription. Never collect or charge payment methods against this id: on a partner-billed invoice the paying party is a different company, and billed_company_id is always the id to collect against.
ID of the company actually billed for this invoice — the party whose Stripe customer POST /invoices/{invoice_id}/pay charges. Equal to customer_id unless the invoice is partner-billed, in which case it is the partner's company. Collect and list payment methods against this id, never customer_id. Always present and never null, including on the renewal estimate returned by GET /subscriptions/{subscription_id}/invoices/next, which resolves the company its renewal would bill.
Invoices that have not been generated yet (e.g. SCHEDULED) report the total expected at the time they were created. That figure does NOT include usage metered since — a usage invoice whose meters have not been priced reports 0. Pass ?calculate_expected_usage=true to re-price against the order and include estimated usage instead; it is slower, so it is off by default on list endpoints.
Link to the page where your customer pays this invoice online, the same link the invoice PDF carries. Safe to send to your customer: it needs no token and does not expire. Null when you have no Stripe account that can take payments connected, when the invoice has not been issued yet (SCHEDULED or DRAFT), and on a renewal estimate. Not to be confused with POST /invoices/{invoice_id}/pay, which charges a saved payment method directly.
Current attachments for this invoice as a flat array. Each item includes 'target' field indicating invoice or subscription level. Sorted by unified order.
Purchase order shown on this invoice: the invoice's own purchase order when it has one, otherwise the subscription's. Matches the PO printed on the invoice PDF. Null when neither carries one.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Salesbricks","colors":{"primary":"#197F78","light":"#26BFB4","dark":"#197F78"},"logo":{"light":"https://mintcdn.com/salesbricks/3GVA0K12Q7dXW89y/logo/light.svg?fit=max\u0026auto=format\u0026n=3GVA0K12Q7dXW89y\u0026q=85\u0026s=ead3e65ff72970d53a9cd22de50bd8fc","dark":"https://mintcdn.com/salesbricks/3GVA0K12Q7dXW89y/logo/dark.svg?fit=max\u0026auto=format\u0026n=3GVA0K12Q7dXW89y\u0026q=85\u0026s=786876a66955115a9896bb4ce9e0f779","href":"https://www.salesbricks.com"},"favicon":"https://mintcdn.com/salesbricks/3GVA0K12Q7dXW89y/favicon.svg?fit=max\u0026auto=format\u0026n=3GVA0K12Q7dXW89y\u0026q=85\u0026s=149c42d5e530bbd556361118b756ccb8","api":{"playground":{"display":"interactive"},"mdx":{"auth":{"method":"key"},"server":["https://api.salesbricks.com"]}},"background":{"color":{"light":"#FFFFFF","dark":"#0A0A0A"}},"navbar":{"primary":{"type":"button","label":"Log in","href":"https://app.salesbricks.com/login"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/salesbricks","x":"https://twitter.com/getsalesbricks","instagram":"https://www.instagram.com/salesbricks"}},"search":{"prompt":"Search Salesbricks docs..."},"seo":{"indexing":"navigable"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"salesbricks","hasAudioNarration":false,"actualSubdomain":"salesbricks","customDomains":["docs.salesbricks.com"],"gitSource":{"type":"github","owner":"goderecho","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4d297f0f0e506e23495aa","collectionId":"e22ee52d-f716-4e2e-b522-09bd305a1646","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4d297f0f0e506e23495aa"},"feedback":{"thumbs":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4d297f0f0e506e23495aa","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"APIs \u0026 Webhooks","count":127},{"language":"default","tag":"REST API Endpoints","count":83},{"language":"default","tag":"Documentation","count":40},{"language":"default","tag":"Webhooks","count":34},{"language":"default","tag":"Integrations","count":19},{"language":"default","tag":"Invoices","count":13},{"language":"default","tag":"Subscriptions","count":12},{"language":"default","tag":"Usage","count":11},{"language":"default","tag":"Payment Methods","count":11},{"language":"default","tag":"Order Webhooks","count":10}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"table.two-column td,table.two-column th{width:50%}"}],"page":{"pagePath":"api-reference/invoices/finalize-an-invoice","slug":"/api-reference/invoices/finalize-an-invoice","pageMetadata":{"title":"Finalize an invoice","description":"Issues a draft invoice. Final tax is committed, the date of issue and due date are stamped, the invoice leaves draft for its terminal status, and it is sent to the customer's invoice recipients. Only drafts can be issued.\n\n`due_date_basis` is optional — omit it and the invoice inherits the order's default, or keeps a due date already set by editing it. Sending a basis re-derives the due date and replaces an edited one. Send `CUSTOM` with a `due_at` to name the due date outright; either one without the other is rejected.\n\n## Waiting for the document\n\nBy default the request is held until the invoice's PDF has rendered, so a `200` means the invoice is issued and its document is ready to retrieve.\n\nPass `async=true` to queue the issue and get an answer immediately, with the draft as it stands. Poll the invoice to see it issued.\n\nA `202` means the work is still in flight: with `async=true` the invoice has been accepted for issuing, and without it the invoice is issued but its PDF is still rendering. Neither is a failure — an invoice that could not be issued at all comes back `400`.","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /invoices/{invoice_id}/finalize","href":"/api-reference/invoices/finalize-an-invoice","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h2: \"h2\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Issues a draft invoice. Final tax is committed, the date of issue and due date are stamped, the invoice leaves draft for its terminal status, and it is sent to the customer’s invoice recipients. Only drafts can be issued.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"due_date_basis\"\n }), \" is optional — omit it and the invoice inherits the order’s default, or keeps a due date already set by editing it. Sending a basis re-derives the due date and replaces an edited one. Send \", _jsx(_components.code, {\n children: \"CUSTOM\"\n }), \" with a \", _jsx(_components.code, {\n children: \"due_at\"\n }), \" to name the due date outright; either one without the other is rejected.\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Waiting for the document\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"By default the request is held until the invoice’s PDF has rendered, so a \", _jsx(_components.code, {\n children: \"200\"\n }), \" means the invoice is issued and its document is ready to retrieve.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Pass \", _jsx(_components.code, {\n children: \"async=true\"\n }), \" to queue the issue and get an answer immediately, with the draft as it stands. Poll the invoice to see it issued.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A \", _jsx(_components.code, {\n children: \"202\"\n }), \" means the work is still in flight: with \", _jsx(_components.code, {\n children: \"async=true\"\n }), \" the invoice has been accepted for issuing, and without it the invoice is issued but its PDF is still rendering. Neither is a failure — an invoice that could not be issued at all comes back \", _jsx(_components.code, {\n children: \"400\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Finalize an invoice","description":"Issues a draft invoice. Final tax is committed, the date of issue and due date are stamped, the invoice leaves draft for its terminal status, and it is sent to the customer's invoice recipients. Only drafts can be issued.\n\n`due_date_basis` is optional — omit it and the invoice inherits the order's default, or keeps a due date already set by editing it. Sending a basis re-derives the due date and replaces an edited one. Send `CUSTOM` with a `due_at` to name the due date outright; either one without the other is rejected.\n\n## Waiting for the document\n\nBy default the request is held until the invoice's PDF has rendered, so a `200` means the invoice is issued and its document is ready to retrieve.\n\nPass `async=true` to queue the issue and get an answer immediately, with the draft as it stands. Poll the invoice to see it issued.\n\nA `202` means the work is still in flight: with `async=true` the invoice has been accepted for issuing, and without it the invoice is issued but its PDF is still rendering. Neither is a failure — an invoice that could not be issued at all comes back `400`.","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /invoices/{invoice_id}/finalize","href":"/api-reference/invoices/finalize-an-invoice","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"finalizeInvoice","description":"Issues a draft invoice. Final tax is committed, the date of issue and due date are stamped, the invoice leaves draft for its terminal status, and it is sent to the customer's invoice recipients. Only drafts can be issued.\n\n`due_date_basis` is optional — omit it and the invoice inherits the order's default, or keeps a due date already set by editing it. Sending a basis re-derives the due date and replaces an edited one. Send `CUSTOM` with a `due_at` to name the due date outright; either one without the other is rejected.\n\n## Waiting for the document\n\nBy default the request is held until the invoice's PDF has rendered, so a `200` means the invoice is issued and its document is ready to retrieve.\n\nPass `async=true` to queue the issue and get an answer immediately, with the draft as it stands. Poll the invoice to see it issued.\n\nA `202` means the work is still in flight: with `async=true` the invoice has been accepted for issuing, and without it the invoice is issued but its PDF is still rendering. Neither is a failure — an invoice that could not be issued at all comes back `400`.","summary":"Finalize an invoice","parameters":["d52bfbcf-3331-418e-847c-1ae59769980c","20b094f8-3dc1-4014-baa0-4ef0d0117805"],"tags":["Invoices"],"requestBody":"85da7726-ad6a-4742-bedd-6087a6c60a9c","responses":{"200":"034ac5b9-76d5-4db8-94f1-fa87be5904af","202":"724244b4-5979-40b0-a8ae-117f4e85e7b3","400":"07970574-f753-4aee-9598-cc8ca51b8732","404":"b2179441-7212-42c5-b73d-d2ef58cb4c4e"},"method":"post","type":"path","servers":["87277923-8db5-44a0-b76e-a8df2997b3ee"],"security":["2c691682-9908-4054-aab3-5164d5292fc7"],"path":"/invoices/{invoice_id}/finalize","baseUrlOptions":["https://api.salesbricks.com/api/v2"],"title":"Finalize an invoice","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"d52bfbcf-3331-418e-847c-1ae59769980c":{"in":"query","name":"async","schema":{"type":"boolean","description":"Set to true to queue the issue and answer immediately instead of waiting for the invoice's PDF.","uniqueKey":"","typeLabel":"boolean"},"description":"Set to true to queue the issue and answer immediately instead of waiting for the invoice's PDF."},"20b094f8-3dc1-4014-baa0-4ef0d0117805":{"in":"path","name":"invoice_id","schema":{"type":"string","pattern":"^([a-zA-Z\\d\\-]+)$","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"due_date_basis":{"oneOf":[{"enum":["ISSUE_DATE","SERVICE_PERIOD","CUSTOM"],"type":"string","x-spec-enum-id":"16da8029ddd46fbc","description":"What the issued invoice's due date follows. Omit it to inherit the order's default — unless the invoice already carries a due date you set by editing it, which is kept. Sending a basis re-derives the due date and replaces an edited one. `CUSTOM` names the date outright and must be sent with `due_at`.\n\n* `ISSUE_DATE` - Issue date\n* `SERVICE_PERIOD` - Service period\n* `CUSTOM` - Custom","uniqueKey":"due_date_basis.oneOf.0","typeLabel":"enum\u003cstring>"},{"enum":["ISSUE_DATE","SERVICE_PERIOD","CUSTOM"],"type":"null","x-spec-enum-id":"16da8029ddd46fbc","description":"What the issued invoice's due date follows. Omit it to inherit the order's default — unless the invoice already carries a due date you set by editing it, which is kept. Sending a basis re-derives the due date and replaces an edited one. `CUSTOM` names the date outright and must be sent with `due_at`.\n\n* `ISSUE_DATE` - Issue date\n* `SERVICE_PERIOD` - Service period\n* `CUSTOM` - Custom","uniqueKey":"due_date_basis.oneOf.1","typeLabel":"null"}],"uniqueKey":"due_date_basis","typeLabel":"enum\u003cstring> | null"},"due_at":{"oneOf":[{"type":"string","format":"date","description":"The due date to issue under. Only valid with a `CUSTOM` `due_date_basis`, and cannot be earlier than the date of issue.","uniqueKey":"due_at.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","format":"date","description":"The due date to issue under. Only valid with a `CUSTOM` `due_date_basis`, and cannot be earlier than the date of issue.","uniqueKey":"due_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"due_at","typeLabel":"string\u003cdate> | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"due_at":"2023-12-25"}}},"exampleType":"generated"},"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"due_date_basis":{"oneOf":[{"enum":["ISSUE_DATE","SERVICE_PERIOD","CUSTOM"],"type":"string","x-spec-enum-id":"16da8029ddd46fbc","description":"What the issued invoice's due date follows. Omit it to inherit the order's default — unless the invoice already carries a due date you set by editing it, which is kept. Sending a basis re-derives the due date and replaces an edited one. `CUSTOM` names the date outright and must be sent with `due_at`.\n\n* `ISSUE_DATE` - Issue date\n* `SERVICE_PERIOD` - Service period\n* `CUSTOM` - Custom","uniqueKey":"due_date_basis.oneOf.0","typeLabel":"enum\u003cstring>"},{"enum":["ISSUE_DATE","SERVICE_PERIOD","CUSTOM"],"type":"null","x-spec-enum-id":"16da8029ddd46fbc","description":"What the issued invoice's due date follows. Omit it to inherit the order's default — unless the invoice already carries a due date you set by editing it, which is kept. Sending a basis re-derives the due date and replaces an edited one. `CUSTOM` names the date outright and must be sent with `due_at`.\n\n* `ISSUE_DATE` - Issue date\n* `SERVICE_PERIOD` - Service period\n* `CUSTOM` - Custom","uniqueKey":"due_date_basis.oneOf.1","typeLabel":"null"}],"uniqueKey":"due_date_basis","typeLabel":"enum\u003cstring> | null"},"due_at":{"oneOf":[{"type":"string","format":"date","description":"The due date to issue under. Only valid with a `CUSTOM` `due_date_basis`, and cannot be earlier than the date of issue.","uniqueKey":"due_at.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","format":"date","description":"The due date to issue under. Only valid with a `CUSTOM` `due_date_basis`, and cannot be earlier than the date of issue.","uniqueKey":"due_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"due_at","typeLabel":"string\u003cdate> | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"due_at":"2023-12-25"}}},"exampleType":"generated"},"multipart/form-data":{"schema":{"type":"object","properties":{"due_date_basis":{"oneOf":[{"enum":["ISSUE_DATE","SERVICE_PERIOD","CUSTOM"],"type":"string","x-spec-enum-id":"16da8029ddd46fbc","description":"What the issued invoice's due date follows. Omit it to inherit the order's default — unless the invoice already carries a due date you set by editing it, which is kept. Sending a basis re-derives the due date and replaces an edited one. `CUSTOM` names the date outright and must be sent with `due_at`.\n\n* `ISSUE_DATE` - Issue date\n* `SERVICE_PERIOD` - Service period\n* `CUSTOM` - Custom","uniqueKey":"due_date_basis.oneOf.0","typeLabel":"enum\u003cstring>"},{"enum":["ISSUE_DATE","SERVICE_PERIOD","CUSTOM"],"type":"null","x-spec-enum-id":"16da8029ddd46fbc","description":"What the issued invoice's due date follows. Omit it to inherit the order's default — unless the invoice already carries a due date you set by editing it, which is kept. Sending a basis re-derives the due date and replaces an edited one. `CUSTOM` names the date outright and must be sent with `due_at`.\n\n* `ISSUE_DATE` - Issue date\n* `SERVICE_PERIOD` - Service period\n* `CUSTOM` - Custom","uniqueKey":"due_date_basis.oneOf.1","typeLabel":"null"}],"uniqueKey":"due_date_basis","typeLabel":"enum\u003cstring> | null"},"due_at":{"oneOf":[{"type":"string","format":"date","description":"The due date to issue under. Only valid with a `CUSTOM` `due_date_basis`, and cannot be earlier than the date of issue.","uniqueKey":"due_at.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","format":"date","description":"The due date to issue under. Only valid with a `CUSTOM` `due_date_basis`, and cannot be earlier than the date of issue.","uniqueKey":"due_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"due_at","typeLabel":"string\u003cdate> | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"due_at":"2023-12-25"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"034ac5b9-76d5-4db8-94f1-fa87be5904af":{"content":{"application/json":{"schema":{"type":"object","properties":{"invoice_id":{"type":"string","format":"uuid","description":"Unique identifier for the invoice. If the id is null, this is an estimate","isRequired":true,"uniqueKey":"invoice_id","typeLabel":"string\u003cuuid>"},"subscription_id":{"type":"string","format":"uuid","description":"ID of the subscription this invoice belongs to. Null for standalone (one-off) invoices.","isRequired":true,"uniqueKey":"subscription_id","typeLabel":"string\u003cuuid>"},"customer_id":{"type":"string","format":"uuid","description":"ID of the end customer this invoice is for — the company that consumes the subscription. Never collect or charge payment methods against this id: on a partner-billed invoice the paying party is a different company, and `billed_company_id` is always the id to collect against.","isRequired":true,"uniqueKey":"customer_id","typeLabel":"string\u003cuuid>"},"billed_company_id":{"type":"string","format":"uuid","description":"ID of the company actually billed for this invoice — the party whose Stripe customer `POST /invoices/{invoice_id}/pay` charges. Equal to `customer_id` unless the invoice is partner-billed, in which case it is the partner's company. Collect and list payment methods against this id, never `customer_id`. Always present and never null, including on the renewal estimate returned by `GET /subscriptions/{subscription_id}/invoices/next`, which resolves the company its renewal would bill.","isRequired":true,"uniqueKey":"billed_company_id","typeLabel":"string\u003cuuid>"},"invoice_number":{"type":"string","description":"Short form identifier for the invoice. If the invoice_number is null, this is an estimate","isRequired":true,"uniqueKey":"invoice_number","typeLabel":"string"},"due_at":{"type":"string","format":"date-time","description":"The date on which this invoice is expected to be paid by.","isRequired":true,"uniqueKey":"due_at","typeLabel":"string\u003cdate-time>"},"bill_at":{"type":"string","format":"date-time","description":"The date on which this invoice will be issued and potentially charged.","isRequired":true,"uniqueKey":"bill_at","typeLabel":"string\u003cdate-time>"},"issued_at":{"type":"string","format":"date-time","description":"The date on which this invoice was issued.","isRequired":true,"uniqueKey":"issued_at","typeLabel":"string\u003cdate-time>"},"status":{"type":"string","description":"Current status of the invoice. One of:\n\n- `MUTED` — Invoice will not be sent. Muted invoices come from migration cut-overs or from muting invoices in the product settings.\n- `SCHEDULED` — Scheduled to be issued on a future date.\n- `OUTSTANDING` — Issued and awaiting payment.\n- `DUE` — Payment is due.\n- `PAST_DUE` — Payment is past its due date.\n- `PAID` — Fully paid.\n- `PARTIALLY_PAID` — Partially paid, with a remaining balance.\n- `ADJUSTED` — Adjusted after issuance.\n- `CREDITED` — Settled by applying credit.\n- `UNPAID` — Unpaid.\n- `PAUSED` — Collection is paused.\n- `VOIDED` — Voided and no longer collectible.\n","isRequired":true,"uniqueKey":"status","typeLabel":"string"},"fully_paid_at":{"type":"string","format":"date-time","description":"The date on which this invoice was fully paid.","isRequired":true,"uniqueKey":"fully_paid_at","typeLabel":"string\u003cdate-time>"},"grand_total":{"type":"integer","description":"Total amount due for this invoice.\n\nInvoices that have not been generated yet (e.g. `SCHEDULED`) report the total expected at the time they were created. That figure does NOT include usage metered since — a usage invoice whose meters have not been priced reports 0. Pass `?calculate_expected_usage=true` to re-price against the order and include estimated usage instead; it is slower, so it is off by default on list endpoints.","isRequired":true,"uniqueKey":"grand_total","typeLabel":"integer"},"remaining_amount":{"type":"integer","description":"Remaining amount for this invoice.","isRequired":true,"uniqueKey":"remaining_amount","typeLabel":"integer"},"currency":{"type":"string","description":"The currency in which the invoice is denominated (e.g., USD, EUR).","isRequired":true,"uniqueKey":"currency","typeLabel":"string"},"is_renewal_estimate":{"type":"boolean","description":"This is an estimate for a renewal that has not yet closed, but is expected to.","isRequired":true,"uniqueKey":"is_renewal_estimate","typeLabel":"boolean"},"payment_url":{"oneOf":[{"type":"string","format":"uri","description":"Link to the page where your customer pays this invoice online, the same link the invoice PDF carries. Safe to send to your customer: it needs no token and does not expire. Null when you have no Stripe account that can take payments connected, when the invoice has not been issued yet (`SCHEDULED` or `DRAFT`), and on a renewal estimate. Not to be confused with `POST /invoices/{invoice_id}/pay`, which charges a saved payment method directly.","isRequired":true,"uniqueKey":"payment_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"Link to the page where your customer pays this invoice online, the same link the invoice PDF carries. Safe to send to your customer: it needs no token and does not expire. Null when you have no Stripe account that can take payments connected, when the invoice has not been issued yet (`SCHEDULED` or `DRAFT`), and on a renewal estimate. Not to be confused with `POST /invoices/{invoice_id}/pay`, which charges a saved payment method directly.","isRequired":true,"uniqueKey":"payment_url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payment_url","typeLabel":"string\u003curi> | null"},"customer_name":{"type":"string","description":"Name of the customer who will pay this invoice","uniqueKey":"customer_name","typeLabel":"string"},"time_zone":{"type":"string","description":"Invoice timezone","uniqueKey":"time_zone","typeLabel":"string"},"payments":{"type":"array","items":{"type":"object","properties":{"payment_id":{"type":"string","format":"uuid","readOnly":true,"description":"Unique identifier for the payment","isRequired":true,"uniqueKey":"payments.items.[INDEX].payment_id","typeLabel":"string\u003cuuid>"},"invoice_number":{"oneOf":[{"type":"string","readOnly":true,"description":"The invoice number this payment was made against, snapshotted from the invoice version current when the payment was recorded — it does not change when the invoice is later regenerated, so it may differ from the invoice's top-level `invoice_number`. Falls back to the invoice's current number when no version is linked. Join payments to invoices by ID, not by number.","isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_number.oneOf.0","typeLabel":"string"},{"type":"null","readOnly":true,"description":"The invoice number this payment was made against, snapshotted from the invoice version current when the payment was recorded — it does not change when the invoice is later regenerated, so it may differ from the invoice's top-level `invoice_number`. Falls back to the invoice's current number when no version is linked. Join payments to invoices by ID, not by number.","isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_number.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_number","typeLabel":"string | null"},"invoice_version_id":{"oneOf":[{"type":"string","format":"uuid","readOnly":true,"description":"Identifier of the invoice version this payment was made against — the version current when the payment was recorded. Null only when the invoice has no versions (it was never generated).","isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_version_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","readOnly":true,"description":"Identifier of the invoice version this payment was made against — the version current when the payment was recorded. Null only when the invoice has no versions (it was never generated).","isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_version_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_version_id","typeLabel":"string\u003cuuid> | null"},"paid_amount":{"oneOf":[{"type":"integer","readOnly":true,"description":"The amount paid","isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_amount.oneOf.0","typeLabel":"integer"},{"type":"null","readOnly":true,"description":"The amount paid","isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_amount","typeLabel":"integer | null"},"paid_at":{"oneOf":[{"type":"string","format":"date-time","readOnly":true,"description":"the date at which this payment was paid","isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","readOnly":true,"description":"the date at which this payment was paid","isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_at","typeLabel":"string\u003cdate-time> | null"},"currency":{"type":"string","readOnly":true,"description":"The currency in which the payment is denominated (e.g., USD, EUR)","isRequired":true,"uniqueKey":"payments.items.[INDEX].currency","typeLabel":"string"},"error":{"oneOf":[{"type":"string","readOnly":true,"description":"Any errors that occured during this payment processing","isRequired":true,"uniqueKey":"payments.items.[INDEX].error.oneOf.0","typeLabel":"string"},{"type":"null","readOnly":true,"description":"Any errors that occured during this payment processing","isRequired":true,"uniqueKey":"payments.items.[INDEX].error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payments.items.[INDEX].error","typeLabel":"string | null"}},"required":["currency","error","invoice_number","invoice_version_id","paid_amount","paid_at","payment_id"],"uniqueKey":"payments.items.[INDEX]","typeLabel":"object"},"description":"All payments made against this invoice, newest first.","uniqueKey":"payments","typeLabel":"object[]"},"attachments":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"attachments.items.[INDEX]","typeLabel":"any"},"description":"Current attachments for this invoice as a flat array. Each item includes 'target' field indicating invoice or subscription level. Sorted by unified order.","uniqueKey":"attachments","typeLabel":"any[]"},"line_items":{"type":"array","items":{"type":"object","properties":{"brick_name":{"type":"string","description":"Name of the brick","isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_name","typeLabel":"string"},"brick_id":{"oneOf":[{"type":"string","description":"Unique identifier of the brick","isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique identifier of the brick","isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_id","typeLabel":"string | null"},"brick_code":{"oneOf":[{"type":"string","description":"The internal SKU code you set on the brick. Unlike `brick_id` it stays the same across environments and when a brick is recreated, so use it to map bricks to your own features. Null when the brick has no code.","isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"The internal SKU code you set on the brick. Unlike `brick_id` it stays the same across environments and when a brick is recreated, so use it to map bricks to your own features. Null when the brick has no code.","isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_code","typeLabel":"string | null"},"quantity":{"oneOf":[{"type":"integer","description":"Quantity of units. Fractional quantities are returned as a decimal","isRequired":true,"uniqueKey":"line_items.items.[INDEX].quantity.oneOf.0","typeLabel":"integer"},{"type":"number","description":"Quantity of units. Fractional quantities are returned as a decimal","format":"double","isRequired":true,"uniqueKey":"line_items.items.[INDEX].quantity.oneOf.1","typeLabel":"number\u003cdouble>"}],"isRequired":true,"uniqueKey":"line_items.items.[INDEX].quantity","typeLabel":"integer | number\u003cdouble>"},"tax":{"type":"integer","description":"Tax amount in minor currency units","isRequired":true,"uniqueKey":"line_items.items.[INDEX].tax","typeLabel":"integer"},"grand_total":{"type":"integer","description":"Grand total in minor currency units","isRequired":true,"uniqueKey":"line_items.items.[INDEX].grand_total","typeLabel":"integer"},"starts_at":{"oneOf":[{"type":"string","format":"date-time","description":"Start of the period this line item covers","isRequired":true,"uniqueKey":"line_items.items.[INDEX].starts_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Start of the period this line item covers","isRequired":true,"uniqueKey":"line_items.items.[INDEX].starts_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"line_items.items.[INDEX].starts_at","typeLabel":"string\u003cdate-time> | null"},"ends_at":{"oneOf":[{"type":"string","format":"date-time","description":"End of the period this line item covers","isRequired":true,"uniqueKey":"line_items.items.[INDEX].ends_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"End of the period this line item covers","isRequired":true,"uniqueKey":"line_items.items.[INDEX].ends_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"line_items.items.[INDEX].ends_at","typeLabel":"string\u003cdate-time> | null"}},"required":["brick_code","brick_id","brick_name","ends_at","grand_total","quantity","starts_at","tax"],"uniqueKey":"line_items.items.[INDEX]","typeLabel":"object"},"description":"Line item breakdown for this invoice","uniqueKey":"line_items","typeLabel":"object[]"},"metadata":{"description":"Optional metadata stored against the invoice.","uniqueKey":"metadata","typeLabel":"any"},"purchase_order":{"oneOf":[{"type":"object","description":"Purchase order shown on this invoice: the invoice's own purchase order when it has one, otherwise the subscription's. Matches the PO printed on the invoice PDF. Null when neither carries one.","required":["code"],"properties":{"code":{"oneOf":[{"type":"string","description":"Internal identifier of the Purchase Order provided by Buyer","isRequired":true,"uniqueKey":"purchase_order.oneOf.0.code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Internal identifier of the Purchase Order provided by Buyer","isRequired":true,"uniqueKey":"purchase_order.oneOf.0.code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchase_order.oneOf.0.code","typeLabel":"string | null"}},"uniqueKey":"purchase_order.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"purchase_order.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchase_order","typeLabel":"object | null"}},"required":["bill_at","billed_company_id","currency","customer_id","due_at","fully_paid_at","grand_total","invoice_id","invoice_number","is_renewal_estimate","issued_at","payment_url","remaining_amount","status","subscription_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"invoice_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","subscription_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","customer_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","billed_company_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","invoice_number":"\u003cstring>","due_at":"2023-11-07T05:31:56Z","bill_at":"2023-11-07T05:31:56Z","issued_at":"2023-11-07T05:31:56Z","status":"\u003cstring>","fully_paid_at":"2023-11-07T05:31:56Z","grand_total":123,"remaining_amount":123,"currency":"\u003cstring>","is_renewal_estimate":true,"payment_url":"\u003cstring>","customer_name":"\u003cstring>","time_zone":"\u003cstring>","payments":[{"payment_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","invoice_number":"\u003cstring>","invoice_version_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","paid_amount":123,"paid_at":"2023-11-07T05:31:56Z","currency":"\u003cstring>","error":"\u003cstring>"}],"attachments":["\u003cunknown>"],"line_items":[{"brick_name":"\u003cstring>","brick_id":"\u003cstring>","brick_code":"\u003cstring>","quantity":123,"tax":123,"grand_total":123,"starts_at":"2023-11-07T05:31:56Z","ends_at":"2023-11-07T05:31:56Z"}],"metadata":"\u003cunknown>","purchase_order":{"code":"\u003cstring>"}}}},"exampleType":"generated"}},"description":"","exampleType":"generated"},"724244b4-5979-40b0-a8ae-117f4e85e7b3":{"content":{"application/json":{"schema":{"type":"object","properties":{"invoice_id":{"type":"string","format":"uuid","description":"Unique identifier for the invoice. If the id is null, this is an estimate","isRequired":true,"uniqueKey":"invoice_id","typeLabel":"string\u003cuuid>"},"subscription_id":{"type":"string","format":"uuid","description":"ID of the subscription this invoice belongs to. Null for standalone (one-off) invoices.","isRequired":true,"uniqueKey":"subscription_id","typeLabel":"string\u003cuuid>"},"customer_id":{"type":"string","format":"uuid","description":"ID of the end customer this invoice is for — the company that consumes the subscription. Never collect or charge payment methods against this id: on a partner-billed invoice the paying party is a different company, and `billed_company_id` is always the id to collect against.","isRequired":true,"uniqueKey":"customer_id","typeLabel":"string\u003cuuid>"},"billed_company_id":{"type":"string","format":"uuid","description":"ID of the company actually billed for this invoice — the party whose Stripe customer `POST /invoices/{invoice_id}/pay` charges. Equal to `customer_id` unless the invoice is partner-billed, in which case it is the partner's company. Collect and list payment methods against this id, never `customer_id`. Always present and never null, including on the renewal estimate returned by `GET /subscriptions/{subscription_id}/invoices/next`, which resolves the company its renewal would bill.","isRequired":true,"uniqueKey":"billed_company_id","typeLabel":"string\u003cuuid>"},"invoice_number":{"type":"string","description":"Short form identifier for the invoice. If the invoice_number is null, this is an estimate","isRequired":true,"uniqueKey":"invoice_number","typeLabel":"string"},"due_at":{"type":"string","format":"date-time","description":"The date on which this invoice is expected to be paid by.","isRequired":true,"uniqueKey":"due_at","typeLabel":"string\u003cdate-time>"},"bill_at":{"type":"string","format":"date-time","description":"The date on which this invoice will be issued and potentially charged.","isRequired":true,"uniqueKey":"bill_at","typeLabel":"string\u003cdate-time>"},"issued_at":{"type":"string","format":"date-time","description":"The date on which this invoice was issued.","isRequired":true,"uniqueKey":"issued_at","typeLabel":"string\u003cdate-time>"},"status":{"type":"string","description":"Current status of the invoice. One of:\n\n- `MUTED` — Invoice will not be sent. Muted invoices come from migration cut-overs or from muting invoices in the product settings.\n- `SCHEDULED` — Scheduled to be issued on a future date.\n- `OUTSTANDING` — Issued and awaiting payment.\n- `DUE` — Payment is due.\n- `PAST_DUE` — Payment is past its due date.\n- `PAID` — Fully paid.\n- `PARTIALLY_PAID` — Partially paid, with a remaining balance.\n- `ADJUSTED` — Adjusted after issuance.\n- `CREDITED` — Settled by applying credit.\n- `UNPAID` — Unpaid.\n- `PAUSED` — Collection is paused.\n- `VOIDED` — Voided and no longer collectible.\n","isRequired":true,"uniqueKey":"status","typeLabel":"string"},"fully_paid_at":{"type":"string","format":"date-time","description":"The date on which this invoice was fully paid.","isRequired":true,"uniqueKey":"fully_paid_at","typeLabel":"string\u003cdate-time>"},"grand_total":{"type":"integer","description":"Total amount due for this invoice.\n\nInvoices that have not been generated yet (e.g. `SCHEDULED`) report the total expected at the time they were created. That figure does NOT include usage metered since — a usage invoice whose meters have not been priced reports 0. Pass `?calculate_expected_usage=true` to re-price against the order and include estimated usage instead; it is slower, so it is off by default on list endpoints.","isRequired":true,"uniqueKey":"grand_total","typeLabel":"integer"},"remaining_amount":{"type":"integer","description":"Remaining amount for this invoice.","isRequired":true,"uniqueKey":"remaining_amount","typeLabel":"integer"},"currency":{"type":"string","description":"The currency in which the invoice is denominated (e.g., USD, EUR).","isRequired":true,"uniqueKey":"currency","typeLabel":"string"},"is_renewal_estimate":{"type":"boolean","description":"This is an estimate for a renewal that has not yet closed, but is expected to.","isRequired":true,"uniqueKey":"is_renewal_estimate","typeLabel":"boolean"},"payment_url":{"oneOf":[{"type":"string","format":"uri","description":"Link to the page where your customer pays this invoice online, the same link the invoice PDF carries. Safe to send to your customer: it needs no token and does not expire. Null when you have no Stripe account that can take payments connected, when the invoice has not been issued yet (`SCHEDULED` or `DRAFT`), and on a renewal estimate. Not to be confused with `POST /invoices/{invoice_id}/pay`, which charges a saved payment method directly.","isRequired":true,"uniqueKey":"payment_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"Link to the page where your customer pays this invoice online, the same link the invoice PDF carries. Safe to send to your customer: it needs no token and does not expire. Null when you have no Stripe account that can take payments connected, when the invoice has not been issued yet (`SCHEDULED` or `DRAFT`), and on a renewal estimate. Not to be confused with `POST /invoices/{invoice_id}/pay`, which charges a saved payment method directly.","isRequired":true,"uniqueKey":"payment_url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payment_url","typeLabel":"string\u003curi> | null"},"customer_name":{"type":"string","description":"Name of the customer who will pay this invoice","uniqueKey":"customer_name","typeLabel":"string"},"time_zone":{"type":"string","description":"Invoice timezone","uniqueKey":"time_zone","typeLabel":"string"},"payments":{"type":"array","items":{"type":"object","properties":{"payment_id":{"type":"string","format":"uuid","readOnly":true,"description":"Unique identifier for the payment","isRequired":true,"uniqueKey":"payments.items.[INDEX].payment_id","typeLabel":"string\u003cuuid>"},"invoice_number":{"oneOf":[{"type":"string","readOnly":true,"description":"The invoice number this payment was made against, snapshotted from the invoice version current when the payment was recorded — it does not change when the invoice is later regenerated, so it may differ from the invoice's top-level `invoice_number`. Falls back to the invoice's current number when no version is linked. Join payments to invoices by ID, not by number.","isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_number.oneOf.0","typeLabel":"string"},{"type":"null","readOnly":true,"description":"The invoice number this payment was made against, snapshotted from the invoice version current when the payment was recorded — it does not change when the invoice is later regenerated, so it may differ from the invoice's top-level `invoice_number`. Falls back to the invoice's current number when no version is linked. Join payments to invoices by ID, not by number.","isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_number.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_number","typeLabel":"string | null"},"invoice_version_id":{"oneOf":[{"type":"string","format":"uuid","readOnly":true,"description":"Identifier of the invoice version this payment was made against — the version current when the payment was recorded. Null only when the invoice has no versions (it was never generated).","isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_version_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","readOnly":true,"description":"Identifier of the invoice version this payment was made against — the version current when the payment was recorded. Null only when the invoice has no versions (it was never generated).","isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_version_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payments.items.[INDEX].invoice_version_id","typeLabel":"string\u003cuuid> | null"},"paid_amount":{"oneOf":[{"type":"integer","readOnly":true,"description":"The amount paid","isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_amount.oneOf.0","typeLabel":"integer"},{"type":"null","readOnly":true,"description":"The amount paid","isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_amount","typeLabel":"integer | null"},"paid_at":{"oneOf":[{"type":"string","format":"date-time","readOnly":true,"description":"the date at which this payment was paid","isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","readOnly":true,"description":"the date at which this payment was paid","isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payments.items.[INDEX].paid_at","typeLabel":"string\u003cdate-time> | null"},"currency":{"type":"string","readOnly":true,"description":"The currency in which the payment is denominated (e.g., USD, EUR)","isRequired":true,"uniqueKey":"payments.items.[INDEX].currency","typeLabel":"string"},"error":{"oneOf":[{"type":"string","readOnly":true,"description":"Any errors that occured during this payment processing","isRequired":true,"uniqueKey":"payments.items.[INDEX].error.oneOf.0","typeLabel":"string"},{"type":"null","readOnly":true,"description":"Any errors that occured during this payment processing","isRequired":true,"uniqueKey":"payments.items.[INDEX].error.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"payments.items.[INDEX].error","typeLabel":"string | null"}},"required":["currency","error","invoice_number","invoice_version_id","paid_amount","paid_at","payment_id"],"uniqueKey":"payments.items.[INDEX]","typeLabel":"object"},"description":"All payments made against this invoice, newest first.","uniqueKey":"payments","typeLabel":"object[]"},"attachments":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"attachments.items.[INDEX]","typeLabel":"any"},"description":"Current attachments for this invoice as a flat array. Each item includes 'target' field indicating invoice or subscription level. Sorted by unified order.","uniqueKey":"attachments","typeLabel":"any[]"},"line_items":{"type":"array","items":{"type":"object","properties":{"brick_name":{"type":"string","description":"Name of the brick","isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_name","typeLabel":"string"},"brick_id":{"oneOf":[{"type":"string","description":"Unique identifier of the brick","isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Unique identifier of the brick","isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_id","typeLabel":"string | null"},"brick_code":{"oneOf":[{"type":"string","description":"The internal SKU code you set on the brick. Unlike `brick_id` it stays the same across environments and when a brick is recreated, so use it to map bricks to your own features. Null when the brick has no code.","isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"The internal SKU code you set on the brick. Unlike `brick_id` it stays the same across environments and when a brick is recreated, so use it to map bricks to your own features. Null when the brick has no code.","isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"line_items.items.[INDEX].brick_code","typeLabel":"string | null"},"quantity":{"oneOf":[{"type":"integer","description":"Quantity of units. Fractional quantities are returned as a decimal","isRequired":true,"uniqueKey":"line_items.items.[INDEX].quantity.oneOf.0","typeLabel":"integer"},{"type":"number","description":"Quantity of units. Fractional quantities are returned as a decimal","format":"double","isRequired":true,"uniqueKey":"line_items.items.[INDEX].quantity.oneOf.1","typeLabel":"number\u003cdouble>"}],"isRequired":true,"uniqueKey":"line_items.items.[INDEX].quantity","typeLabel":"integer | number\u003cdouble>"},"tax":{"type":"integer","description":"Tax amount in minor currency units","isRequired":true,"uniqueKey":"line_items.items.[INDEX].tax","typeLabel":"integer"},"grand_total":{"type":"integer","description":"Grand total in minor currency units","isRequired":true,"uniqueKey":"line_items.items.[INDEX].grand_total","typeLabel":"integer"},"starts_at":{"oneOf":[{"type":"string","format":"date-time","description":"Start of the period this line item covers","isRequired":true,"uniqueKey":"line_items.items.[INDEX].starts_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Start of the period this line item covers","isRequired":true,"uniqueKey":"line_items.items.[INDEX].starts_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"line_items.items.[INDEX].starts_at","typeLabel":"string\u003cdate-time> | null"},"ends_at":{"oneOf":[{"type":"string","format":"date-time","description":"End of the period this line item covers","isRequired":true,"uniqueKey":"line_items.items.[INDEX].ends_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"End of the period this line item covers","isRequired":true,"uniqueKey":"line_items.items.[INDEX].ends_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"line_items.items.[INDEX].ends_at","typeLabel":"string\u003cdate-time> | null"}},"required":["brick_code","brick_id","brick_name","ends_at","grand_total","quantity","starts_at","tax"],"uniqueKey":"line_items.items.[INDEX]","typeLabel":"object"},"description":"Line item breakdown for this invoice","uniqueKey":"line_items","typeLabel":"object[]"},"metadata":{"description":"Optional metadata stored against the invoice.","uniqueKey":"metadata","typeLabel":"any"},"purchase_order":{"oneOf":[{"type":"object","description":"Purchase order shown on this invoice: the invoice's own purchase order when it has one, otherwise the subscription's. Matches the PO printed on the invoice PDF. Null when neither carries one.","required":["code"],"properties":{"code":{"oneOf":[{"type":"string","description":"Internal identifier of the Purchase Order provided by Buyer","isRequired":true,"uniqueKey":"purchase_order.oneOf.0.code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Internal identifier of the Purchase Order provided by Buyer","isRequired":true,"uniqueKey":"purchase_order.oneOf.0.code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"purchase_order.oneOf.0.code","typeLabel":"string | null"}},"uniqueKey":"purchase_order.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"purchase_order.oneOf.1","typeLabel":"null"}],"uniqueKey":"purchase_order","typeLabel":"object | null"}},"required":["bill_at","billed_company_id","currency","customer_id","due_at","fully_paid_at","grand_total","invoice_id","invoice_number","is_renewal_estimate","issued_at","payment_url","remaining_amount","status","subscription_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"invoice_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","subscription_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","customer_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","billed_company_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","invoice_number":"\u003cstring>","due_at":"2023-11-07T05:31:56Z","bill_at":"2023-11-07T05:31:56Z","issued_at":"2023-11-07T05:31:56Z","status":"\u003cstring>","fully_paid_at":"2023-11-07T05:31:56Z","grand_total":123,"remaining_amount":123,"currency":"\u003cstring>","is_renewal_estimate":true,"payment_url":"\u003cstring>","customer_name":"\u003cstring>","time_zone":"\u003cstring>","payments":[{"payment_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","invoice_number":"\u003cstring>","invoice_version_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","paid_amount":123,"paid_at":"2023-11-07T05:31:56Z","currency":"\u003cstring>","error":"\u003cstring>"}],"attachments":["\u003cunknown>"],"line_items":[{"brick_name":"\u003cstring>","brick_id":"\u003cstring>","brick_code":"\u003cstring>","quantity":123,"tax":123,"grand_total":123,"starts_at":"2023-11-07T05:31:56Z","ends_at":"2023-11-07T05:31:56Z"}],"metadata":"\u003cunknown>","purchase_order":{"code":"\u003cstring>"}}}},"exampleType":"generated"}},"description":"","exampleType":"generated"},"07970574-f753-4aee-9598-cc8ca51b8732":{"content":{"application/json":{"schema":{"type":"object","description":"Standardizes API error responses with a consistent structure containing error code and message.","properties":{"error":{"type":"object","description":"The error that caused the request to fail","required":["code","message"],"properties":{"code":{"enum":["ERR_NOT_FOUND","ERR_BAD_REQUEST","ERR_SERVER_ERROR"],"type":"string","x-spec-enum-id":"dc5a5d6feae1b697","description":"Error code indicating the type of error: NOT_FOUND for missing resources, BAD_REQUEST for invalid input, SERVER_ERROR for internal server issues\n\n* `ERR_NOT_FOUND` - ERR_NOT_FOUND\n* `ERR_BAD_REQUEST` - ERR_BAD_REQUEST\n* `ERR_SERVER_ERROR` - ERR_SERVER_ERROR","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation of the error","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"error_id":{"type":"string","format":"uuid","description":"Correlation handle for SERVER_ERROR responses — quote this when contacting support; it joins to the structured server log line for the failure. Not present on 4xx responses.","uniqueKey":"error.error_id","typeLabel":"string\u003cuuid>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"BadRequestResponse":{"title":"BadRequestResponse","value":{"error":{"code":"ERR_BAD_REQUEST","message":"Bad request — the input payload is malformed, missing required fields, or contains invalid data."}}}},"exampleType":"examples"}},"description":"","exampleType":"examples"},"b2179441-7212-42c5-b73d-d2ef58cb4c4e":{"content":{"application/json":{"schema":{"type":"object","description":"Standardizes API error responses with a consistent structure containing error code and message.","properties":{"error":{"type":"object","description":"The error that caused the request to fail","required":["code","message"],"properties":{"code":{"enum":["ERR_NOT_FOUND","ERR_BAD_REQUEST","ERR_SERVER_ERROR"],"type":"string","x-spec-enum-id":"dc5a5d6feae1b697","description":"Error code indicating the type of error: NOT_FOUND for missing resources, BAD_REQUEST for invalid input, SERVER_ERROR for internal server issues\n\n* `ERR_NOT_FOUND` - ERR_NOT_FOUND\n* `ERR_BAD_REQUEST` - ERR_BAD_REQUEST\n* `ERR_SERVER_ERROR` - ERR_SERVER_ERROR","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable explanation of the error","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"error_id":{"type":"string","format":"uuid","description":"Correlation handle for SERVER_ERROR responses — quote this when contacting support; it joins to the structured server log line for the failure. Not present on 4xx responses.","uniqueKey":"error.error_id","typeLabel":"string\u003cuuid>"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"NotFoundResponse":{"title":"NotFoundResponse","value":{"error":{"code":"ERR_NOT_FOUND","message":"Not found — the resource you are looking for does not exist."}}}},"exampleType":"examples"}},"description":"","exampleType":"examples"}},"security":{"2c691682-9908-4054-aab3-5164d5292fc7":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-SALESBRICKS-KEY","description":"API key for authentication","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"87277923-8db5-44a0-b76e-a8df2997b3ee":{"url":"https://api.salesbricks.com/api/v2","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-SALESBRICKS-KEY","description":"API key for authentication","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"X-SALESBRICKS-KEY","type":"string","description":"API key for authentication","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-SALESBRICKS-KEY"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"https://api.salesbricks.com/api/v2/openapi.yaml"},"subdomain":"salesbricks","siteName":"Salesbricks","title":"Finalize an invoice - Salesbricks","relatedPagesConfig":{"enabled":true,"limit":3,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T04:42:47.950Z","originalFileLocation":"api-reference/invoices/finalize-an-invoice.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Issues a draft invoice. Final tax is committed, the date of issue and due date are stamped, the invoice leaves draft for its terminal status, and it is sent to the customer\u0026#x27;s invoice recipients. Only drafts can be issued. due_date_basis is optional — omit it and the invoice inherits the order\u0026#x27;s default, or keeps a due date already set by editing it. Sending a basis re-derives the due date and replaces an edited one. Send CUSTOM with a due_at to name the due date outright; either one without the other is rejected. ## Waiting for the document By default the request is held until the invoice\u0026#x27;s PDF has rendered, so a 200 means the invoice is issued and its document is ready to retrieve. Pass async=true to queue the issue and get an answer immediately, with the draft as it stands. Poll the invoice to see it issued. A 202 means the work is still in flight: with async=true the invoice has been accepted for issuing, and without it the invoice is issued but its PDF is still rendering. Neither is a failure — an invoice that could not be issued at all comes back 400.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Salesbricks\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/salesbricks/Q_HZP6fZfruEcDCT/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/salesbricks/Q_HZP6fZfruEcDCT/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/salesbricks/Q_HZP6fZfruEcDCT/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/salesbricks/Q_HZP6fZfruEcDCT/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/salesbricks/Q_HZP6fZfruEcDCT/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/salesbricks/Q_HZP6fZfruEcDCT/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/salesbricks/Q_HZP6fZfruEcDCT/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/salesbricks/Q_HZP6fZfruEcDCT/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/salesbricks/Q_HZP6fZfruEcDCT/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Finalize an invoice - Salesbricks\">\u003cmeta data-mint-head property=\"og:description\" content=\"Issues a draft invoice. Final tax is committed, the date of issue and due date are stamped, the invoice leaves draft for its terminal status, and it is sent to the customer\u0026#x27;s invoice recipients. Only drafts can be issued. due_date_basis is optional — omit it and the invoice inherits the order\u0026#x27;s default, or keeps a due date already set by editing it. Sending a basis re-derives the due date and replaces an edited one. Send CUSTOM with a due_at to name the due date outright; either one without the other is rejected. ## Waiting for the document By default the request is held until the invoice\u0026#x27;s PDF has rendered, so a 200 means the invoice is issued and its document is ready to retrieve. Pass async=true to queue the issue and get an answer immediately, with the draft as it stands. Poll the invoice to see it issued. A 202 means the work is still in flight: with async=true the invoice has been accepted for issuing, and without it the invoice is issued but its PDF is still rendering. Neither is a failure — an invoice that could not be issued at all comes back 400.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Salesbricks\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.salesbricks.com/api-reference/invoices/finalize-an-invoice\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://salesbricks.mintlify.app/_mintlify/api/og/v2?division=Invoices\u0026amp;title=Finalize+an+invoice\u0026amp;description=Issues+a+draft+invoice.+Final+tax+is+committed%2C+the+date+of+issue+and+due+date+are+stamped%2C+the+invoice+leaves+draft+for+its+terminal+status%2C+and+it+is+sent+to+\u0026amp;theme=c38cf69ba54d28d8add3f8a9\u0026amp;signature=0de45bec039f332eebb4b2d3f53dc0290f01d99a3c950bf818cf32bed8ac4e2c\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Finalize an invoice - Salesbricks\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Issues a draft invoice. Final tax is committed, the date of issue and due date are stamped, the invoice leaves draft for its terminal status, and it is sent to the customer\u0026#x27;s invoice recipients. Only drafts can be issued. due_date_basis is optional — omit it and the invoice inherits the order\u0026#x27;s default, or keeps a due date already set by editing it. Sending a basis re-derives the due date and replaces an edited one. Send CUSTOM with a due_at to name the due date outright; either one without the other is rejected. ## Waiting for the document By default the request is held until the invoice\u0026#x27;s PDF has rendered, so a 200 means the invoice is issued and its document is ready to retrieve. Pass async=true to queue the issue and get an answer immediately, with the draft as it stands. Poll the invoice to see it issued. A 202 means the work is still in flight: with async=true the invoice has been accepted for issuing, and without it the invoice is issued but its PDF is still rendering. Neither is a failure — an invoice that could not be issued at all comes back 400.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://salesbricks.mintlify.app/_mintlify/api/og/v2?division=Invoices\u0026amp;title=Finalize+an+invoice\u0026amp;description=Issues+a+draft+invoice.+Final+tax+is+committed%2C+the+date+of+issue+and+due+date+are+stamped%2C+the+invoice+leaves+draft+for+its+terminal+status%2C+and+it+is+sent+to+\u0026amp;theme=c38cf69ba54d28d8add3f8a9\u0026amp;signature=0de45bec039f332eebb4b2d3f53dc0290f01d99a3c950bf818cf32bed8ac4e2c\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/salesbricks/Q_HZP6fZfruEcDCT/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Salesbricks\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#197F78\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.salesbricks.com/api-reference/invoices/finalize-an-invoice\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/invoices/finalize-an-invoice.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.salesbricks.com/#organization\",\"name\":\"Salesbricks\",\"url\":\"https://docs.salesbricks.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/salesbricks/3GVA0K12Q7dXW89y/logo/light.svg?fit=max\u0026auto=format\u0026n=3GVA0K12Q7dXW89y\u0026q=85\u0026s=ead3e65ff72970d53a9cd22de50bd8fc\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.salesbricks.com#website\",\"name\":\"Salesbricks\",\"url\":\"https://docs.salesbricks.com\",\"publisher\":{\"@id\":\"https://docs.salesbricks.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.salesbricks.com/api-reference/invoices/finalize-an-invoice#webpage\",\"url\":\"https://docs.salesbricks.com/api-reference/invoices/finalize-an-invoice\",\"name\":\"Finalize an invoice\",\"description\":\"Issues a draft invoice. Final tax is committed, the date of issue and due date are stamped, the invoice leaves draft for its terminal status, and it is sent to the customer's invoice recipients. Only drafts can be issued. due_date_basis is optional — omit it and the invoice inherits the order's default, or keeps a due date already set by editing it. Sending a basis re-derives the due date and replaces an edited one. Send CUSTOM with a due_at to name the due date outright; either one without the other is rejected. ## Waiting for the document By default the request is held until the invoice's PDF has rendered, so a 200 means the invoice is issued and its document is ready to retrieve. Pass async=true to queue the issue and get an answer immediately, with the draft as it stands. Poll the invoice to see it issued. A 202 means the work is still in flight: with async=true the invoice has been accepted for issuing, and without it the invoice is issued but its PDF is still rendering. Neither is a failure — an invoice that could not be issued at all comes back 400.\",\"dateModified\":\"2026-10-30T04:42:47.950Z\",\"isPartOf\":{\"@id\":\"https://docs.salesbricks.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.salesbricks.com/api-reference/invoices/finalize-an-invoice#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.salesbricks.com/api-reference/invoices/finalize-an-invoice#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"REST API Endpoints\",\"item\":\"https://docs.salesbricks.com/api-reference/customers/list-all-customers\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Invoices\",\"item\":\"https://docs.salesbricks.com/api-reference/invoices/list-all-customer-invoices\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Finalize an invoice\",\"item\":\"https://docs.salesbricks.com/api-reference/invoices/finalize-an-invoice\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.salesbricks.com/api-reference/invoices/finalize-an-invoice#apireference\",\"headline\":\"Finalize an invoice\",\"name\":\"Finalize an invoice\",\"description\":\"Issues a draft invoice. Final tax is committed, the date of issue and due date are stamped, the invoice leaves draft for its terminal status, and it is sent to the customer's invoice recipients. Only drafts can be issued. due_date_basis is optional — omit it and the invoice inherits the order's default, or keeps a due date already set by editing it. Sending a basis re-derives the due date and replaces an edited one. Send CUSTOM with a due_at to name the due date outright; either one without the other is rejected. ## Waiting for the document By default the request is held until the invoice's PDF has rendered, so a 200 means the invoice is issued and its document is ready to retrieve. Pass async=true to queue the issue and get an answer immediately, with the draft as it stands. Poll the invoice to see it issued. A 202 means the work is still in flight: with async=true the invoice has been accepted for issuing, and without it the invoice is issued but its PDF is still rendering. Neither is a failure — an invoice that could not be issued at all comes back 400.\",\"url\":\"https://docs.salesbricks.com/api-reference/invoices/finalize-an-invoice\",\"mainEntityOfPage\":{\"@id\":\"https://docs.salesbricks.com/api-reference/invoices/finalize-an-invoice#webpage\"},\"dateModified\":\"2026-10-30T04:42:47.950Z\",\"publisher\":{\"@id\":\"https://docs.salesbricks.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.salesbricks.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Salesbricks\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Salesbricks","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/quickstart-guide/introduction"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/salesforce/overview"}]},{"tab":"APIs \u0026 Webhooks","groups":[{"group":"APIs","icon":"code","pages":[{"title":"REST API Overview","href":"/api-reference/getting-started/overview"},{"title":"Authentication","href":"/api-reference/getting-started/authentication"},{"title":"Starting a Subscription","href":"/api-reference/getting-started/starting-a-subscription"},{"title":"Idempotent Requests","href":"/api-reference/getting-started/idempotent-requests"},{"title":"GraphQL API (Legacy)","href":"/api-reference/getting-started/graphql"},{"title":"Manage My Subscription","href":"/api-reference/manage-my-subscription"}]},{"group":"REST API Endpoints","icon":"server","pages":[{"group":"Customers","pages":[{"title":"List all customers","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /customers","href":"/api-reference/customers/list-all-customers"},{"title":"Create a customer","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /customers","href":"/api-reference/customers/create-a-customer"},{"title":"Retrieve a customer","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /customers/{customer_id}","href":"/api-reference/customers/retrieve-a-customer"},{"title":"Update a customer","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml patch /customers/{customer_id}","href":"/api-reference/customers/update-a-customer"},{"title":"Search customers","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /customers/search","href":"/api-reference/customers/search-customers"}]},{"group":"Invoices","pages":[{"title":"List all customer invoices","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /customers/{customer_id}/invoices","href":"/api-reference/invoices/list-all-customer-invoices"},{"title":"Create standalone invoice","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /invoices","href":"/api-reference/invoices/create-standalone-invoice"},{"title":"Retrieve an invoice","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /invoices/{invoice_id}","href":"/api-reference/invoices/retrieve-an-invoice"},{"title":"Update an invoice","description":"\nUpdate an invoice with override fields, line item descriptions, and/or PDF attachments.\n\n| Field | Affects this invoice | Persists to future invoices |\n|-------|---------------------|----------------------------|\n| `due_at` | ✓ | ✗ |\n| `purchase_order` | ✓ | ✓ (if `persist_purchase_order=true`) |\n| `billing_address` | ✓ | ✓ (Updates subscription) |\n| `company_name` | ✓ | ✓ (Updates subscription) |\n| `accounts_payable_emails` | ✓ | ✓ (Updates subscription) |\n| `invoice_memo` | ✓ | ✓ (if `persist_memo=true`) |\n| `line_item_overrides` | ✓ | ✗ |\n\nUpload PDF attachments as multipart form data using the `pdf_attachments` field.\n\nEdits to invoices that have not been issued yet (`SCHEDULED`, `DRAFT`) are saved\nwithout generating a PDF, a new version or a new invoice number, and\n`send_invoice` is ignored. These happen when the invoice is issued.\n","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml patch /invoices/{invoice_id}","href":"/api-reference/invoices/update-an-invoice"},{"title":"Finalize an invoice","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /invoices/{invoice_id}/finalize","href":"/api-reference/invoices/finalize-an-invoice"},{"title":"Pay an invoice","description":"Processes a payment for a specific invoice using a Stripe payment method.","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /invoices/{invoice_id}/pay","href":"/api-reference/invoices/pay-an-invoice"},{"title":"Create a payment","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /invoices/{invoice_id}/payments","href":"/api-reference/invoices/create-a-payment"},{"title":"Retrieve an invoice PDF","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /invoices/{invoice_id}/pdf","href":"/api-reference/invoices/retrieve-an-invoice-pdf"},{"title":"Regenerate an invoice","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /invoices/{invoice_id}/regenerate","href":"/api-reference/invoices/regenerate-an-invoice"},{"title":"Void an invoice","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /invoices/{invoice_id}/void","href":"/api-reference/invoices/void-an-invoice"},{"title":"Search invoices","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /invoices/search","href":"/api-reference/invoices/search-invoices"},{"title":"List all subscription invoices","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/invoices","href":"/api-reference/invoices/list-all-subscription-invoices"},{"title":"Retrieve next subscription invoice","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/invoices/next","href":"/api-reference/invoices/retrieve-next-subscription-invoice"}]},{"group":"Payment Methods","pages":[{"title":"List all payment methods","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /customers/{customer_id}/payment-methods","href":"/api-reference/payment-methods/list-all-payment-methods"},{"title":"Setup a payment method","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /customers/{customer_id}/payment-methods","href":"/api-reference/payment-methods/setup-a-payment-method"},{"title":"Retrieve default payment method","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /customers/{customer_id}/payment-methods/default","href":"/api-reference/payment-methods/retrieve-default-payment-method"},{"title":"Set default payment method","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml put /customers/{customer_id}/payment-methods/default","href":"/api-reference/payment-methods/set-default-payment-method"},{"title":"Delete a payment method","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml delete /customers/{customer_id}/payment-methods/detail","href":"/api-reference/payment-methods/delete-a-payment-method"},{"title":"List the payment methods for an invoice","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /invoices/{invoice_id}/payment-methods","href":"/api-reference/payment-methods/list-the-payment-methods-for-an-invoice"},{"title":"List all payment methods","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/payment-methods","href":"/api-reference/payment-methods/list-all-payment-methods-1"},{"title":"Setup a payment method","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/payment-methods","href":"/api-reference/payment-methods/setup-a-payment-method-1"},{"title":"Retrieve default payment method","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/payment-methods/default","href":"/api-reference/payment-methods/retrieve-default-payment-method-1"},{"title":"Set default payment method","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml put /subscriptions/{subscription_id}/payment-methods/default","href":"/api-reference/payment-methods/set-default-payment-method-1"},{"title":"Delete a payment method","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml delete /subscriptions/{subscription_id}/payment-methods/detail","href":"/api-reference/payment-methods/delete-a-payment-method-1"}]},{"group":"Customer Contacts","pages":[{"title":"Create a customer contact","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /customers/{customer_id}/persons","href":"/api-reference/customer-contacts/create-a-customer-contact"},{"title":"Update a customer contact","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml patch /customers/{customer_id}/persons/{person_id}","href":"/api-reference/customer-contacts/update-a-customer-contact"},{"title":"Search customer contacts","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /persons/search","href":"/api-reference/customer-contacts/search-customer-contacts"}]},{"group":"Discount Coupons","pages":[{"title":"List all discount coupons","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /discount-coupons","href":"/api-reference/discount-coupons/list-all-discount-coupons"},{"title":"Retrieve a discount coupon","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /discount-coupons/{code}","href":"/api-reference/discount-coupons/retrieve-a-discount-coupon"}]},{"group":"Invoice Versions","pages":[{"title":"List all invoice versions","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /invoices/{invoice_id}/versions","href":"/api-reference/invoice-versions/list-all-invoice-versions"}]},{"group":"Legal Entities","pages":[{"title":"List all legal entities","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /legal-entities","href":"/api-reference/legal-entities/list-all-legal-entities"}]},{"group":"Plans","pages":[{"title":"List all plans","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /plans","href":"/api-reference/plans/list-all-plans"},{"title":"Retrieve a plan","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /plans/{plan_id}","href":"/api-reference/plans/retrieve-a-plan"}]},{"group":"Revenue","pages":[{"title":"Get per-subscription revenue by month","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /revenue/subscriptions","href":"/api-reference/revenue/get-per-subscription-revenue-by-month"}]},{"group":"Subscriptions","pages":[{"title":"Create a subscription","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions","href":"/api-reference/subscriptions/create-a-subscription"},{"title":"Retrieve a subscription","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}","href":"/api-reference/subscriptions/retrieve-a-subscription"},{"title":"Update a subscription","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml patch /subscriptions/{subscription_id}","href":"/api-reference/subscriptions/update-a-subscription"},{"title":"Retrieve subscription checkout URL","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/checkout","href":"/api-reference/subscriptions/retrieve-subscription-checkout-url"},{"title":"Update a subscription pause","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml put /subscriptions/{subscription_id}/pause","href":"/api-reference/subscriptions/update-a-subscription-pause"},{"title":"Pause a subscription","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/pause","href":"/api-reference/subscriptions/pause-a-subscription"},{"title":"Cancel an upcoming subscription pause","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml delete /subscriptions/{subscription_id}/pause","href":"/api-reference/subscriptions/cancel-an-upcoming-subscription-pause"},{"title":"Resume a paused subscription","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/resume","href":"/api-reference/subscriptions/resume-a-paused-subscription"},{"title":"Retrieve subscription sign URL","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/sign","href":"/api-reference/subscriptions/retrieve-subscription-sign-url"},{"title":"Start a subscription","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/start","href":"/api-reference/subscriptions/start-a-subscription"},{"title":"Terminate a subscription","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/terminate","href":"/api-reference/subscriptions/terminate-a-subscription"},{"title":"Estimate a subscription","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/estimate","href":"/api-reference/subscriptions/estimate-a-subscription"}]},{"group":"Subscription Management","pages":[{"title":"Retrieve subscription management URL","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/billing-portal","href":"/api-reference/subscription-management/retrieve-subscription-management-url"}]},{"group":"Subscription State","pages":[{"title":"List all subscription bricks","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/bricks","href":"/api-reference/subscription-state/list-all-subscription-bricks"},{"title":"Retrieve current subscription state","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/current","href":"/api-reference/subscription-state/retrieve-current-subscription-state"},{"title":"Update details for a closed subscription","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml patch /subscriptions/{subscription_id}/current","href":"/api-reference/subscription-state/update-details-for-a-closed-subscription"},{"title":"Retrieve current subscription order form PDF","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/current/pdf","href":"/api-reference/subscription-state/retrieve-current-subscription-order-form-pdf"},{"title":"Retrieve a subscription order form PDF","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/pdf","href":"/api-reference/subscription-state/retrieve-a-subscription-order-form-pdf"}]},{"group":"Usage","pages":[{"title":"Retrieve brick usage","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/bricks/{brick_id}/usage","href":"/api-reference/usage/retrieve-brick-usage"},{"title":"List individual usage entries","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/bricks/{brick_id}/usage/entries","href":"/api-reference/usage/list-individual-usage-entries"},{"title":"Retrieve brick usage time series","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/bricks/{brick_id}/usage/series","href":"/api-reference/usage/retrieve-brick-usage-time-series"},{"title":"Create a usage entry","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /usage/","href":"/api-reference/usage/create-a-usage-entry"},{"title":"Delete a usage entry","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml delete /usage/","href":"/api-reference/usage/delete-a-usage-entry"},{"title":"Update a usage entry","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml patch /usage/","href":"/api-reference/usage/update-a-usage-entry"},{"title":"Get usage transaction details","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /usage/transactions/{transaction_id}/","href":"/api-reference/usage/get-usage-transaction-details"}]},{"group":"Subscription Milestones","pages":[{"title":"List all subscription milestones","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/milestones","href":"/api-reference/subscription-milestones/list-all-subscription-milestones"},{"title":"Complete a subscription milestone","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/milestones/{milestone_id}/complete","href":"/api-reference/subscription-milestones/complete-a-subscription-milestone"}]},{"group":"Subscription History","pages":[{"title":"List all subscription orders","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/orders","href":"/api-reference/subscription-history/list-all-subscription-orders"}]},{"group":"Subscription Recasts","pages":[{"title":"List all subscription recast open orders","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/recast","href":"/api-reference/subscription-recasts/list-all-subscription-recast-open-orders"},{"title":"Create a subscription recast","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/recast","href":"/api-reference/subscription-recasts/create-a-subscription-recast"},{"title":"Delete a subscription recast","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml delete /subscriptions/{subscription_id}/recast/{order_id}","href":"/api-reference/subscription-recasts/delete-a-subscription-recast"},{"title":"Update a subscription recast","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml patch /subscriptions/{subscription_id}/recast/{order_id}","href":"/api-reference/subscription-recasts/update-a-subscription-recast"},{"title":"Retrieve subscription recast checkout URL","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/recast/{order_id}/checkout","href":"/api-reference/subscription-recasts/retrieve-subscription-recast-checkout-url"},{"title":"Retrieve subscription recast sign URL","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/recast/{order_id}/sign","href":"/api-reference/subscription-recasts/retrieve-subscription-recast-sign-url"},{"title":"Start a subscription recast","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/recast/{order_id}/start","href":"/api-reference/subscription-recasts/start-a-subscription-recast"},{"title":"Estimate a subscription recast","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/recast/estimate","href":"/api-reference/subscription-recasts/estimate-a-subscription-recast"}]},{"group":"Subscription Upgrades","pages":[{"title":"List all subscription upgrade open orders","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/upgrade","href":"/api-reference/subscription-upgrades/list-all-subscription-upgrade-open-orders"},{"title":"Create a subscription upgrade","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/upgrade","href":"/api-reference/subscription-upgrades/create-a-subscription-upgrade"},{"title":"Delete a subscription upgrade","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml delete /subscriptions/{subscription_id}/upgrade/{order_id}","href":"/api-reference/subscription-upgrades/delete-a-subscription-upgrade"},{"title":"Update a subscription upgrade","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml patch /subscriptions/{subscription_id}/upgrade/{order_id}","href":"/api-reference/subscription-upgrades/update-a-subscription-upgrade"},{"title":"Retrieve subscription upgrade checkout URL","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml get /subscriptions/{subscription_id}/upgrade/{order_id}/checkout","href":"/api-reference/subscription-upgrades/retrieve-subscription-upgrade-checkout-url"},{"title":"Retrieve subscription upgrade sign URL","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/upgrade/{order_id}/sign","href":"/api-reference/subscription-upgrades/retrieve-subscription-upgrade-sign-url"},{"title":"Start a subscription upgrade","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/upgrade/{order_id}/start","href":"/api-reference/subscription-upgrades/start-a-subscription-upgrade"},{"title":"Estimate a subscription upgrade","deprecated":null,"version":null,"openapi":"https://api.salesbricks.com/api/v2/openapi.yaml post /subscriptions/{subscription_id}/upgrade/estimate","href":"/api-reference/subscription-upgrades/estimate-a-subscription-upgrade"}]}]},{"group":"Usage","icon":"gauge-high","pages":[{"title":"Overview","href":"/api-reference/usage/overview"},{"title":"Submit a usage entry","openapi":"POST /usage","href":"/api-reference/usage/post"},{"title":"Update a usage entry","openapi":"PATCH /usage","href":"/api-reference/usage/patch"},{"title":"Delete a usage entry","openapi":"DELETE /usage","href":"/api-reference/usage/delete"}]},{"group":"Webhooks","icon":"webhook","pages":[{"title":"Overview","href":"/api-reference/webhooks/overview"},{"title":"Schemas","href":"/api-reference/webhooks/schemas"},{"group":"Order Webhooks","pages":[{"title":"Order Webhook Payload","mode":"wide","href":"/api-reference/webhooks/order/payload"},{"title":"order.stage.change","href":"/api-reference/webhooks/order/stage-change"},{"title":"order.approval.status.changed","href":"/api-reference/webhooks/order/approval-status-changed"},{"title":"order.complete","href":"/api-reference/webhooks/order/complete"},{"title":"order.closed.lost","href":"/api-reference/webhooks/order/closed-lost"},{"title":"order.closed.delete","href":"/api-reference/webhooks/order/closed-delete"},{"title":"order.end","href":"/api-reference/webhooks/order/end"},{"title":"order.new-ramping-period","href":"/api-reference/webhooks/order/new-ramping-period"},{"title":"order.terminated","href":"/api-reference/webhooks/order/terminated"},{"title":"order.reinstated","href":"/api-reference/webhooks/order/reinstated"}]},{"group":"Subscription Webhooks","pages":[{"title":"Subscription Inactive Payload","mode":"wide","href":"/api-reference/webhooks/subscription/payload"},{"title":"subscription.inactive","href":"/api-reference/webhooks/subscription/inactive"}]},{"group":"Invoice Webhooks","pages":[{"title":"Invoice Webhook Payload","mode":"wide","href":"/api-reference/webhooks/invoice/payload"},{"title":"invoice.start","href":"/api-reference/webhooks/invoice/start"},{"title":"invoice.upcoming.due","href":"/api-reference/webhooks/invoice/upcoming-due"},{"title":"invoice.past.due","href":"/api-reference/webhooks/invoice/past-due"},{"title":"invoice.payment.succeeded","href":"/api-reference/webhooks/invoice/payment/succeeded"},{"title":"invoice.payment.failed","href":"/api-reference/webhooks/invoice/payment/failed"},{"title":"invoice.refunded","href":"/api-reference/webhooks/invoice/refunded"},{"title":"invoice.voided","href":"/api-reference/webhooks/invoice/voided"}]},{"group":"Payment Webhooks","pages":[{"title":"Payment Webhook Payload","mode":"wide","href":"/api-reference/webhooks/payment/payload"}]},{"group":"Usage Webhooks","pages":[{"title":"Usage Threshold Payload","mode":"wide","href":"/api-reference/webhooks/usage/payload"},{"title":"usage.threshold.exceeded.precommitment","href":"/api-reference/webhooks/usage/threshold-exceeded-precommitment"},{"title":"usage.threshold.exceeded.units","href":"/api-reference/webhooks/usage/threshold-exceeded-units"},{"title":"usage.threshold.exceeded.money","href":"/api-reference/webhooks/usage/threshold-exceeded-money"}]},{"group":"Plan Webhooks","pages":[{"title":"plan.published","href":"/api-reference/webhooks/plan/published"}]},{"group":"Company Webhooks","pages":[{"title":"Company Webhook Payload","mode":"wide","href":"/api-reference/webhooks/company/payload"},{"title":"company.created","href":"/api-reference/webhooks/company/created"},{"title":"company.updated","href":"/api-reference/webhooks/company/updated"}]},{"group":"Person Webhooks","pages":[{"title":"Person Webhook Payload","mode":"wide","href":"/api-reference/webhooks/person/payload"},{"title":"person.created","href":"/api-reference/webhooks/person/created"},{"title":"person.updated","href":"/api-reference/webhooks/person/updated"}]}]}]},{"tab":"What's new","pages":[{"title":"What's new","href":"/whats-new"}]},{"tab":"Knowledge Base","href":"https://support.salesbricks.com"}]},"basePath":"","title":"Finalize an invoice - Salesbricks","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}