Billie is a Berlin-based B2B "buy now, pay later" (BNPL) payment provider that lets merchants offer business buyers invoice purchase, pay-after-delivery, and installment terms at checkout while Billie assumes the credit and fraud risk and pays the merchant out. Its Payment API v2 (paella.billie.io) uses OAuth 2.0 client-credentials and covers checkout sessions, a hosted payment page, direct backend order creation, order management, captures (invoicing), payment confirmation, refunds/credit notes, and a webhook event surface. Billie also ships an embeddable checkout widget, a PHP SDK, e-commerce plugins (Shopware, Magento, WooCommerce, JTL), and partner routes via Klarna, Mollie, Adyen, Stripe, and Kustom. Backed by Creandum and Speedinvest.
Billie publishes 5 API contracts indexed on the APIs.io network, including Authentication API, Back-end Order Creation API, Captures API, and 2 more. Tagged areas include Company, Fintech, Payments, Buy Now Pay Later, and B2B.
The Billie catalog on APIs.io includes 1 event-driven AsyncAPI specification, 1 JSON-LD context, and 1 Spectral governance ruleset.
Billie’s developer surface includes documentation, API reference, getting-started guide, authentication, sandbox, support, engineering blog, and 34 more developer resources.
Regulatory Posture applies to this provider. Its tags matched the
Payments regime, so
Regulatory Posture carries 15 points of the composite.
If this regime is wrong for your business, say so on your
provider repo — the
applicability map is public and we will correct it.
Create-or-Update Ergonomics applies to this provider. This API accepts writes, so it
carries 10 points of the composite. It is scored from the published contracts
themselves: whether a caller can create-or-update in one call, whether the write accepts a key the caller already
holds, and whether the response says which branch ran. Without that, every write needs a search-and-branch in
front of it, and the first time that check is skipped a duplicate record is created.
Scored against the observed mean rather than raw — a provider at the catalog average is unchanged by this facet,
not penalised by it.
The six quality facets above are damped to 75 points between them,
because the conditional facet above carries the other
25. That is why each facet's contribution is shown against a damped
maximum: raising a quality facet moves the composite by 75% of its nominal
weight, not 100%. The full arithmetic is at apis.io/rating/.
Show this score on your site.
It updates itself when the score changes. Paste this where you link to your API docs:
<a href="https://apis.io/providers/billie/"><img src="https://apis.io/badge/billie/card.svg" alt="Billie on APIs.io — Kin Score by API Evangelist"></a>
Other styles, a README pill and a shields.io endpoint are on the badge page.
Raise your score.
Agent readiness — checks not met, largest first (exact, from this profile):
MCP Server+12 pts — deployment.mode + probe verdict on the mcp/ manifest, not the pointer; an unprobed slug falls back to authorship
Idempotency+9 pts — OpenAPI mutating operations declare an idempotency key — a header, a request-body property, or a named de-duplication token whose own description says so (verified); else common[].type matches /idempoten/i (documented)
A2A Agent Card+8 pts — a2a/-a2a.yml manifest, graded on conformance.grade against A2A 1.0.0
Rate-Limit Signaling+7 pts — OpenAPI responses document X-RateLimit-* / RateLimit headers (verified), else a rate_limits artifact or RateLimits link (documented)
Delegated User Identity+6 pts — a served discovery document listing authorization_code in grant_types_supported (served), else an oauth2 authorizationCode flow or openIdConnect declared in an OpenAPI (documented)
6 more unmet checks in the Agent Readiness table above.
Kin Score — facets with the most composite points still available (weight × headroom):
Access Clarityscores 17.1 — up to +16.6 composite points
The Kin Score Market layer reads a provider inside its market:
its position, and how deep its integrations go. Depth is only comparable within a position. Provisional and unweighted:
not part of the Kin Score or agent readiness.
Registered MCP server and declares compatibility are report only — not weighted.
Undeclared means we found nothing we can read, so there is no number: we never infer integrations.
Standards this provider implements or carries. De facto ones are profiled and measured by the API Commons; formal ones come from the standards directory and are linked by the provider's own tags. The evidence column says how each claim was established — not that it was made.
This API uses OAuth 2.0 for secure authentication. Different keys are used for the `sandbox` and `production` environments. Both systems operate completely independent, however ...
## To integrate the Billie checkout widget, the following steps are required: 1. Add the Billie checkout widget bundle to your checkout page 2. Provide config data _(with the `s...
aid: billie
deliveryModel:
model: saas
open_source: false
commercial: true
callable_host: false
label: Hosted service · you call their endpoint
confidence: medium
source:
- pricing
generated: '2026-08-28'
method: derived
accessModel:
pricing: unknown
onboarding: self-serve
trial: false
try_now: false
public: false
gated: none
gated_source:
- onboarding
label: Self-serve signup
confidence: medium
source:
- authentication
- security
- sandbox
generated: '2026-11-02'
method: derived
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/icons/billie.png
name: Billie
description: Billie is a Berlin-based B2B "buy now, pay later" (BNPL) payment provider that lets merchants offer business
buyers invoice purchase, pay-after-delivery, and installment terms at checkout while Billie assumes the credit and fraud
risk and pays the merchant out. Its Payment API v2 (paella.billie.io) uses OAuth 2.0 client-credentials and covers checkout
sessions, a hosted payment page, direct backend order creation, order management, captures (invoicing), payment confirmation,
refunds/credit notes, and a webhook event surface. Billie also ships an embeddable checkout widget, a PHP SDK, e-commerce
plugins (Shopware, Magento, WooCommerce, JTL), and partner routes via Klarna, Mollie, Adyen, Stripe, and Kustom. Backed
by Creandum and Speedinvest.
url: https://raw.githubusercontent.com/api-evangelist/billie/refs/heads/main/apis.yml
x-type: company
x-source: vc-portfolio
x-backed-by:
- creandum
- speedinvest
x-tier: stub
x-tier-reason: portfolio-lead
specificationVersion: '0.23'
created: '2026-07-17'
modified: '2026-07-18'
x-docs-platform: readme
x-docs-platform-confidence: high
x-docs-platform-checked: 2026-09-20
tags:
- Company
- Fintech
- Payments
- Buy Now Pay Later
- B2B
- Invoicing
- Checkout
- Germany
tags_raw:
- Company
- Fintech
- Payments
- BNPL
- Buy Now Pay Later
- B2B
- Invoicing
- Checkout
- Germany
maintainers:
- FN: Kin Lane
email: kin@apievangelist.com
- FN: APIs.json
email: info@apis.io
common:
- type: AgenticAccess
url: agentic-access/billie-agentic-access.yml
- type: Spectral
url: rules/billie-rules.yml
- type: JSONLD
url: json-ld/billie-context.jsonld
- type: Vocabulary
url: vocabulary/billie-vocabulary.yml
- type: Hosts
url: hosts/billie-hosts.yml
- type: Vendors
url: vendors/billie-vendors.yml
- type: OAuthScopes
url: scopes/billie-scopes.yml
- type: VulnerabilityDisclosure
url: security/billie-vulnerability-disclosure.yml
- type: Security
url: https://billie.io/coordinated-vulnerability-disclosure-policy
- type: DomainSecurity
url: security/billie-domain-security.yml
- type: Website
url: https://www.billie.io/
- type: DeveloperPortal
url: https://docs.billie.io/
- type: Documentation
url: https://docs.billie.io/
- type: APIReference
url: https://docs.billie.io/reference/integration-checklist
- type: GettingStarted
url: https://docs.billie.io/docs/get-started-with-billies-api-integration
- type: Authentication
url: authentication/billie-authentication.yml
- type: SDKs
url: packages/billie-packages.yml
- type: Packages
url: packages/billie-packages.yml
- type: Sandbox
url: sandbox/billie-sandbox.yml
- type: Webhooks
url: asyncapi/billie-webhooks.yml
- type: X-MCPServerCandidate
url: mcp/billie-mcp.yml
note: 'Renamed from MCPServer 2026-09-03 (roadmap#247): the manifest self-describes as status: candidate — a tool list derived
from the published API contracts, not an existing server. The scorer already read the manifest and reported mcp_server
correctly; the MCPServer type was crediting the artifact-type surfaces with a server that does not exist.'
- type: AgentSkill
url: skills/_index.yml
- type: LLMsTxt
url: llms/billie-llms.txt
- type: WellKnown
url: well-known/billie-well-known.yml
- type: SecurityTxt
url: well-known/billie-security.txt
- type: Conventions
url: conventions/billie-conventions.yml
- type: DeclineCodes
url: errors/billie-decline-codes.yml
- type: ErrorCatalog
url: errors/billie-problem-types.yml
- type: Lifecycle
url: lifecycle/billie-lifecycle.yml
- type: StatusPage
url: https://status.billie.io/
- type: Conformance
url: conformance/billie-conformance.yml
- type: DataModel
url: data-model/billie-data-model.yml
- type: Components
url: components/billie-components.yml
- type: Support
url: https://help.billie.io/merchant/s/
- type: HelpCenter
url: https://help.billie.io/merchant/s/
- type: Blog
url: https://www.billie.io/blog
- type: GitHubOrganization
url: https://github.com/ozean12
- type: SignUp
url: https://dashboard.billie.io/public/registration
- type: Login
url: https://dashboard.billie.io/public/login
- type: PrivacyPolicy
url: https://www.billie.io/datenschutz
- type: Imprint
url: https://www.billie.io/impressum
apis:
- aid: billie:billie-authentication-api
name: Billie Authentication API
description: "This API uses OAuth 2.0 for secure authentication. \n\nDifferent keys are used for the `sandbox` and `production`\
\ environments. Both systems operate completely independent, however both show largely \nthe same response behaviour.\
\ The major difference is that sandbox does not trigger any payment events (payout to merchant, repayment \nby debtors,\
\ etc.). To obtain your credentials for both environments please contact Billie's merchant integration support \nvia telephone\
\ ( [+49-30-120872485](tel:+4930120872485) ) or email ( pad@billie.io ).\n\nThis authentication mechanism is based on\
\ the OAuth 2.0 protocol and requires a Client ID and a Client Secret Key (client credentials).\n\nBefore triggering any\
\ API call, a so called JSON web token (JWT) must be requested through the `oauth/token` endpoint described below\nby\
\ using your client credentials.\nIn all following requests / API calls, this JWT token is used for authorization and\
\ must be passed as type \"Bearer\" token \nin the Authorization header. Example: `Authorization: Bearer eyJhbGciOiJIUzI...`\n\
\nRenewal of the bearer token / JWT:\n\nEvery token expires automatically after 8 hours. After expiration of an existing\
\ token a new token must be requested through the \n`POST oauth/token` endpoint. Implementation best practice is to always\
\ try sending API calls first with the previously stored token. \nSending API calls with an expired token will be answered\
\ with an `HTTP 401` (Unauthorized request or invalid credentials) response.\n\nAfter receiving the `401` error you will\
\ simply need to request a new token by triggering again the `oauth/token` endpoint. \nAfter receiving the new valid token,\
\ resend the previously failed API call. This procedure allows for optimal API interaction, \nensures reduced system load\
\ on both ends, and is easy to implement as you don't need to keep track of token expiration times.\n\nThere is another\
\ endpoint available for checking if a token is still valid or not: `GET oauth/token`."
humanURL: https://docs.billie.io/reference/integration-checklist
baseURL: https://paella.billie.io/api/v2
tags:
- Authentication
properties:
- type: OpenAPI
url: openapi/billie-authentication-api-openapi.yml
- type: Documentation
url: https://docs.billie.io/
- type: APIReference
url: https://docs.billie.io/reference/integration-checklist
- type: Authentication
url: authentication/billie-authentication.yml
- type: Webhooks
url: asyncapi/billie-webhooks.yml
- type: Sandbox
url: sandbox/billie-sandbox.yml
- type: DeclineCodes
url: errors/billie-decline-codes.yml
- type: ErrorCatalog
url: errors/billie-problem-types.yml
- type: Conventions
url: conventions/billie-conventions.yml
- type: Lifecycle
url: lifecycle/billie-lifecycle.yml
- type: Conformance
url: conformance/billie-conformance.yml
- type: DataModel
url: data-model/billie-data-model.yml
- type: X-MCPServerCandidate
url: mcp/billie-mcp.yml
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-ecommerce-schema.json
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-telesales-schema.json
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-instore-schema.json
- type: JSONSchema
url: json-schema/billie-get-invoice-response-schema.json
- type: JSONSchema
url: json-schema/billie-order-schema.json
- type: JSONSchema
url: json-schema/billie-create-order-request-schema.json
- aid: billie:billie-back-end-order-creation-api
name: Billie Back-end Order Creation API
description: The Back-end Order Creation API from Billie — 2 operation(s) for back-end order creation.
humanURL: https://docs.billie.io/reference/integration-checklist
baseURL: https://paella.billie.io/api/v2
tags:
- Back-end Order Creation
properties:
- type: OpenAPI
url: openapi/billie-back-end-order-creation-api-openapi.yml
- type: Documentation
url: https://docs.billie.io/
- type: APIReference
url: https://docs.billie.io/reference/integration-checklist
- type: Authentication
url: authentication/billie-authentication.yml
- type: Webhooks
url: asyncapi/billie-webhooks.yml
- type: Sandbox
url: sandbox/billie-sandbox.yml
- type: DeclineCodes
url: errors/billie-decline-codes.yml
- type: ErrorCatalog
url: errors/billie-problem-types.yml
- type: Conventions
url: conventions/billie-conventions.yml
- type: Lifecycle
url: lifecycle/billie-lifecycle.yml
- type: Conformance
url: conformance/billie-conformance.yml
- type: DataModel
url: data-model/billie-data-model.yml
- type: X-MCPServerCandidate
url: mcp/billie-mcp.yml
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-ecommerce-schema.json
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-telesales-schema.json
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-instore-schema.json
- type: JSONSchema
url: json-schema/billie-get-invoice-response-schema.json
- type: JSONSchema
url: json-schema/billie-order-schema.json
- type: JSONSchema
url: json-schema/billie-create-order-request-schema.json
- aid: billie:billie-captures-api
name: Billie Captures API
description: The Captures API from Billie — 5 operation(s) for captures.
humanURL: https://docs.billie.io/reference/integration-checklist
baseURL: https://paella.billie.io/api/v2
tags:
- Capture
tags_raw:
- Captures
properties:
- type: OpenAPI
url: openapi/billie-captures-api-openapi.yml
- type: Documentation
url: https://docs.billie.io/
- type: APIReference
url: https://docs.billie.io/reference/integration-checklist
- type: Authentication
url: authentication/billie-authentication.yml
- type: Webhooks
url: asyncapi/billie-webhooks.yml
- type: Sandbox
url: sandbox/billie-sandbox.yml
- type: DeclineCodes
url: errors/billie-decline-codes.yml
- type: ErrorCatalog
url: errors/billie-problem-types.yml
- type: Conventions
url: conventions/billie-conventions.yml
- type: Lifecycle
url: lifecycle/billie-lifecycle.yml
- type: Conformance
url: conformance/billie-conformance.yml
- type: DataModel
url: data-model/billie-data-model.yml
- type: X-MCPServerCandidate
url: mcp/billie-mcp.yml
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-ecommerce-schema.json
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-telesales-schema.json
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-instore-schema.json
- type: JSONSchema
url: json-schema/billie-get-invoice-response-schema.json
- type: JSONSchema
url: json-schema/billie-order-schema.json
- type: JSONSchema
url: json-schema/billie-create-order-request-schema.json
- aid: billie:billie-front-end-order-creation-api
name: Billie Front-end Order Creation API
description: "## To integrate the Billie checkout widget, the following steps are required:\n\n1. Add the Billie checkout\
\ widget bundle to your checkout page\n2. Provide config data _(with the `session_id` from the server-side integration)_\n\
3. Provide order details and call the mount method\n4. Handle the widget responses\n\n<br>\n\n<strong>This section provides\
\ a step-by-step guide of the setup process.</strong>\n\n<br>\n\n### 1. Include Billie Checkout Widget Bundle into your\
\ Checkout Page\n\nOn the checkout page, the following code snippet must be included:\n\n```html\n<script>\nvar bcwSrc\
\ = 'https://static-paella-sandbox.billie.io/checkout/billie-checkout.js';\n(function(w,d,s,o,f,js,fjs){\n w['BillieCheckoutWidget']=o;w[o]=w[o]||function(){(w[o].q=w[o].q||[]).push(arguments)};\n\
\ w.billieSrc=f;js=d.createElement(s);fjs=d.getElementsByTagName(s)[0];js.id=o;\n js.src=f;js.charset='utf-8';js.async=1;fjs.parentNode.insertBefore(js,fjs);bcw('init');\n\
}(window,document,'script','bcw', bcwSrc));\n</script>\n```\n\nThe URL contained in `bcwSrc` specifies whether you are\
\ using the Sandbox or Production environment:\n\nSandbox: <https://static-paella-sandbox.billie.io/checkout/billie-checkout.js>\n\
\nProduction: <https://static.billie.io/checkout/billie-checkout.js>\n\nThe code snippet above injects our checkout script\
\ into the `head` of the webshop. This will download our widget bundle code and enable function calls to interact with\
\ the widget.\n\nIt is **strongly recommended** to add this code snippet as high as possible in the document head to ensure\
\ that the widget download completes as soon as possible, providing a smooth user experience.\n\n<br>\n\n### 2. Provide\
\ Config Data\n\nDuring initialization of the widget, the `session_id` is required. This can be obtained by calling [Checkout\
\ Session Create](#operation/checkout_session_create) from your backend and exposing it to the frontend. The `session_id`\
\ will be unique per order.\n\n```html\n<script>\nconst billie_config_data = {\n 'session_id': ':YOUR_SESSION_ID',\n\
\ 'merchant_name': ':YOUR_NAME'\n}\n</script>\n```\n\nThe `session_id` is needed to approve the order and should be\
\ known before mounting the widget.\n\nIdeally, if you are using server-side rendering, this piece of code should be inserted\
\ into the document head with prefilled values. Otherwise please ensure there is an [XHR request](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest)\
\ as early as possible to your backend to retrieve the `session_id`.\n\nFor a guideline how to present Billie as payment\
\ method please refer to the [Checkout Design Guide](https://docs.billie.io/reference/billie-payment-brand-guide).\n\n\
<br>\n\n### 3. Provide Order Details and Call Mount Method\n\nOnce the user reviews their checkout basket and is ready\
\ to pay, they can click on the **Pay with Billie** button. When this happens, Billie expects the `mount` method to be\
\ called. If you want to offer payments with direct debit you can pass an **optional** `billie_widget_options` object\
\ containing `payment_method`. The easiest integration option is to inline the function call directly on the button, for\
\ example:\n\n```html\n<script>\nfunction payWithBillie() {\n // prepare / get all the data and assign it to billie_order_data,\
\ please refer to 3a section\n BillieCheckoutWidget.mount({\n billie_config_data: billie_config_data, \n billie_order_data:\
\ billie_order_data,\n\n // not required additional options, please refer to 3c section\n billie_widget_options:\
\ {\n payment_method: payment_method\n }\n })\n .then(function success(ao) {\n // code to execute when\
\ approved order\n // console.log('Approved order', ao);\n })\n .catch(function failure(err) {\n // code to\
\ execute when there is an error or when order is rejected\n // console.log('Error occurred', err);\n });\n}\n</script>\n\
<button onclick=\"payWithBillie()\"> Pay with Billie </button>\n```\n\n`BillieCheckoutWidget` is a JavaScript promise\
\ which can accept optional `then` and `catch` methods. They can be added if the webshop needs to perform an action based\
\ on the outcome of the order authorization.\n\nThe `then` block will receive as a parameter the object with the authorized\
\ order details.\n\nThe `catch` block will receive the error object with reasons why the order creation was rejected.\n\
\n#### 3.a Mount Method Parameters\n\n`BillieCheckoutWidget.mount` expects three parameters:\n\n- `billie_config_data`\
\ is the object received in step two which includes the `session_id` and `merchant_name`\n- `billie_order_data` is a\
\ collection of order data from the user\n- `billie_widget_options` **[optional]** is an object which includes `payment_method`\n\
\n#### 3.b Order Data Object\n\nThe order data object must contain all information about an order, in the following format\
\ (required values are marked with a \\*):\n\n- `amount` [object]\\*\n - `gross` [float]\\* `> 0`\n - `tax` [float]\\\
* `>= 0`\n - `net` [float]\\* `> 0`\n- `duration` [integer]\\* `[7...120]`\n- `delivery_address` [object]\\*\n - `street`\
\ [string]\\* `<= 255 characters`\n - `house_number` _[string]_ `<= 255 characters`\n - `addition` _[string]_ `<= 255\
\ characters`\n - `city` [string]\\* `<= 255 characters`\n - `postal_code` [string]\\* \n - `country` [string]\\* `2\
\ characters` `^[A-Za-z]{2}$`\n- `debtor_company` [object]\\*\n - `name` [string]\\* `<= 255 characters`\n - `established_customer`\
\ _[boolean]_ \n - `address_street` [string]\\* `<= 255 characters`\n - `address_house_number` [string]\\* `<= 255 characters`\n\
\ - `address_addition` _[string]_ `<= 255 characters`\n - `address_city` [string]\\* `<= 255 characters`\n - `address_postal_code`\
\ [string]\\* `5 characters` `^[0-9]{5}$`\n - `address_country` [string]\\* `2 characters` `^[A-Za-z]{2}$`\n- `debtor_person`\
\ [object]\\*\n - `salutation` [string] `1 character` `[\"m\" / \"f\"]`\n - `first_name` _[string]_ `<= 255 characters`\n\
\ - `last_name` _[string]_ `<= 255 characters`\n - `phone_number` _[string]_ `>= 5 characters`, `<= 20 characters` `^(\\\
+|\\d|\\()[ \\-\\/0-9()]{5,20}$`\n - `email` [string]\\* `<= 255 characters` `valid email`\n- `line_items` [array of\
\ objects]\\*\n - `external_id` _[string]_ `<= 255 characters`\n - `title` [string]\\* `<= 255 characters`\n - `description`\
\ _[string]_ `<= 255 characters`\n - `quantity` [integer]\\* `>= 1`\n - `category` _[string]_ `<= 255 characters`\n\
\ - `brand` _[string]_ `<= 255 characters`\n - `gtin` _[string]_ `<= 255 characters`\n - `mpn` _[string]_ `<= 255 characters`\n\
\ - `amount` [object]\\*\n - `gross` [float]\\* `> 0`\n - `tax` [float]\\* `>= 0`\n - `net` [float]\\* `> 0`\n\
\nBelow you can find an example of `orderData` object in javascript:\n\n```javascript\nconst billie_order_data = {\n\"\
amount\": { \"net\": 100, \"gross\": 100, \"tax\": 0 },\n\"comment\": \"string\",\n\"duration\": 30,\n\"delivery_address\"\
: {\n \"house_number\": \"string\",\n \"street\": \"string\",\n \"city\": \"string\",\n \"postal_code\": \"\
10000\",\n \"country\": \"DE\",\n \"addition\": \"string\"\n},\n\"debtor_company\": {\n \"name\": \"string\"\
,\n \"established_customer\": false,\n \"address_house_number\": \"string\",\n \"address_street\": \"string\"\
,\n \"address_city\": \"string\",\n \"address_postal_code\": \"10000\",\n \"address_country\": \"DE\",\n \"\
address_addition\": \"string\"\n},\n\"debtor_person\": {\n \"salutation\": \"m\",\n \"first_name\": \"string\",\n\
\ \"last_name\": \"string\",\n \"phone_number\": \"030 31199251\",\n \"email\": \"james.smith@example.com\"\n\
},\n\"line_items\": [\n {\n \"external_id\": \"string\",\n \"title\": \"string\",\n \"description\": \"string\"\
,\n \"quantity\": 1,\n \"category\": \"string\",\n \"brand\": \"string\",\n \"gtin\": \"string\",\n \"\
mpn\": \"string\",\n \"amount\": { \"net\": 100, \"gross\": 100, \"tax\": 0 },\n }\n // , ...\n]\n};\n```\n\n\
#### 3.c Widget Options\n\nAn **optional** collection of additional options to pass to the widget\n\n- `payment_method`\
\ **[string]** \n Enum: `invoice` `direct_debit` \n Default: `invoice`\n\n<br>\n\n### 4. Handle Widget Responses\n\
\nWhen submitted, the checkout widget will evaluate if an order with the given data can be accepted. \n\n- If an order\
\ cannot be accepted, the widget will return the state `declined` with a specified `decline_reason`\n- If an order can\
\ be accepted immediately the widget will return the state `authorized`. \n- It is also possible that some additional\
\ checks need to be conducted by Billie in order to accept the order. In this case the widget will return the state `pre_waiting`.\
\ \n\nIn both `authorized` and `pre_waiting` states the `checkout-session-confirm` call must be used to confirm the order\
\ creation. \n\n#### Response\n\nAfter submitting the widget, following data will be returned to either `then` or `catch`\
\ block:\n\n- `state` **[string]** `<= 255 characters` \n Enum: `authorized` `declined` `pre_waiting`\n- `decline_reason`\
\ **[string]** `<= 255 characters` \n Enum: `validation_error` `risk_policy` `debtor_not_identified` `debtor_address`\
\ `risk_scoring_failed` `debtor_limit_exceeded` `unknown_error`\n- `validation_error_source` **[string]** `<= 255 characters`\n\
- `debtor_company` **[object]** \n- `name` **[string]** `<= 255 characters`\n- `address_street` **[string]** `<= 255\
\ characters`\n- `address_house_number` **[string]** `<= 255 characters`\n- `address_city` **[string]** `<= 255 characters`\n\
- `address_postal_code` **[string]** `5 characters` `^[0-9]{5}$`\n- `address_country` **[string]** `2 characters` `^[A-Za-z]{2}$`\n\
\n_**Special note**_ \n\n- `decline_reason` will be set only when `state` value is `declined`\n- `validation_error_source`\
\ will be set only when `decline_reason` value is `validation_error`. We will fill this property with information to help\
\ you find which fields are failing validation checks."
humanURL: https://docs.billie.io/reference/integration-checklist
baseURL: https://paella.billie.io/api/v2
tags:
- Front-end Order Creation
properties:
- type: OpenAPI
url: openapi/billie-front-end-order-creation-api-openapi.yml
- type: Documentation
url: https://docs.billie.io/
- type: APIReference
url: https://docs.billie.io/reference/integration-checklist
- type: Authentication
url: authentication/billie-authentication.yml
- type: Webhooks
url: asyncapi/billie-webhooks.yml
- type: Sandbox
url: sandbox/billie-sandbox.yml
- type: DeclineCodes
url: errors/billie-decline-codes.yml
- type: ErrorCatalog
url: errors/billie-problem-types.yml
- type: Conventions
url: conventions/billie-conventions.yml
- type: Lifecycle
url: lifecycle/billie-lifecycle.yml
- type: Conformance
url: conformance/billie-conformance.yml
- type: DataModel
url: data-model/billie-data-model.yml
- type: X-MCPServerCandidate
url: mcp/billie-mcp.yml
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-ecommerce-schema.json
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-telesales-schema.json
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-instore-schema.json
- type: JSONSchema
url: json-schema/billie-get-invoice-response-schema.json
- type: JSONSchema
url: json-schema/billie-order-schema.json
- type: JSONSchema
url: json-schema/billie-create-order-request-schema.json
- aid: billie:billie-order-management-api
name: Billie Order Management API
description: The Order Management API from Billie — 2 operation(s) for order management.
humanURL: https://docs.billie.io/reference/integration-checklist
baseURL: https://paella.billie.io/api/v2
tags:
- Order Management
properties:
- type: OpenAPI
url: openapi/billie-order-management-api-openapi.yml
- type: Documentation
url: https://docs.billie.io/
- type: APIReference
url: https://docs.billie.io/reference/integration-checklist
- type: Authentication
url: authentication/billie-authentication.yml
- type: Webhooks
url: asyncapi/billie-webhooks.yml
- type: Sandbox
url: sandbox/billie-sandbox.yml
- type: DeclineCodes
url: errors/billie-decline-codes.yml
- type: ErrorCatalog
url: errors/billie-problem-types.yml
- type: Conventions
url: conventions/billie-conventions.yml
- type: Lifecycle
url: lifecycle/billie-lifecycle.yml
- type: Conformance
url: conformance/billie-conformance.yml
- type: DataModel
url: data-model/billie-data-model.yml
- type: X-MCPServerCandidate
url: mcp/billie-mcp.yml
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-ecommerce-schema.json
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-telesales-schema.json
- type: JSONSchema
url: json-schema/billie-hpp-checkout-session-instore-schema.json
- type: JSONSchema
url: json-schema/billie-get-invoice-response-schema.json
- type: JSONSchema
url: json-schema/billie-order-schema.json
- type: JSONSchema
url: json-schema/billie-create-order-request-schema.json
x-enrichment:
date: '2026-07-19'
status: backfilled
pass: local-v1
note: backfilled from .gitignore signal + verified work evidence
x-readme-harvest:
date: '2026-10-14'
ops: 18
tool: harvest-readme-openapi.py
portal: https://docs.billie.io
Billie API — frequently asked questions
Does Billie have an API?
Yes. APIs.io lists 5 APIs from Billie, including Billie Authentication API, Billie Back-end Order Creation API and Billie Captures API, and 2 more.
Is there an OpenAPI specification for the Billie API?
Yes. APIs.io indexes 5 OpenAPI specifications for Billie, each linked for download from this page.
How do I authenticate with the Billie API?
Billie uses bearer-token authentication (oauth2 · 1 scheme). The details are profiled on APIs.io as Billie Authentication.
Is the Billie API ready for AI agents?
Billie has a Kin Score of 49.4 out of 100 (developing) and an Agent Readiness score of 30.0 (agent-ready), scored by API Evangelist on 2026-11-02.
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.