Billie Order Management API

The Order Management API from Billie — 2 operation(s) for order management.

Operations 3

GET /orders/{id} Get Order Details #
POST /orders/{id} Update Order #
POST /orders/{id}/cancel Cancel Order #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/billie:billie-order-management-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

billie-order-management-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Billie Direct Order Management API
  description: '# Introduction


    With PayAfterDelivery (PAD) / "Rechnungskauf" Billie offers a convenient, secure and simple way to allow your

    B2B-customers to pay on invoice.'
  termsOfService: https://www.billie.io/agb/
  license:
    name: © Billie GmbH, 2020
    url: https://www.billie.io/agb/
  version: v2025.11
  x-logo:
    url: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjAuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkViZW5lXzJfS29waWUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIKCSB5PSIwcHgiIHZpZXdCb3g9IjAgMCA0OC41IDY3LjYiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ4LjUgNjcuNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtkaXNwbGF5Om5vbmU7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDo3O3N0cm9rZS1taXRlcmxpbWl0OjEwO30KCS5zdDF7ZmlsbDojMUYyNTMwO30KCS5zdDJ7ZmlsbDpub25lO30KCS5zdDN7ZGlzcGxheTpub25lO2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyAgICA7fQoJLnN0NHtmb250LWZhbWlseTonQXZlbmlyTmV4dC1EZW1pQm9sZCc7fQoJLnN0NXtmb250LXNpemU6My4wMzAzcHg7fQoJLnN0NntsZXR0ZXItc3BhY2luZzoyO30KPC9zdHlsZT4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkuOCw0Ni4xYy0wLjUsMCwyNS4xLTEyLjYsMjUuMS0zMi43YzAtNi45LTUuNi0xMi42LTEyLjYtMTIuNlM5LjcsNi41LDkuNywxMy40TDkuOCw0Ni4xaDE4LjUKCWM2LjksMCwxMi42LTUuNiwxMi42LTEyLjZTMzUuMiwyMSwyOC4yLDIxSDkuNyIvPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yOC4yLDQ3SDguOHYtMC44YzAtMC4xLDAtMC4yLDAtMC4zVjEzLjVDOC44LDYsMTQuOSwwLDIyLjMsMHMxMy41LDYsMTMuNSwxMy41YzAsMi44LTAuNSw1LjUtMS40LDguMgoJCWM0LjMsMi4yLDcuMyw2LjcsNy4zLDExLjlDNDEuNyw0MSwzNS42LDQ3LDI4LjIsNDd6IE0xMi45LDQ1LjJoMTUuM2M2LjQsMCwxMS43LTUuMywxMS43LTExLjdjMC00LjQtMi41LTguMy02LjEtMTAuMwoJCWMtMS44LDQuNC00LjgsOC43LTksMTIuOEMyMC40LDQwLjQsMTUuOCw0My41LDEyLjksNDUuMnogTTEwLjYsMjEuOXYyMi43YzEzLTcuNywxOC45LTE1LjYsMjEuNS0yMmMtMS4yLTAuNC0yLjUtMC43LTMuOS0wLjdIMTAuNgoJCXogTTEwLjYsMjAuMWgxNy42YzEuNiwwLDMuMSwwLjMsNC41LDAuOGMxLTIuOSwxLjMtNS41LDEuMy03LjRDMzQsNywyOC44LDEuOCwyMi4zLDEuOFMxMC42LDcsMTAuNiwxMy41VjIwLjF6Ii8+CjwvZz4KPHJlY3QgeD0iLTExLjEiIHk9Ii01OC43IiBjbGFzcz0ic3QyIiB3aWR0aD0iODUuNCIgaGVpZ2h0PSI0OS41Ii8+Cjx0ZXh0IHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgLTEuMDQyNCA2Ny41NzcyKSIgY2xhc3M9InN0MyBzdDQgc3Q1IHN0NiI+QklMTElFPC90ZXh0Pgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0wLDU4LjFoMy43YzAuNCwwLDAuNywwLjEsMS4xLDAuMWMwLjQsMC4xLDAuNywwLjIsMC45LDAuNGMwLjMsMC4yLDAuNSwwLjQsMC43LDAuN2MwLjIsMC4zLDAuMywwLjcsMC4zLDEuMQoJCWMwLDAuNS0wLjIsMS0wLjUsMS4zYy0wLjMsMC40LTAuNywwLjYtMS4yLDAuOHYwYzAuNiwwLjEsMS4xLDAuMywxLjUsMC43QzYuOCw2My42LDcsNjQuMiw3LDY0LjhjMCwwLjUtMC4xLDEtMC4zLDEuMwoJCWMtMC4yLDAuNC0wLjUsMC42LTAuOCwwLjljLTAuMywwLjItMC43LDAuNC0xLjIsMC41Yy0wLjQsMC4xLTAuOSwwLjItMS4zLDAuMkgwQzAsNjcuNiwwLDU4LjEsMCw1OC4xeiBNMS43LDYyaDEuNQoJCWMwLjYsMCwxLTAuMSwxLjMtMC4zYzAuMy0wLjIsMC40LTAuNSwwLjQtMWMwLTAuNC0wLjItMC43LTAuNS0wLjljLTAuMy0wLjItMC44LTAuMy0xLjQtMC4zSDEuN0wxLjcsNjJMMS43LDYyeiBNMS43LDY2LjFoMS41CgkJYzAuMiwwLDAuNSwwLDAuNy0wLjFzMC41LTAuMSwwLjctMC4yYzAuMi0wLjEsMC40LTAuMywwLjUtMC40YzAuMS0wLjIsMC4yLTAuNCwwLjItMC44YzAtMC41LTAuMi0wLjktMC41LTEKCQljLTAuMy0wLjItMC45LTAuMy0xLjUtMC4zSDEuN1Y2Ni4xeiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTExLjEsNTguMWgxLjd2OS41aC0xLjdWNTguMXoiLz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xNy4zLDU4LjFoMS43djhoNHYxLjVoLTUuN1Y1OC4xeiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTI2LjUsNTguMWgxLjd2OGg0djEuNWgtNS43TDI2LjUsNTguMUwyNi41LDU4LjF6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNMzUuNyw1OC4xaDEuN3Y5LjVoLTEuN1Y1OC4xeiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTQxLjksNTguMWg2LjN2MS41aC00LjZWNjJINDh2MS40aC00LjNWNjZoNC44djEuNWgtNi41VjU4LjF6Ii8+CjwvZz4KPC9zdmc+Cg==
    href: '#'
servers:
- url: https://paella-sandbox.billie.io/api/v2
  description: Test Sandbox API
- url: https://paella.billie.io/api/v2
  description: Production API
tags:
- name: Order Management
paths:
  /orders/{id}:
    get:
      tags:
      - Order Management
      summary: Get Order Details
      description: '**Purpose:**


        Retrieves full information about an order.


        **Preconditions:**


        - `id`: The unique identifier of the order


        **Success:**


        - Response Code: `HTTP 200`'
      operationId: order_get_details_v2
      parameters:
      - name: id
        in: path
        description: The unique identifier of the order
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      responses:
        '200':
          description: Order details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
      - oauth2: []
    post:
      tags:
      - Order Management
      summary: Update Order
      description: '**Purpose:**


        Updates order information before capture.


        - Adding an external code that represents the order ID of the merchant if not already submitted previously.

        - Changes the order amount associated with the order.


        **Preconditions:**


        - `id`: The unique identifier of the order

        - order is in `state` `created` and does not already has ane `external_code` for an update of ''external_code`

        - order is in `state` `created` or `partially_shipped` for an update of the order amount


        **Success: **


        - Response Code: HTTP 204


        **Attention:**


        - The value provided under `external_code` (the order number from your backend) will be used by Billie in communication with the buyer after capture.

        - If an `external_code` was provided at *create order* or *confirm session* call the uptade order call will fail, if it is a different `external_code`.

        - Lowering the values under the `amount` object to equal the sum of all partial captures will result in the order state to transition from `partially_shipped` to `shipped`.

        - If the update order call increases the amount of the order, the increased amount will be subject to all checks and validations as a newly created order.

        - If any part of the update order call is failing, no changes to the original order will be applied.'
      operationId: order_update_v2
      parameters:
      - name: id
        in: path
        description: The unique identifier of the order.
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateOrderRequest'
      responses:
        '204':
          description: Order successfully updated
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
      - oauth2: []
  /orders/{id}/cancel:
    post:
      tags:
      - Order Management
      summary: Cancel Order
      description: '**Purpose:**


        Cancels an entire order. For cancellations after capture, please see Refunds.


        **Preconditions:**


        - `id`: The unique identifier of the order


        **Success:**


        - Response Code: `HTTP 204`'
      operationId: order_cancel_v2
      parameters:
      - name: id
        in: path
        description: The unique identifier of the order
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      responses:
        '204':
          description: Order successfully cancelled
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
      - oauth2: []
components:
  schemas:
    UpdateOrderRequest:
      title: Order Update with invoice Object
      properties:
        amount:
          $ref: '#/components/schemas/AmountDTO'
        external_code:
          $ref: '#/components/schemas/TinyText'
      type: object
    OrderDuration:
      title: Order Duration
      type: integer
      maximum: 120
      minimum: 1
      example: 30
    OrderInvoiceResponse:
      title: Order Entity
      properties:
        uuid:
          $ref: '#/components/schemas/UUID'
        invoice_number:
          type:
          - string
          - 'null'
        state:
          type:
          - string
          - 'null'
        payout_amount:
          type:
          - number
          - 'null'
          format: float
        amount:
          type: number
          format: float
        amount_net:
          type: number
          format: float
        amount_tax:
          type: number
          format: float
        outstanding_amount:
          type:
          - number
          - 'null'
          format: float
        pending_merchant_payment_amount:
          type:
          - number
          - 'null'
          format: float
        pending_cancellation_amount:
          type:
          - number
          - 'null'
          format: float
        fee_amount:
          type:
          - number
          - 'null'
          format: float
        fee_rate:
          type:
          - number
          - 'null'
          format: float
        due_date:
          type: string
          format: date
          example: '2019-03-20'
        created_at:
          type: string
          format: date
          example: '2019-03-20'
      type: object
    TaxedMoney:
      title: Amount with split values for net, gross and tax.
      required:
      - net
      - gross
      - tax
      properties:
        gross:
          description: Value greater than 0, with max. 2 decimals. It should equal to net + tax.
          type: number
          format: float
          minimum: 1
          example: 260.27
        net:
          description: Value greater than 0, with max. 2 decimals.
          type: number
          format: float
          minimum: 1
          example: 200.12
        tax:
          description: Value greater than or equal to 0, with max. 2 decimals.
          type: number
          format: float
          minimum: 0
          example: 60.15
      type: object
    PaymentMethodCollection:
      title: Eligible Payment Methods
      type: array
      items:
        $ref: '#/components/schemas/PaymentMethod'
    OrderDeclineReason:
      title: Order Decline Reason
      type: string
      enum:
      - risk_policy
      - risk_scoring_failed
      - debtor_not_identified
      - debtor_address
      - risk_scoring_failed
      - debtor_limit_exceeded
      example: debtor_not_identified
    Order:
      title: Order Entity
      properties:
        external_code:
          type:
          - string
          - 'null'
          example: C-10123456789-0001
        uuid:
          $ref: '#/components/schemas/UUID'
        state:
          $ref: '#/components/schemas/OrderStateV2'
        decline_reason:
          $ref: '#/components/schemas/OrderDeclineReason'
        amount:
          $ref: '#/components/schemas/TaxedMoney'
        unshipped_amount:
          $ref: '#/components/schemas/TaxedMoney'
        duration:
          $ref: '#/components/schemas/OrderDuration'
        created_at:
          $ref: '#/components/schemas/DateTime'
        delivery_address:
          $ref: '#/components/schemas/Address'
        debtor:
          $ref: '#/components/schemas/Debtor'
        invoices:
          type: array
          items:
            $ref: '#/components/schemas/OrderInvoiceResponse'
        selected_payment_method:
          type:
          - string
          - 'null'
          enum:
          - bank_transfer
          - direct_debit
          example: bank_transfer
        payment_methods:
          $ref: '#/components/schemas/PaymentMethodCollection'
      type: object
    Address:
      title: Address data are all required except house number.
      required:
      - street
      - postal_code
      - city
      - country
      properties:
        house_number:
          $ref: '#/components/schemas/TinyText'
        street:
          $ref: '#/components/schemas/TinyText'
        postal_code:
          $ref: '#/components/schemas/TinyText'
        city:
          $ref: '#/components/schemas/TinyText'
        country:
          $ref: '#/components/schemas/CountryCode'
      type: object
    ErrorsObject:
      title: API Errors
      properties:
        errors:
          type: array
          items:
            required:
            - title
            - code
            properties:
              title:
                description: Error message
                type: string
              code:
                description: Error code
                type:
                - string
                - 'null'
              source:
                description: Property path where the error occurred, if applicable
                type:
                - string
                - 'null'
            type: object
      type: object
    DateTime:
      title: Date-Time
      type: string
      format: date-time
      example: '2019-01-20 14:00:00'
    DebtorExternalData:
      title: Debtor External Data
      properties:
        merchant_customer_id:
          $ref: '#/components/schemas/TinyText'
        name:
          $ref: '#/components/schemas/TinyText'
        industry_sector:
          type:
          - string
          - 'null'
        address:
          $ref: '#/components/schemas/Address'
      type: object
    Debtor:
      title: Order Debtor
      properties:
        name:
          type: string
          example: C-10123456789-0001
        company_address:
          $ref: '#/components/schemas/Address'
        billing_address:
          $ref: '#/components/schemas/Address'
        bank_account:
          $ref: '#/components/schemas/BankAccount'
        external_data:
          $ref: '#/components/schemas/DebtorExternalData'
      type: object
    TinyText:
      title: string
      type: string
      maxLength: 255
    BankAccount:
      title: Simple representation of a bank account
      properties:
        iban:
          $ref: '#/components/schemas/TinyText'
        bic:
          $ref: '#/components/schemas/TinyText'
      type: object
    PaymentMethodType:
      title: Payment Method Type
      type: string
      enum:
      - bank_transfer
      - direct_debit
      example: bank_transfer
    CountryCode:
      title: Country Code
      description: 'ISO 3166-1 alpha-2 country code (two letters: DE, AT, etc.). See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2'
      type: string
      maxLength: 2
      minLength: 2
      example: DE
    PaymentMethod:
      title: Payment Method
      properties:
        type:
          $ref: '#/components/schemas/PaymentMethodType'
        data:
          description: Payment method details
          properties:
            iban:
              $ref: '#/components/schemas/TinyText'
            bic:
              $ref: '#/components/schemas/TinyText'
            bank_name:
              description: Name of the Bank entity
              type:
              - string
              - 'null'
            bank_giro:
              description: Bank giro number (Sweden only)
              type:
              - string
              - 'null'
            sort_code:
              description: Bank sort code (GB only)
              type:
              - string
              - 'null'
            account_number:
              description: Bank account number (GB, NL and NO)
              type:
              - string
              - 'null'
            bank_account_owner:
              description: Bank account owner entity
              type: string
            mandate_reference:
              description: Direct Debit SEPA Mandate Reference (for Direct Debit only)
              type:
              - string
              - 'null'
            mandate_execution_date:
              $ref: '#/components/schemas/DateTime'
            creditor_identification:
              description: Creditor Identification Code (for Direct Debit only)
              type:
              - string
              - 'null'
          type: object
      type: object
    OrderStateV2:
      title: Order State
      type: string
      enum:
      - pre_waiting
      - authorized
      - waiting
      - created
      - declined
      - shipped
      - partially_shipped
      - complete
      - canceled
      example: created
    UUID:
      type: string
      format: uuid
      maxLength: 36
      minLength: 36
      example: 12345667-890a-bcde-f123-34567890abcd
    AmountDTO:
      title: object <net, gross, tax>
      description: The amount object with split values for net, gross and tax
      required:
      - net
      - gross
      - tax
      properties:
        gross:
          description: Value greater than 0, with max. 2 decimals. It should equal to net + tax.
          type: number
          format: float
          minimum: 0.01
          example: 260.27
        net:
          description: Value greater than 0, with max. 2 decimals.
          type: number
          format: float
          minimum: 0.01
          example: 200.12
        tax:
          description: Value greater than or equal to 0, with max. 2 decimals.
          type: number
          format: float
          minimum: 0
          example: 60.15
      type: object
  responses:
    ServerError:
      description: Unexpected Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorsObject'
    Unauthorized:
      description: Unauthorized request or invalid credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorsObject'
    BadRequest:
      description: Invalid Request Data
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorsObject'
    NotFound:
      description: Resource Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorsObject'
    Forbidden:
      description: Forbidden Request. The operation cannot be completed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorsObject'
  securitySchemes:
    oauth2:
      type: oauth2
      description: 'This authentication mechanism is based on the OAuth 2.0 prototocol and requires a Client ID, a Client Secret Key and

        in some cases also a user and password.


        With these credentials, the client should request a token using the `POST /api/v1/oauth/token` endpoint,

        which should be used in the `Authorization` header together with the `Bearer` challenge to authenticate all the requests.


        > Example: `Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c`.'
      flows:
        password:
          tokenUrl: /oauth/token
          scopes:
            default: default
x-provenance:
  method: searched
  source: https://docs.billie.io/reference
  harvested: '2026-10-14'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://docs.billie.io/reference/confirm_authorization_v2.md
  - https://docs.billie.io/reference/create_checkout_session_v2.md
  - https://docs.billie.io/reference/create_credit_note.md
  - https://docs.billie.io/reference/create_hpp_checkout_session_v2.md
  - https://docs.billie.io/reference/get_checkout_session_authorization_v2.md
  - https://docs.billie.io/reference/get_invoice.md
  - https://docs.billie.io/reference/get_legal_forms.md
  - https://docs.billie.io/reference/invoice_cancel_v2.md
  - https://docs.billie.io/reference/invoice_create.md
  - https://docs.billie.io/reference/invoice_payment_confirm.md
  - https://docs.billie.io/reference/invoice_update.md
  - https://docs.billie.io/reference/oauth_token_create.md
  - https://docs.billie.io/reference/oauth_token_revoke.md
  - https://docs.billie.io/reference/oauth_token_validate.md
  - https://docs.billie.io/reference/order_cancel_v2.md
  - https://docs.billie.io/reference/order_create_v2.md
  - https://docs.billie.io/reference/order_get_details_v2.md
  - https://docs.billie.io/reference/order_update_v2.md
  merge:
    pages: 18
    deduped: 152
    conflicts_kept_first: 0