Hosted checkout links that let a buyer subscribe on their own; create, update and delete them.
List checkout links
Returns the organization's hosted-checkout links, newest first, one page at a time; pagination.total_count counts every link.
Required scope: checkout.read (Read checkout links).
query Parameters
includeExtra data to add to the response: seat_policy. Send a comma-separated list or repeat the parameter. An unknown name is refused with 400. seat_policy is sent without being asked until 2026-11-30; after that date it is sent only when named here.
limitPage size (default 50, max 200).
cursorOpaque continuation token from the previous response's pagination.cursor. Omit for the first page. Cursors are stateless and do not expire, but are only valid for the list and filters that produced them.
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
List checkout links › Responses
OK
Create a checkout link
Creates a hosted-checkout link for a plan of this workspace and answers 201 with it. Customer and subscription defaults are optional; null means "inherit". A plan that is not in this workspace answers 404, and a slug another link of the organization uses answers 409.
Required scope: checkout.write (Manage checkout links).
query Parameters
includeExtra data to add to the response: seat_policy. Send a comma-separated list or repeat the parameter. An unknown name is refused with 400. seat_policy is sent without being asked until 2026-11-30; after that date it is sent only when named here.
Headers
Idempotency-KeyUnique key that makes this POST safe to retry: repeats with the same key replay the first response instead of re-executing. Replays are scoped to the retrying principal (same API key / user) and kept for 24 hours. Required on every POST.
Client-generated idempotency key (e.g. a UUID).
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Create a checkout link › Request Body
plan_idThe plan the link sells.
slugThe link's path segment in its public url. Must be unique within the organization.
collect_addressWhether the checkout page asks the buyer for a postal address. Defaults to false.
collect_phoneWhether the checkout page asks the buyer for a phone number. Defaults to false.
collect_vat_idOlder switch for the VAT ID input, used only when vat_id_collection is not set on the link or the organization. Prefer vat_id_collection.
The legal consent step the buyer passes before ordering. Omit for no consent step.
coupon_codesWhether the checkout takes a coupon code; omitted means it does.
currencyThe currency the checkout charges in. Omit to use the organization's default currency.
deemed_supplier_regimeThe platform rule under which a platform operator, not the seller, accounts for the tax on sales through this link. Omit when no platform rule applies.
default_payment_terms_daysPayment terms in days (0 to 365) for the customer a checkout creates. Omit to use the organization's default.
default_preferred_providerPayment provider to set as preferred on the customer a checkout creates, for example stripe, gocardless, mollie or kontier_payments. Omit to use the organization's default.
default_wallet_modeWallet mode of the customer a checkout creates. Omit to use the organization's default.
metadataFree-form JSON to store on the link.
nameInternal name for the link. Buyers do not see it.
Per-product seat rules. At most one rule per product. Omit to use each seat product's own defaults.
success_urlAbsolute URL the buyer is sent to after paying. Omit to use the portal's default success page.
tax_inclusiveWhether the checkout page first shows prices including tax. Omit to use the organization's default.
trial_daysFree trial days the new subscription starts with. Omit for no trial.
vat_id_collectionWhether the checkout page shows the VAT ID input, and whether the buyer must fill it. Omit to use the organization's setting.
Create a checkout link › Responses
Created
Get a checkout link
Returns one checkout link in any status, archived included, with its customer defaults. An unknown id, or one from another organization or workspace, answers 404.
Required scope: checkout.read (Read checkout links).
path Parameters
idCheckout link UUID
query Parameters
includeExtra data to add to the response: seat_policy. Send a comma-separated list or repeat the parameter. An unknown name is refused with 400. seat_policy is sent without being asked until 2026-11-30; after that date it is sent only when named here.
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Get a checkout link › Responses
OK
Update a checkout link
Deprecated: use PATCH /checkout-links/{id} instead. Removed on 2026-11-30.
Merge-patches a checkout link: a field left out stays as it is. The nullable text fields (name, currency, success_url and the inherit defaults) are tri-state: null clears back to "inherit", a value sets it, and an empty string is refused. status archives the link (archived: its public page answers 404) or makes it active again. seat_policy and consent_config, when sent, replace the stored value.
Required scope: checkout.write (Manage checkout links).
path Parameters
idCheckout link UUID
query Parameters
includeExtra data to add to the response: seat_policy. Send a comma-separated list or repeat the parameter. An unknown name is refused with 400. seat_policy is sent without being asked until 2026-11-30; after that date it is sent only when named here.
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Update a checkout link › Request Body
collect_addressWhether the checkout page asks for a postal address; omitted leaves it.
collect_phoneWhether the checkout page asks for a phone number; omitted leaves it.
collect_vat_idOlder switch for the VAT ID input, used only when vat_id_collection is not set; omitted leaves it.
Replaces the legal consent step; an empty object removes it, omitted leaves it.
coupon_codesWhether the checkout takes a coupon code; omitted leaves it.
currencyCurrency the checkout charges in; null clears it back to the organisation's default, omitted leaves it.
deemed_supplier_regimeThe platform rule under which a platform operator accounts for the tax; empty sets that no rule applies, omitted leaves it.
default_payment_terms_daysPayment terms in days (0 to 365) for the customer a checkout creates; omitted leaves it.
default_preferred_providerPayment provider new customers prefer, for example stripe, gocardless, mollie or kontier_payments; null clears it back to the organization's default, omitted leaves it.
default_wallet_modeWallet mode of the customer a checkout creates; null clears it back to the organization's default, omitted leaves it.
Requests also accept the new spelling: each value in lower case (postpaid for POSTPAID). The listed spelling is deprecated in requests and accepted until 2026-11-30.
metadataFree-form JSON that replaces the stored metadata; omitted leaves it.
nameInternal name; null clears it, omitted leaves it.
Replaces all per-product seat rules; an empty list removes them, omitted leaves them.
statusactive serves the public checkout page, archived stops serving it; omitted leaves it.
success_urlWhere the buyer lands after paying; null clears it, omitted leaves it.
tax_inclusiveWhether the checkout page first shows prices including tax; omitted leaves it.
trial_daysFree trial days the new subscription starts with; omitted leaves it.
vat_id_collectionWhether the checkout page shows the VAT ID input, and whether the buyer must fill it; null clears it back to the organization's setting, omitted leaves it.
Update a checkout link › Responses
OK
Delete a checkout link
Permanently deletes the link, with its seat rules, payment-terms default and recorded consent acceptances, and answers 204; customers and subscriptions created through it are not touched. Its public checkout page answers 404 from then on, even for a buyer who has it open, and the slug becomes free again — to stop selling but keep the link, update its status to archived instead. An unknown id, or one from another organization or workspace, answers 404.
Required scope: checkout.write (Manage checkout links).
path Parameters
idCheckout link UUID
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Delete a checkout link › Responses
No Content
Update a checkout link
Merge-patches a checkout link: a field left out stays as it is. The nullable text fields (name, currency, success_url and the inherit defaults) are tri-state: null clears back to "inherit", a value sets it, and an empty string is refused. status archives the link (archived: its public page answers 404) or makes it active again. seat_policy and consent_config, when sent, replace the stored value.
Required scope: checkout.write (Manage checkout links).
path Parameters
idCheckout link UUID
query Parameters
includeExtra data to add to the response: seat_policy. Send a comma-separated list or repeat the parameter. An unknown name is refused with 400. seat_policy is sent without being asked until 2026-11-30; after that date it is sent only when named here.
Headers
X-Workspace-IdSelects the workspace this request operates in, by workspace UUID or slug (e.g. a sandbox workspace for test integrations). Omitted: the organization's default live workspace. Unknown workspace: 404; workspace outside your organization: 403. Discover workspaces via GET /workspaces.
Workspace UUID or slug.
Update a checkout link › Request Body
collect_addressWhether the checkout page asks for a postal address; omitted leaves it.
collect_phoneWhether the checkout page asks for a phone number; omitted leaves it.
collect_vat_idOlder switch for the VAT ID input, used only when vat_id_collection is not set; omitted leaves it.
Replaces the legal consent step; an empty object removes it, omitted leaves it.
coupon_codesWhether the checkout takes a coupon code; omitted leaves it.
currencyCurrency the checkout charges in; null clears it back to the organisation's default, omitted leaves it.
deemed_supplier_regimeThe platform rule under which a platform operator accounts for the tax; empty sets that no rule applies, omitted leaves it.
default_payment_terms_daysPayment terms in days (0 to 365) for the customer a checkout creates; omitted leaves it.
default_preferred_providerPayment provider new customers prefer, for example stripe, gocardless, mollie or kontier_payments; null clears it back to the organization's default, omitted leaves it.
default_wallet_modeWallet mode of the customer a checkout creates; null clears it back to the organization's default, omitted leaves it.
Requests also accept the new spelling: each value in lower case (postpaid for POSTPAID). The listed spelling is deprecated in requests and accepted until 2026-11-30.
metadataFree-form JSON that replaces the stored metadata; omitted leaves it.
nameInternal name; null clears it, omitted leaves it.
Replaces all per-product seat rules; an empty list removes them, omitted leaves them.
statusactive serves the public checkout page, archived stops serving it; omitted leaves it.
success_urlWhere the buyer lands after paying; null clears it, omitted leaves it.
tax_inclusiveWhether the checkout page first shows prices including tax; omitted leaves it.
trial_daysFree trial days the new subscription starts with; omitted leaves it.
vat_id_collectionWhether the checkout page shows the VAT ID input, and whether the buyer must fill it; null clears it back to the organization's setting, omitted leaves it.
Update a checkout link › Responses
OK