Everything an AI agent can do with the Checkout.com API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints32
API versionUnified Payments API
Last updated23 June 2026
Orientation

How the Checkout.com API works.

The Checkout.com API is how an app or AI agent works with a Checkout.com account: requesting a payment, capturing or refunding it, tokenizing a card, raising a payout, or handling a dispute. Access is granted through a secret API key or an OAuth 2.0 token, and that token carries granular scopes, like one to request payments and a separate one to refund them, that set which areas a call can reach. A state change emits an event that Checkout.com can deliver to an endpoint registered as a workflow.

32Endpoints
7Capability groups
12Read
20Write
11Permissions
Authentication
Checkout.com authenticates server-side calls in two ways. A secret API key (sk_...) is sent as a Bearer token and carries the scopes set on the key. OAuth 2.0 client credentials exchange an access key ID and secret at the token endpoint for a JWT access token that expires after four hours, requested with one or more scopes. A public key (pk_...) is the only key safe in client code and is limited to tokenization.
Permissions
Access is governed by scopes, each a short string that grants one area. Requesting a payment needs gateway:payment; refunding needs the separate gateway:payment-refunds; viewing disputes needs disputes:view, while accepting and providing evidence need disputes:accept and disputes:provide-evidence. A key or token reaches only the areas its scopes name, so a leaked credential is limited to what it was scoped to.
Versioning
Checkout.com runs a single unified API addressed by path, with no dated version string to pin or send in a header. New fields and methods are added to that one API over time, and changes are published as dated release notes rather than as a new version.
Data model
Checkout.com is resource-oriented: requests and responses are JSON, and a payment moves through actions like authorize, capture, refund, and void, each retrievable from the payment's action history. A state change emits an event delivered by webhook to a configured workflow. Every API error returns a request_id, an error_type, and an error_codes array naming the specific problems.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Checkout.com determines what it can reach. There is a route for making calls and a route for receiving events, and each is governed by the key or token behind it and the scopes that token carries.

Ways to connect

REST API

The REST API takes JSON request bodies and returns JSON, addressed by path on the account's API host. A call authenticates with a secret API key sent as a Bearer token, or with an OAuth 2.0 access token obtained from the token endpoint. The key or token carries the scopes that decide which areas the call can reach.

Best forConnecting an app or AI agent to Checkout.com.
Governed byThe key or OAuth token and the scopes it carries.
Docs ↗

Webhooks (workflows)

Checkout.com POSTs events to an HTTPS endpoint registered as a workflow, configured through the Dashboard or the Workflows API. The receiver verifies the signature on each delivery against the workflow's signing key to confirm the event came from Checkout.com. Events cover the payment lifecycle and disputes.

Best forReceiving Checkout.com events at an app or AI agent.
Governed byThe signing key on the workflow.
Docs ↗
Authentication

Secret API key

A secret key is used for server-side calls and sent as a Bearer token in the Authorization header. The scopes it can use are set on the key in the Dashboard, so a key reaches only the areas it was granted. A secret key must never be exposed in client code.

TokenBearer API key (sk_sbox_... / sk_...)
Best forServer-side calls scoped to specific areas.
Docs ↗

OAuth 2.0 (client credentials)

An access key ID and secret are exchanged at the token endpoint using the client_credentials grant, with Basic auth, for a JWT access token. The request names one or more scopes the token should carry, and the token expires after four hours. This suits integrations that prefer short-lived credentials over a long-lived key.

TokenOAuth 2.0 JWT access token (4-hour expiry)
Best forShort-lived, scope-limited server access.
Docs ↗

Public key

A public key is safe to embed in client code, such as a browser or mobile app. It is limited to tokenizing payment details and cannot read payments, move money, or reach any other area.

TokenPublic key (pk_sbox_... / pk_...)
Best forClient-side tokenization (Frames, mobile SDKs).
Docs ↗
Endpoint reference

Every Checkout.com API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Payments

Methods for requesting and managing payments and their actions.8

The core payment write; also covers card verification. Capture and refund need their own scopes.

Acts onpayment
Permission (capability)gateway:payment
VersionAvailable since the API’s base version
Webhook eventpayment_approved
Rate limitStandard limits apply

Read-only.

Acts onpayment
Permission (capability)gateway:payment-details
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onpayment
Permission (capability)gateway:payment-details
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; the action history is how a payment's lifecycle is inspected.

Acts onpayment_action
Permission (capability)gateway:payment-details
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Only for manual-capture payments; collects authorized funds.

Acts onpayment
Permission (capability)gateway:payment-captures
VersionAvailable since the API’s base version
Webhook eventpayment_captured
Rate limitStandard limits apply

A separate scope from requesting the payment, so refunds can be granted on their own.

Acts onpayment
Permission (capability)gateway:payment-refunds
VersionAvailable since the API’s base version
Webhook eventpayment_refunded
Rate limitStandard limits apply

Only works before capture.

Acts onpayment
Permission (capability)gateway:payment-voids
VersionAvailable since the API’s base version
Webhook eventpayment_voided
Rate limitStandard limits apply

Raises the held amount before capture, for supported card schemes.

Acts onpayment
Permission (capability)gateway:payment-authorizations
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
Methods for hosted payment sessions and shareable payment links.3

Used by the Flow front-end component to present payment methods.

Acts onpayment_session
Permission (capability)gateway:payment
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns a URL the customer is directed to.

Acts onpayment_link
Permission (capability)gateway:payment
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onpayment_link
Permission (capability)gateway:payment-details
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Tokens & Instruments

Methods for tokenizing cards and storing reusable payment instruments.4

Typically called with a public key client-side to keep card data off the integration's servers.

Acts ontoken
Permission (capability)vault:instruments
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Persists a card for reuse, unlike a single-use token.

Acts oninstrument
Permission (capability)vault:instruments
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts oninstrument
Permission (capability)vault:instruments
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Irreversible for that stored instrument.

Acts oninstrument
Permission (capability)vault:instruments
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Customers

Methods for storing and managing customer records.4

A core write under the vault scope.

Acts oncustomer
Permission (capability)vault:instruments
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts oncustomer
Permission (capability)vault:instruments
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A core write under the vault scope.

Acts oncustomer
Permission (capability)vault:instruments
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Irreversible.

Acts oncustomer
Permission (capability)vault:instruments
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Disputes

Methods for reviewing disputes and responding with evidence.5

Read-only.

Acts ondispute
Permission (capability)disputes:view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts ondispute
Permission (capability)disputes:view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Final; the dispute cannot then be contested.

Acts ondispute
Permission (capability)disputes:accept
VersionAvailable since the API’s base version
Webhook eventdispute_lost
Rate limitStandard limits apply

Stages evidence; a separate submit call commits it.

Acts ondispute_evidence
Permission (capability)disputes:provide-evidence
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Commits the evidence; submit before the dispute deadline or the case is lost by default.

Acts ondispute_evidence
Permission (capability)disputes:provide-evidence
VersionAvailable since the API’s base version
Webhook eventdispute_won
Rate limitStandard limits apply

Payouts & Balances

Methods for moving funds between entities and reading balances.3

Moves real money between entities; used in platform and payout setups.

Acts ontransfer
Permission (capability)fx
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts ontransfer
Permission (capability)fx
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onbalance
Permission (capability)fx
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Workflows (Webhooks)

Methods for configuring where and how events are delivered.5

Read-only; workflows decide where events are delivered. The exact OAuth scope is not stated on the public reference.

Acts onworkflow
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Sets where account events are sent. The exact OAuth scope is not stated on the public reference.

Acts onworkflow
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. The exact OAuth scope is not stated on the public reference.

Acts onworkflow
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes how or where events are delivered. The exact OAuth scope is not stated on the public reference.

Acts onworkflow
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Stops event delivery to that destination. The exact OAuth scope is not stated on the public reference.

Acts onworkflow
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Checkout.com can notify an app when something happens to a payment or a dispute, like a payment being approved, a capture succeeding, or a dispute needing evidence. It sends an event to an HTTPS endpoint configured as a workflow, so an integration learns about activity without polling.

EventWhat it signalsTriggered by
payment_approvedA payment authorization, or a payout, was approved. An integration treats this as the signal that the payment was accepted./payments
payment_declinedA payment authorization was declined, for example by the issuer./payments
payment_capturedA capture was successful and the authorized funds were collected./payments/{id}/captures
payment_refundedA refund was successful and funds were returned to the cardholder./payments/{id}/refunds
payment_voidedA void was successful and the authorization was released before capture./payments/{id}/voids
card_verifiedA card verification was successful, confirming the card without taking a payment./payments
dispute_receivedA new dispute was raised against a payment, opening a window to respond.In-app only
dispute_evidence_requiredA dispute needs evidence to be submitted before its deadline, or it will be lost by default.In-app only
dispute_wonA dispute was resolved in the merchant's favour and the funds were retained./disputes/{id}/accept
/disputes/{id}/evidence
dispute_lostA dispute was resolved against the merchant and the funds were returned to the cardholder./disputes/{id}/accept
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Checkout.com limits how fast an app can call, by a request rate measured per second and applied separately to reads and to writes.

Request rate

Checkout.com meters requests by rate, not by a per-method cost. The default ceiling is 100 requests per second for GET calls and a separate 100 requests per second for POST, PUT, and DELETE calls, applied across the account. The sandbox environment uses lower limits. Limits can be raised by arrangement with an account manager, and going over returns HTTP 429, which an integration should handle by retrying with exponential backoff and jitter.

Pagination

List endpoints, like getting disputes, page through results with a limit for the page size and a skip offset for the starting position. The response reports the total count alongside the returned page, so an integration can walk forward until it has read every item.

Request size

An OAuth access token is valid for four hours before it must be reissued. Request and response bodies are JSON. Specific maximum body sizes are not stated on the public reference, so an integration should not assume an unbounded payload.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
401UnauthorizedNo valid credential was provided: a missing, malformed, or wrong API key or an expired or invalid OAuth token.Send a valid secret key as a Bearer token, or reissue the OAuth access token, and confirm it is for the correct environment.
403ForbiddenThe credential is valid but lacks the scope this call needs, for example a refund attempted without gateway:payment-refunds.Grant the matching scope on the key, or request the OAuth token with that scope, then retry.
404Not FoundThe referenced object, like a payment or dispute id, does not exist or is not visible to this credential.Verify the id and confirm it belongs to the same account and environment.
422request_invalidThe request was understood but failed validation. The body returns a request_id, an error_type, and an error_codes array, like [processing_channel_id_required], naming each invalid field.Read the error_codes array, fix the named fields, and resend. The request is not retryable as-is.
429too_many_requestsThe request rate exceeded the account limit, by default 100 requests per second for reads and a separate 100 for writes.Back off and retry with exponential backoff and jitter, and smooth the request rate.
500Server ErrorAn error on Checkout.com's side. It is rare.Retry with backoff using the same idempotency key where supplied, and contact support if it persists.
Versioning & freshness

Version history.

Checkout.com runs a single unified API addressed by path rather than a dated version string, and ships changes through dated release notes.

Version history

What changed, and when

Latest versionUnified Payments API
Unified Payments APICurrent version
Current unified API

Checkout.com runs one unified API addressed by path, with no dated version string. New fields and methods are added over time, and changes ship through dated release notes rather than as a new version number. The same API covers payments, tokenization, the vault, customers, disputes, payouts and transfers, balances, and workflows.

What changed
  • Payments: request, capture, refund, void, reverse, and increment authorizations.
  • Disputes: view, accept, and provide and submit evidence.
  • Payouts and balances: transfers between entities and balance retrieval.
  • Workflows: configure webhook destinations and actions for event delivery.
Earlier
Migration from the previous (NAS to ABC) accounts

Checkout.com migrated merchants from its earlier account type to its current Unified Payments accounts, which use the scoped key and OAuth model documented here. The previous account type used a different key format and is being retired.

What changed
  • Current accounts use scoped secret keys (sk_) and OAuth 2.0 client credentials.
  • Granular scopes introduced for payments, refunds, captures, voids, disputes, and payouts.

There is no version to pin; new fields and methods are added to the unified API over time.

Checkout.com release notes ↗
Questions

Checkout.com API, answered.

Should an integration use an API key or OAuth 2.0?+
Both authenticate server-side calls. A secret API key (sk_...) is the simpler route: it is sent as a Bearer token and carries the scopes configured on the key in the Dashboard. OAuth 2.0 client credentials suit setups that prefer short-lived tokens: an access key ID and secret are exchanged at the token endpoint for a JWT that expires after four hours and is requested with the specific scopes it needs.
What are scopes and how granular are they?+
A scope is a short string that grants access to one area of the API, and a key or token can hold several. They are fine-grained: requesting a payment uses gateway:payment, but refunding uses the separate gateway:payment-refunds, capturing uses gateway:payment-captures, and voiding uses gateway:payment-voids. Disputes split into disputes:view, disputes:accept, and disputes:provide-evidence. A call without the matching scope is rejected.
What does the public key let an agent do?+
A public key (pk_...) is the only credential safe to use in client code, such as a browser or mobile app. It is limited to tokenizing payment details, turning raw card data into a single-use token, and cannot read payments, move money, or reach any other area. Server-side work needs a secret key or an OAuth token.
How are API errors structured?+
Every error response carries a request_id that identifies the call, an error_type that names the category, like request_invalid for a validation failure, and an error_codes array listing each specific problem, such as processing_channel_id_required. An integration reads the error_codes array to learn exactly which fields were wrong rather than relying on the HTTP status alone.
How does an integration receive events from Checkout.com?+
Checkout.com pushes events to an HTTPS endpoint registered as a workflow, so an app learns about a payment or dispute change without polling. The receiver verifies the signature on each delivery against the workflow's signing key to confirm the event genuinely came from Checkout.com before acting on it.
Is the API versioned?+
There is a single unified API addressed by path, with no dated version string to pin or send in a header. New fields and methods are added to that one API over time in a backward-compatible way, and notable changes are published as dated release notes.
Related

More finance API guides for agents

What is Bollard AI?

Control what every AI agent can do in Checkout.com.

Bollard AI sits between a team's AI agents and Checkout.com. Grant each agent exactly the access it needs, read or write, area by area, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Checkout.com key.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Checkout.com
Payments Agent
View payments ResourceOffReadFull use
Issue refunds ActionOffReadFull use
Respond to disputes ActionOffReadFull use
Payouts and transfers ActionOffReadFull use
Customers ResourceOffReadFull use
Per-agent access, set in Bollard AI, not in Checkout.com