Enrolls the customer in the product and opens an invoice for it, already open and ready to be paid. When the payment confirms, product delivery (email and download link) happens on its own.
The customer is identified by customer.externalId: calling again with the same externalId reuses the customer and enrollment instead of creating duplicates. The amount comes from the product’s published price unless you send amount.
The buyer. externalId is required and identifies the customer stably (their id in your system, or their email): the same key reuses the existing customer. email, name and taxId (CPF or CNPJ) are optional.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Infi","colors":{"primary":"#0A1430","light":"#E2B13C","dark":"#0A1430"},"logo":{"light":"https://mintcdn.com/beinfi/owBheEE6vXSyqXTj/logo/logo.svg?fit=max\u0026auto=format\u0026n=owBheEE6vXSyqXTj\u0026q=85\u0026s=b1b9ce09a8814e42032ef2bf2c08fb54","dark":"https://mintcdn.com/beinfi/owBheEE6vXSyqXTj/logo/logo.svg?fit=max\u0026auto=format\u0026n=owBheEE6vXSyqXTj\u0026q=85\u0026s=b1b9ce09a8814e42032ef2bf2c08fb54","href":"https://beinfi.com"},"favicon":"https://mintcdn.com/beinfi/owBheEE6vXSyqXTj/favicon.svg?fit=max\u0026auto=format\u0026n=owBheEE6vXSyqXTj\u0026q=85\u0026s=cbb3280c14965b007e9662521134e88c","api":{"playground":{"display":"interactive"}},"navbar":{"links":[{"href":"https://app-sandbox.beinfi.com","label":"Sandbox"}],"primary":{"type":"button","label":"Começar","href":"https://app.beinfi.com"}},"footer":{"socials":{"website":"https://beinfi.com"}},"styling":{"latex":true},"navigation":{"languages":[{"language":"pt-BR","default":true,"href":"introducao"},{"language":"en","href":"en/introducao"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"beinfi","hasAudioNarration":false,"actualSubdomain":"beinfi","customDomains":["docs.beinfi.com"],"gitSource":{"type":"github","owner":"be-infinitum","repo":"infi","deployBranch":"main","contentDirectory":"infi-docs","isPrivate":true,"mountPath":"","label":"","_id":"6adfafa06d56e5c194b62908"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae91a58c27bfbde36d8601a","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"pt-BR","tag":"Referência da API","count":72},{"language":"en","tag":"API reference","count":72},{"language":"pt-BR","tag":"Catálogo","count":21},{"language":"en","tag":"Catalog","count":21},{"language":"pt-BR","tag":"Guias","count":17},{"language":"en","tag":"Guides","count":17},{"language":"pt-BR","tag":"Começar","count":13},{"language":"en","tag":"Get started","count":13},{"language":"pt-BR","tag":"Clientes","count":8},{"language":"pt-BR","tag":"Faturas","count":8},{"language":"en","tag":"Customers","count":8},{"language":"en","tag":"Invoices","count":8},{"language":"pt-BR","tag":"Webhooks","count":7},{"language":"en","tag":"Webhooks","count":7},{"language":"pt-BR","tag":"Conta","count":5},{"language":"pt-BR","tag":"Cupons","count":5},{"language":"pt-BR","tag":"Pagamentos","count":5},{"language":"en","tag":"Account","count":5},{"language":"en","tag":"Coupons","count":5},{"language":"en","tag":"Payments","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"rbac-expansion","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":"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":"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":"editor-metadata","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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en/api-reference/invoices/sell-a-product","slug":"/en/api-reference/invoices/sell-a-product","pageMetadata":{"title":"Sell a product","description":"Enrolls the customer in the product and opens an invoice for it, already `open` and ready to be paid. When the payment confirms, product delivery (email and download link) happens on its own.\n\nThe customer is identified by `customer.externalId`: calling again with the same `externalId` reuses the customer and enrollment instead of creating duplicates. The amount comes from the product's published price unless you send `amount`.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/products/{productID}/invoices","href":"/en/api-reference/invoices/sell-a-product","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 p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Enrolls the customer in the product and opens an invoice for it, already \", _jsx(_components.code, {\n children: \"open\"\n }), \" and ready to be paid. When the payment confirms, product delivery (email and download link) happens on its own.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The customer is identified by \", _jsx(_components.code, {\n children: \"customer.externalId\"\n }), \": calling again with the same \", _jsx(_components.code, {\n children: \"externalId\"\n }), \" reuses the customer and enrollment instead of creating duplicates. The amount comes from the product’s published price unless you send \", _jsx(_components.code, {\n children: \"amount\"\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":"Sell a product","description":"Enrolls the customer in the product and opens an invoice for it, already `open` and ready to be paid. When the payment confirms, product delivery (email and download link) happens on its own.\n\nThe customer is identified by `customer.externalId`: calling again with the same `externalId` reuses the customer and enrollment instead of creating duplicates. The amount comes from the product's published price unless you send `amount`.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/products/{productID}/invoices","href":"/en/api-reference/invoices/sell-a-product","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Invoices"],"operationId":"createProductInvoice","requestBody":"f880d797-2a0b-4ca1-8296-45db841e8070","responses":{"201":"593ab48d-5575-482e-8116-d7542693dbb9","401":"76a09da0-2c7f-4156-a7ec-5c06ffd0ef12","404":"7f5901b7-c65e-48f0-bb0f-d306c4472c44","422":"b9f64cc4-f0c4-4fd3-80c2-aaa6dc96bae4"},"summary":"Sell a product","description":"Enrolls the customer in the product and opens an invoice for it, already `open` and ready to be paid. When the payment confirms, product delivery (email and download link) happens on its own.\n\nThe customer is identified by `customer.externalId`: calling again with the same `externalId` reuses the customer and enrollment instead of creating duplicates. The amount comes from the product's published price unless you send `amount`.\n","method":"post","type":"path","servers":["32764daa-a0ab-4e11-9cce-071a6d157f12","8926f6ec-3b25-4b18-916e-1427c5952655"],"security":["6ad9c29e-e93e-4c8b-8dc5-5621a2b1f9da"],"path":"/billing/products/{productID}/invoices","baseUrlOptions":["https://api-sandbox.beinfi.com","https://api.beinfi.com"],"title":"Sell a product","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"6ee759ca-fb10-479c-82c3-96e3a6f34dce":{"name":"productID","in":"path","required":true,"schema":{"type":"string","pattern":"^prod_[0-9A-Za-z]{22}$","example":"prod_1d4YogBuw00jAySh5mbUpk","isRequired":true,"description":"Product ID.","uniqueKey":"","typeLabel":"string"},"description":"Product ID."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["customer"],"properties":{"customer":{"type":"object","required":["externalId"],"properties":{"externalId":{"type":"string","isRequired":true,"uniqueKey":"customer.externalId","typeLabel":"string"},"email":{"oneOf":[{"type":"string","uniqueKey":"customer.email.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.email.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.email","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","uniqueKey":"customer.name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.name","typeLabel":"string | null"},"taxId":{"oneOf":[{"type":"string","uniqueKey":"customer.taxId.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"customer.taxId.oneOf.1","typeLabel":"null"}],"uniqueKey":"customer.taxId","typeLabel":"string | null"}},"description":"The buyer. `externalId` is required and identifies the customer stably (their id in your system, or their email): the same key reuses the existing customer. `email`, `name` and `taxId` (CPF or CNPJ) are optional.","isRequired":true,"uniqueKey":"customer","typeLabel":"object"},"amount":{"oneOf":[{"type":"string","description":"Amount to charge, as a decimal string. Defaults to the product's published price.","uniqueKey":"amount.oneOf.0","typeLabel":"string"},{"type":"null","description":"Amount to charge, as a decimal string. Defaults to the product's published price.","uniqueKey":"amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"amount","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","description":"Line description on the invoice. Defaults to the product name.","uniqueKey":"description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Line description on the invoice. Defaults to the product name.","uniqueKey":"description.oneOf.1","typeLabel":"null"}],"uniqueKey":"description","typeLabel":"string | null"},"currency":{"type":"string","description":"Currency, as an ISO 4217 code. Defaults to `BRL`.","uniqueKey":"currency","typeLabel":"string"},"dueDate":{"oneOf":[{"type":"string","format":"date-time","description":"Due date.","uniqueKey":"dueDate.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Due date.","uniqueKey":"dueDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"dueDate","typeLabel":"string\u003cdate-time> | null"},"send":{"type":"boolean","description":"`true` emails the invoice to the buyer as soon as it is created.","uniqueKey":"send","typeLabel":"boolean"},"successUrl":{"oneOf":[{"type":"string","description":"Where checkout sends the buyer after payment.","uniqueKey":"successUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Where checkout sends the buyer after payment.","uniqueKey":"successUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"successUrl","typeLabel":"string | null"},"cancelUrl":{"oneOf":[{"type":"string","description":"Where checkout sends the buyer if they back out.","uniqueKey":"cancelUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Where checkout sends the buyer if they back out.","uniqueKey":"cancelUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancelUrl","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"customer":{"externalId":"\u003cstring>","email":"\u003cstring>","name":"\u003cstring>","taxId":"\u003cstring>"},"amount":"\u003cstring>","description":"\u003cstring>","currency":"\u003cstring>","dueDate":"2023-11-07T05:31:56Z","send":true,"successUrl":"\u003cstring>","cancelUrl":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"593ab48d-5575-482e-8116-d7542693dbb9":{"content":{"application/json":{"schema":{"type":"object","required":["id","status","currency","subtotal","tax","total","amountDue","createdAt"],"properties":{"id":{"type":"string","pattern":"^inv_[0-9A-Za-z]{22}$","example":"inv_6yi30EKotIwGHZdePSdsFc","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"status":{"type":"string","enum":["draft","pending","open","paid","void","uncollectible"],"description":"`draft` (being built), `open` (issued, awaiting payment), `paid`, `void` (canceled) or `uncollectible` (written off).","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"currency":{"type":"string","description":"Currency, as an ISO 4217 code (`BRL`).","isRequired":true,"uniqueKey":"currency","typeLabel":"string"},"subtotal":{"type":"string","description":"Sum of line items before tax and discounts.","isRequired":true,"uniqueKey":"subtotal","typeLabel":"string"},"tax":{"type":"string","description":"Tax on the invoice.","isRequired":true,"uniqueKey":"tax","typeLabel":"string"},"total":{"type":"string","description":"The invoice's final amount.","isRequired":true,"uniqueKey":"total","typeLabel":"string"},"amountDue":{"type":"string","description":"How much is still owed.","isRequired":true,"uniqueKey":"amountDue","typeLabel":"string"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"customerId":{"oneOf":[{"type":"string","format":"uuid","description":"The customer's product enrollment id. Set on product, usage and subscription invoices.","uniqueKey":"customerId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"The customer's product enrollment id. Set on product, usage and subscription invoices.","uniqueKey":"customerId.oneOf.1","typeLabel":"null"}],"uniqueKey":"customerId","typeLabel":"string\u003cuuid> | null"},"payerId":{"oneOf":[{"type":"string","description":"The paying customer's id. Set on one-off invoices.","pattern":"^cus_[0-9A-Za-z]{22}$","example":"cus_6Tq0Y2rGJ1aQ9zXk3LmPbV","uniqueKey":"payerId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The paying customer's id. Set on one-off invoices.","uniqueKey":"payerId.oneOf.1","typeLabel":"null"}],"uniqueKey":"payerId","typeLabel":"string | null"},"subscriptionId":{"oneOf":[{"type":"string","description":"The subscription that generated the invoice","pattern":"^sub_[0-9A-Za-z]{22}$","example":"sub_2Kp7rWqT0aLm4XcVb8NzJe","uniqueKey":"subscriptionId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The subscription that generated the invoice","uniqueKey":"subscriptionId.oneOf.1","typeLabel":"null"}],"uniqueKey":"subscriptionId","typeLabel":"string | null"},"invoiceNumber":{"oneOf":[{"type":"string","description":"Sequential invoice number","uniqueKey":"invoiceNumber.oneOf.0","typeLabel":"string"},{"type":"null","description":"Sequential invoice number","uniqueKey":"invoiceNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"invoiceNumber","typeLabel":"string | null"},"periodStart":{"oneOf":[{"type":"string","format":"date-time","description":"Start of the billed period","uniqueKey":"periodStart.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Start of the billed period","uniqueKey":"periodStart.oneOf.1","typeLabel":"null"}],"uniqueKey":"periodStart","typeLabel":"string\u003cdate-time> | null"},"periodEnd":{"oneOf":[{"type":"string","format":"date-time","description":"End of the billed period","uniqueKey":"periodEnd.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"End of the billed period","uniqueKey":"periodEnd.oneOf.1","typeLabel":"null"}],"uniqueKey":"periodEnd","typeLabel":"string\u003cdate-time> | null"},"dueDate":{"oneOf":[{"type":"string","format":"date-time","description":"Due date.","uniqueKey":"dueDate.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Due date.","uniqueKey":"dueDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"dueDate","typeLabel":"string\u003cdate-time> | null"},"finalizedAt":{"oneOf":[{"type":"string","format":"date-time","description":"When the invoice was issued.","uniqueKey":"finalizedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the invoice was issued.","uniqueKey":"finalizedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"finalizedAt","typeLabel":"string\u003cdate-time> | null"},"paidAt":{"oneOf":[{"type":"string","format":"date-time","description":"When the invoice was paid.","uniqueKey":"paidAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the invoice was paid.","uniqueKey":"paidAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"paidAt","typeLabel":"string\u003cdate-time> | null"},"successUrl":{"oneOf":[{"type":"string","description":"Where checkout sends the buyer after payment.","uniqueKey":"successUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Where checkout sends the buyer after payment.","uniqueKey":"successUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"successUrl","typeLabel":"string | null"},"cancelUrl":{"oneOf":[{"type":"string","description":"Where checkout sends the buyer if they back out.","uniqueKey":"cancelUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Where checkout sends the buyer if they back out.","uniqueKey":"cancelUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"cancelUrl","typeLabel":"string | null"},"lineItems":{"type":"array","items":{"type":"object","required":["id","type","description","quantity","amount","proration"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"lineItems.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"type":{"type":"string","enum":["usage","recurring","proration","credit","adjustment","commitment","manual"],"description":"`usage` (metered usage), `recurring` (recurring fee), `proration` (pro-rata adjustment for a mid-period change), `credit`, `adjustment` (usage that arrived after its period was already invoiced), `commitment` (top-up to the minimum commitment) or `manual` (free-form line).","isRequired":true,"uniqueKey":"lineItems.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","isRequired":true,"uniqueKey":"lineItems.items.[INDEX].description","typeLabel":"string"},"quantity":{"type":"string","description":"Quantity billed","isRequired":true,"uniqueKey":"lineItems.items.[INDEX].quantity","typeLabel":"string"},"amount":{"type":"string","description":"Line total","isRequired":true,"uniqueKey":"lineItems.items.[INDEX].amount","typeLabel":"string"},"proration":{"type":"boolean","description":"`true` when the line is a pro-rated amount.","isRequired":true,"uniqueKey":"lineItems.items.[INDEX].proration","typeLabel":"boolean"},"meterId":{"oneOf":[{"type":"string","format":"uuid","description":"The meter the usage came from","uniqueKey":"lineItems.items.[INDEX].meterId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"The meter the usage came from","uniqueKey":"lineItems.items.[INDEX].meterId.oneOf.1","typeLabel":"null"}],"uniqueKey":"lineItems.items.[INDEX].meterId","typeLabel":"string\u003cuuid> | null"},"priceId":{"oneOf":[{"type":"string","format":"uuid","description":"The price applied to this line.","uniqueKey":"lineItems.items.[INDEX].priceId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"The price applied to this line.","uniqueKey":"lineItems.items.[INDEX].priceId.oneOf.1","typeLabel":"null"}],"uniqueKey":"lineItems.items.[INDEX].priceId","typeLabel":"string\u003cuuid> | null"},"unitPrice":{"oneOf":[{"type":"string","description":"Price per unit","uniqueKey":"lineItems.items.[INDEX].unitPrice.oneOf.0","typeLabel":"string"},{"type":"null","description":"Price per unit","uniqueKey":"lineItems.items.[INDEX].unitPrice.oneOf.1","typeLabel":"null"}],"uniqueKey":"lineItems.items.[INDEX].unitPrice","typeLabel":"string | null"}},"description":"One line on an invoice.","uniqueKey":"lineItems.items.[INDEX]","typeLabel":"object"},"uniqueKey":"lineItems","typeLabel":"object[]"}},"description":"What a customer owes: line items, totals and status. Status: `draft` → `open` → `paid`, or `void` / `uncollectible`.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"inv_6yi30EKotIwGHZdePSdsFc","status":"draft","currency":"\u003cstring>","subtotal":"\u003cstring>","tax":"\u003cstring>","total":"\u003cstring>","amountDue":"\u003cstring>","createdAt":"2023-11-07T05:31:56Z","customerId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","payerId":"cus_6Tq0Y2rGJ1aQ9zXk3LmPbV","subscriptionId":"sub_2Kp7rWqT0aLm4XcVb8NzJe","invoiceNumber":"\u003cstring>","periodStart":"2023-11-07T05:31:56Z","periodEnd":"2023-11-07T05:31:56Z","dueDate":"2023-11-07T05:31:56Z","finalizedAt":"2023-11-07T05:31:56Z","paidAt":"2023-11-07T05:31:56Z","successUrl":"\u003cstring>","cancelUrl":"\u003cstring>","lineItems":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","type":"usage","description":"\u003cstring>","quantity":"\u003cstring>","amount":"\u003cstring>","proration":true,"meterId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","priceId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","unitPrice":"\u003cstring>"}]}}},"exampleType":"generated"}},"description":"Created.","exampleType":"generated"},"76a09da0-2c7f-4156-a7ec-5c06ffd0ef12":{"content":{"application/json":{"schema":{"type":"object","required":["message","error_code","tracer_id"],"properties":{"message":{"type":"string","description":"Human-readable sentence.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error_code":{"type":"string","examples":["internal_error","validation_failed","bad_request","unauthorized","forbidden","not_found","conflict","rate_limited"],"description":"Stable error code. Branch on it.","isRequired":true,"uniqueKey":"error_code","typeLabel":"string"},"tracer_id":{"type":"string","description":"Request id. Include it when contacting support.","isRequired":true,"uniqueKey":"tracer_id","typeLabel":"string"}},"description":"The standard error body. It is flat (no `error` wrapper) and the trace id is `tracer_id`.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","error_code":"internal_error","tracer_id":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Missing or invalid API key.","exampleType":"generated"},"7f5901b7-c65e-48f0-bb0f-d306c4472c44":{"content":{"application/json":{"schema":{"type":"object","required":["message","error_code","tracer_id","resource"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error_code":{"type":"string","examples":["internal_error","validation_failed","bad_request","unauthorized","forbidden","not_found","conflict","rate_limited"],"description":"Stable error code. The list is open: besides the generic codes, each area defines its own (`coupon_expired`, `insufficient_balance`, `version_not_draft`, `idempotency_key_reused`…). Handle a code you do not recognize by its HTTP status and show `message`; do not fail parsing the response.","isRequired":true,"uniqueKey":"error_code","typeLabel":"string"},"tracer_id":{"type":"string","isRequired":true,"uniqueKey":"tracer_id","typeLabel":"string"},"resource":{"type":"string","isRequired":true,"uniqueKey":"resource","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","error_code":"internal_error","tracer_id":"\u003cstring>","resource":"\u003cstring>"}}},"exampleType":"generated"}},"description":"Resource not found.","exampleType":"generated"},"b9f64cc4-f0c4-4fd3-80c2-aaa6dc96bae4":{"content":{"application/json":{"schema":{"type":"object","required":["message","error_code","tracer_id","errors"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"error_code":{"type":"string","examples":["internal_error","validation_failed","bad_request","unauthorized","forbidden","not_found","conflict","rate_limited"],"description":"Stable error code. The list is open: besides the generic codes, each area defines its own (`coupon_expired`, `insufficient_balance`, `version_not_draft`, `idempotency_key_reused`…). Handle a code you do not recognize by its HTTP status and show `message`; do not fail parsing the response.","isRequired":true,"uniqueKey":"error_code","typeLabel":"string"},"tracer_id":{"type":"string","isRequired":true,"uniqueKey":"tracer_id","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","required":["field","value","constraint","description"],"properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"value":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].value","typeLabel":"string"},"constraint":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].constraint","typeLabel":"string"},"description":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Per-field detail (`field`, `description`). Always present on a `422`; may be empty.","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"description":"Body of a `422`. Same shape as `Error`, plus `errors[]` with per-field detail. That is where the sentence telling you what to fix lives (for example, \"product has no published version\").","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","error_code":"internal_error","tracer_id":"\u003cstring>","errors":[{"field":"\u003cstring>","value":"\u003cstring>","constraint":"\u003cstring>","description":"\u003cstring>"}]}}},"exampleType":"generated"}},"description":"One or more fields are invalid. Per-field detail is in `errors[]`.","exampleType":"generated"}},"security":{"6ad9c29e-e93e-4c8b-8dc5-5621a2b1f9da":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Your account's secret key: `Authorization: Bearer sk_test_…` or `sk_live_…`. Server-side only.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"32764daa-a0ab-4e11-9cce-071a6d157f12":{"url":"https://api-sandbox.beinfi.com","description":"Sandbox"},"8926f6ec-3b25-4b18-916e-1427c5952655":{"url":"https://api.beinfi.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Your account's secret key: `Authorization: Bearer sk_test_…` or `sk_live_…`. Server-side only.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Your account's secret key: `Authorization: Bearer sk_test_…` or `sk_live_…`. Server-side only.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.en.json"},"subdomain":"beinfi","siteName":"Infi","title":"Sell a product - Infi","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"pt-BR":{"href":"/introducao","matchLevel":4},"en":{"href":"/en/api-reference/invoices/sell-a-product","matchLevel":0}}},"lastModified":"2026-11-02T23:19:07.289Z","originalFileLocation":"en/api-reference/invoices/sell-a-product.mdx","locale":"en"},"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=\"Enrolls the customer in the product and opens an invoice for it, already open and ready to be paid. When the payment confirms, product delivery (email and download link) happens on its own. The customer is identified by customer.externalId: calling again with the same externalId reuses the customer and enrollment instead of creating duplicates. The amount comes from the product\u0026#x27;s published price unless you send amount.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Infi\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/beinfi/6L9ijlDVcq5aSfgL/_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/beinfi/6L9ijlDVcq5aSfgL/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/beinfi/6L9ijlDVcq5aSfgL/_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/beinfi/6L9ijlDVcq5aSfgL/_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/beinfi/6L9ijlDVcq5aSfgL/_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/beinfi/6L9ijlDVcq5aSfgL/_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/beinfi/6L9ijlDVcq5aSfgL/_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/beinfi/6L9ijlDVcq5aSfgL/_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/beinfi/6L9ijlDVcq5aSfgL/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Sell a product - Infi\">\u003cmeta data-mint-head property=\"og:description\" content=\"Enrolls the customer in the product and opens an invoice for it, already open and ready to be paid. When the payment confirms, product delivery (email and download link) happens on its own. The customer is identified by customer.externalId: calling again with the same externalId reuses the customer and enrollment instead of creating duplicates. The amount comes from the product\u0026#x27;s published price unless you send amount.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Infi\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.beinfi.com/en/api-reference/invoices/sell-a-product\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://beinfi.mintlify.site/_mintlify/api/og/v2?division=Invoices\u0026amp;title=Sell+a+product\u0026amp;description=Enrolls+the+customer+in+the+product+and+opens+an+invoice+for+it%2C+already+%60open%60+and+ready+to+be+paid.+When+the+payment+confirms%2C+product+delivery+%28email+and+dow\u0026amp;theme=0f1e10ebee4743982aba108c\u0026amp;signature=8d8d00516ce37b31ebfb087b7b6d192ea636df4101291adf90b50d3731bc76d1\">\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=\"Sell a product - Infi\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Enrolls the customer in the product and opens an invoice for it, already open and ready to be paid. When the payment confirms, product delivery (email and download link) happens on its own. The customer is identified by customer.externalId: calling again with the same externalId reuses the customer and enrollment instead of creating duplicates. The amount comes from the product\u0026#x27;s published price unless you send amount.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://beinfi.mintlify.site/_mintlify/api/og/v2?division=Invoices\u0026amp;title=Sell+a+product\u0026amp;description=Enrolls+the+customer+in+the+product+and+opens+an+invoice+for+it%2C+already+%60open%60+and+ready+to+be+paid.+When+the+payment+confirms%2C+product+delivery+%28email+and+dow\u0026amp;theme=0f1e10ebee4743982aba108c\u0026amp;signature=8d8d00516ce37b31ebfb087b7b6d192ea636df4101291adf90b50d3731bc76d1\">\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/beinfi/6L9ijlDVcq5aSfgL/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Infi\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0A1430\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.beinfi.com/en/api-reference/invoices/sell-a-product\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/api-reference/invoices/sell-a-product.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.beinfi.com/#organization\",\"name\":\"Infi\",\"url\":\"https://docs.beinfi.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/beinfi/owBheEE6vXSyqXTj/logo/logo.svg?fit=max\u0026auto=format\u0026n=owBheEE6vXSyqXTj\u0026q=85\u0026s=b1b9ce09a8814e42032ef2bf2c08fb54\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.beinfi.com#website\",\"name\":\"Infi\",\"url\":\"https://docs.beinfi.com\",\"publisher\":{\"@id\":\"https://docs.beinfi.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.beinfi.com/en/api-reference/invoices/sell-a-product#webpage\",\"url\":\"https://docs.beinfi.com/en/api-reference/invoices/sell-a-product\",\"name\":\"Sell a product\",\"description\":\"Enrolls the customer in the product and opens an invoice for it, already open and ready to be paid. When the payment confirms, product delivery (email and download link) happens on its own. The customer is identified by customer.externalId: calling again with the same externalId reuses the customer and enrollment instead of creating duplicates. The amount comes from the product's published price unless you send amount.\",\"dateModified\":\"2026-11-02T23:19:07.289Z\",\"isPartOf\":{\"@id\":\"https://docs.beinfi.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.beinfi.com/en/api-reference/invoices/sell-a-product#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.beinfi.com/en/api-reference/invoices/sell-a-product#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Invoices\",\"item\":\"https://docs.beinfi.com/en/api-reference/invoices/list-invoices\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sell a product\",\"item\":\"https://docs.beinfi.com/en/api-reference/invoices/sell-a-product\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.beinfi.com/en/api-reference/invoices/sell-a-product#apireference\",\"headline\":\"Sell a product\",\"name\":\"Sell a product\",\"description\":\"Enrolls the customer in the product and opens an invoice for it, already open and ready to be paid. When the payment confirms, product delivery (email and download link) happens on its own. The customer is identified by customer.externalId: calling again with the same externalId reuses the customer and enrollment instead of creating duplicates. The amount comes from the product's published price unless you send amount.\",\"url\":\"https://docs.beinfi.com/en/api-reference/invoices/sell-a-product\",\"mainEntityOfPage\":{\"@id\":\"https://docs.beinfi.com/en/api-reference/invoices/sell-a-product#webpage\"},\"dateModified\":\"2026-11-02T23:19:07.289Z\",\"publisher\":{\"@id\":\"https://docs.beinfi.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.beinfi.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Infi\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Infi","nav":{"global":null,"languages":[{"language":"pt-BR","default":true,"pages":[{"title":"pt-BR","href":"/introducao"}]},{"language":"en","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/en/introducao"}]},{"tab":"API reference","groups":[{"group":"Checkout","pages":[{"title":"Read an invoice at checkout","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /pay/{slug}/invoices/{invoiceID}","href":"/en/api-reference/checkout/read-an-invoice-at-checkout"},{"title":"Pay an invoice at checkout","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /pay/{slug}/invoices/{invoiceID}/charge","href":"/en/api-reference/checkout/pay-an-invoice-at-checkout"},{"title":"Apply a coupon to an invoice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /pay/{slug}/invoices/{invoiceID}/coupon","href":"/en/api-reference/checkout/apply-a-coupon-to-an-invoice"},{"title":"Download a digital product","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /pay/{slug}/download/{token}","href":"/en/api-reference/checkout/download-a-digital-product"}]},{"group":"Test account","pages":[{"title":"Create a test account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /public/v1/claimables","href":"/en/api-reference/test-account/create-a-test-account"},{"title":"Get a test account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /public/v1/claimables/{claimableID}","href":"/en/api-reference/test-account/get-a-test-account"}]},{"group":"Catalog","pages":[{"title":"Prepare an image upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /catalog/images/presign","href":"/en/api-reference/catalog/prepare-an-image-upload"},{"title":"List products","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /products","href":"/en/api-reference/catalog/list-products"},{"title":"Create a product","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /products","href":"/en/api-reference/catalog/create-a-product"},{"title":"Get a product","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /products/{productID}","href":"/en/api-reference/catalog/get-a-product"},{"title":"Update a product","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json patch /products/{productID}","href":"/en/api-reference/catalog/update-a-product"},{"title":"List product versions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /products/{productID}/versions","href":"/en/api-reference/catalog/list-product-versions"},{"title":"Create a new version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /products/{productID}/versions","href":"/en/api-reference/catalog/create-a-new-version"},{"title":"Publish a version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /products/{productID}/versions/{versionID}/publish","href":"/en/api-reference/catalog/publish-a-version"},{"title":"List a version's prices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /products/{productID}/versions/{versionID}/prices","href":"/en/api-reference/catalog/list-a-versions-prices"},{"title":"Add a price to a version","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /products/{productID}/versions/{versionID}/prices","href":"/en/api-reference/catalog/add-a-price-to-a-version"},{"title":"List a product's meters","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /products/{productID}/meters","href":"/en/api-reference/catalog/list-a-products-meters"},{"title":"Create a meter","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /products/{productID}/meters","href":"/en/api-reference/catalog/create-a-meter"},{"title":"Create a link with a product","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /payment-links","href":"/en/api-reference/catalog/create-a-link-with-a-product"},{"title":"List a product's links","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /products/{productID}/payment-links","href":"/en/api-reference/catalog/list-a-products-links"},{"title":"Create a payment link","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /products/{productID}/payment-links","href":"/en/api-reference/catalog/create-a-payment-link"},{"title":"Revoke a payment link","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json delete /products/{productID}/payment-links/{linkID}","href":"/en/api-reference/catalog/revoke-a-payment-link"},{"title":"Update a meter","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json patch /products/{productID}/meters/{meterID}","href":"/en/api-reference/catalog/update-a-meter"},{"title":"Get a file upload URL","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /products/{productID}/deliverable/presign","href":"/en/api-reference/catalog/get-a-file-upload-url"},{"title":"Get the deliverable","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /products/{productID}/deliverable","href":"/en/api-reference/catalog/get-the-deliverable"},{"title":"Save the deliverable","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json put /products/{productID}/deliverable","href":"/en/api-reference/catalog/save-the-deliverable"},{"title":"Delete the deliverable","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json delete /products/{productID}/deliverable","href":"/en/api-reference/catalog/delete-the-deliverable"}]},{"group":"Customers","pages":[{"title":"Create a customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /customers","href":"/en/api-reference/customers/create-a-customer"},{"title":"Enroll a customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /products/{productID}/customers","href":"/en/api-reference/customers/enroll-a-customer"},{"title":"Get a customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /customers/{customerID}","href":"/en/api-reference/customers/get-a-customer"},{"title":"Get customer state","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /customers/{customerID}/state","href":"/en/api-reference/customers/get-customer-state"},{"title":"Get balances","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /customers/{customerID}/wallet","href":"/en/api-reference/customers/get-balances"},{"title":"List customer rate cards","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /customers/{customerID}/rate-cards","href":"/en/api-reference/customers/list-customer-rate-cards"},{"title":"Set a customer rate card","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /customers/{customerID}/rate-cards","href":"/en/api-reference/customers/set-a-customer-rate-card"},{"title":"Delete a customer rate card","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json delete /customers/{customerID}/rate-cards/{rateCardID}","href":"/en/api-reference/customers/delete-a-customer-rate-card"}]},{"group":"Metering","pages":[{"title":"Record a usage event","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /metering/events","href":"/en/api-reference/metering/record-a-usage-event"},{"title":"Record usage events in batch","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /metering/events/batch","href":"/en/api-reference/metering/record-usage-events-in-batch"},{"title":"Get customer usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /metering/usage","href":"/en/api-reference/metering/get-customer-usage"}]},{"group":"Invoices","pages":[{"title":"List invoices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/invoices","href":"/en/api-reference/invoices/list-invoices"},{"title":"Create a one-off invoice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/invoices","href":"/en/api-reference/invoices/create-a-one-off-invoice"},{"title":"Invoice accrued usage","description":"Adds up an enrollment's metered usage over [`from`, `to`) and generates an invoice, priced with the product's published version (or the customer's rate card, if any). Use it to bill usage without a subscription. Send `send: true` to email the invoice.\n\n`customerId` here is the customer's product enrollment id, not the customer id.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/invoices/from-usage","href":"/en/api-reference/invoices/invoice-accrued-usage"},{"title":"Sell a product","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/products/{productID}/invoices","href":"/en/api-reference/invoices/sell-a-product"},{"title":"Invoice the current period","description":"Generates the invoice for the subscription's current period now, without waiting for automatic billing. The period must have ended (or, for items billed up front, have started).\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/subscriptions/{subscriptionID}/invoices","href":"/en/api-reference/invoices/invoice-the-current-period"},{"title":"Get an invoice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/invoices/{invoiceID}","href":"/en/api-reference/invoices/get-an-invoice"},{"title":"Email an invoice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/invoices/{invoiceID}/send","href":"/en/api-reference/invoices/email-an-invoice"},{"title":"Void an invoice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/invoices/{invoiceID}/void","href":"/en/api-reference/invoices/void-an-invoice"}]},{"group":"Payments","pages":[{"title":"List payments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/payments","href":"/en/api-reference/payments/list-payments"},{"title":"List an invoice's payments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/invoices/{invoiceID}/payments","href":"/en/api-reference/payments/list-an-invoices-payments"},{"title":"Get a payment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/payments/{paymentID}","href":"/en/api-reference/payments/get-a-payment"},{"title":"Refund a payment","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/payments/{paymentID}/refund","href":"/en/api-reference/payments/refund-a-payment"},{"title":"List a payment's refunds","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/payments/{paymentID}/refunds","href":"/en/api-reference/payments/list-a-payments-refunds"}]},{"group":"Subscriptions","pages":[{"title":"Create a subscription","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/products/{productID}/subscriptions","href":"/en/api-reference/subscriptions/create-a-subscription"},{"title":"List an enrollment's subscriptions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/customers/{customerID}/subscriptions","href":"/en/api-reference/subscriptions/list-an-enrollments-subscriptions"},{"title":"Get a subscription","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/subscriptions/{subscriptionID}","href":"/en/api-reference/subscriptions/get-a-subscription"}]},{"group":"Billing","pages":[{"title":"List invoice download links","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/invoices/{invoiceID}/deliverable","href":"/en/api-reference/billing/list-invoice-download-links"}]},{"group":"Coupons","pages":[{"title":"List coupons","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/coupons","href":"/en/api-reference/coupons/list-coupons"},{"title":"Create a coupon","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /billing/coupons","href":"/en/api-reference/coupons/create-a-coupon"},{"title":"Get a coupon","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /billing/coupons/{couponID}","href":"/en/api-reference/coupons/get-a-coupon"},{"title":"Delete a coupon","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json delete /billing/coupons/{couponID}","href":"/en/api-reference/coupons/delete-a-coupon"},{"title":"Activate or archive a coupon","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json patch /billing/coupons/{couponID}","href":"/en/api-reference/coupons/activate-or-archive-a-coupon"}]},{"group":"Account","pages":[{"title":"Get your account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /account/tenant","href":"/en/api-reference/account/get-your-account"},{"title":"Update your account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json patch /account/tenant","href":"/en/api-reference/account/update-your-account"},{"title":"List API keys","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /account/api-keys","href":"/en/api-reference/account/list-api-keys"},{"title":"Create an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /account/api-keys","href":"/en/api-reference/account/create-an-api-key"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json delete /account/api-keys/{keyID}","href":"/en/api-reference/account/revoke-an-api-key"}]},{"group":"Webhooks","pages":[{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /account/webhooks","href":"/en/api-reference/webhooks/list-webhook-endpoints"},{"title":"Create a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /account/webhooks","href":"/en/api-reference/webhooks/create-a-webhook-endpoint"},{"title":"List webhook deliveries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /account/webhooks/deliveries","href":"/en/api-reference/webhooks/list-webhook-deliveries"},{"title":"Get a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json get /account/webhooks/{endpointID}","href":"/en/api-reference/webhooks/get-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json delete /account/webhooks/{endpointID}","href":"/en/api-reference/webhooks/delete-a-webhook-endpoint"},{"title":"Update a webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json patch /account/webhooks/{endpointID}","href":"/en/api-reference/webhooks/update-a-webhook"},{"title":"Rotate a webhook secret","deprecated":null,"version":null,"openapi":"/api-reference/openapi.en.json post /account/webhooks/{endpointID}/rotate-secret","href":"/en/api-reference/webhooks/rotate-a-webhook-secret"}]}]}]}]},"basePath":"","title":"Sell a product - Infi","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}