Skip to content

Object model

The API models five resources and how they relate:

  • PaymentLink — the charge you create. Denominated in amount + currency. Produces a hosted checkout_url. It is the entry point of the integration.
  • CheckoutSession — the payer's session on the hosted page, created by the platform when the checkout_url is opened. You do not create it directly.
  • Quote — the locked price of a charge for a method and moment: charged exchange rate, total fee, and net. Single source of price.
  • PaymentIntent — internal orchestration detail created when a Quote is accepted. Not the integrator's main vocabulary.
  • Payment — the result. It is the reconciliation object: it carries reference, charged and net amounts, fee breakdown, locked exchange rate, and settlement.

Direct integration flow: QuoteacceptPaymentLink. The integrator sends the link to the customer. The PaymentIntent exists behind the scenes to tie charge, ledger, and reconciliation together. Hosted-link flow: PaymentLink → (payer opens) CheckoutSession → (payer confirms) locked Quote + PaymentIntentPayment. Each Payment transition emits an Event, which is delivered to your WebhookEndpoints and recorded in WebhookDeliveries.

POST /v1/quotes/{id}/accept materializes a charge from a quote without recomputing the price and responds with a payment link. The quote must belong to the key's tenant, be within expires_at, and not yet be consumed.

In the legacy POST /v1/payment_intents flow, legal_entity_id is optional. When omitted, the platform uses the tenant's single active legal entity. If the tenant has no active entity, it returns 400 no_active_legal_entity; if it has more than one active, it returns 400 legal_entity_required and the integrator must supply legal_entity_id. When supplied, the field is still validated against the key's tenant, and an entity from another tenant returns 404 legal_entity_not_found.