Skip to content
Docs menu

Endpoints

Retrieve a checkout

Get a checkout's address, amounts and confirmations while the customer pays.

Public. Read it every few seconds while the customer pays: progress runs on elapsed time, so each read brings it up to date.

Path

  • id string Required
    The checkout's ID, such as chk_C5yhPQvPqpYgdDgj.

Fields to know

  • breakdown object
    What the customer pays, row by row, in minor units of currency: the price, the processing_fee when the business passes 402pay's fee on (null otherwise), an estimated network_fee for crypto, which the customer's wallet pays in the network's own coin on top of crypto.amount (null for cards or without an estimate), and their total. crypto.amount covers the price and the processing fee, never the network fee.
  • remainder boolean
    true when the checkout collects the rest of an underpaid payment, which payment_id names.
  • card object
    For card payments, payment_url opens the secure payment page and can_retrysays whether checkout can offer another attempt. null for crypto. Open the URL unchanged in a browser tab; do not construct its parameters or embed it in an iframe. The hosted checkout handles this automatically.
  • canceled_by string
    customer, or business when you canceled its API payment. null until the checkout is canceled.
  • replaced_by string
    The sibling quote whose transfer closed this one, when the customer went back and the funds landed on the quote they had left; open it instead. null otherwise.

With your secret key

  • email string
    The customer's email, or null when checkout hasn't collected one.
  • reporting object
    The checkout's amount, fee, transaction_fee, customer_fee and net in US cents: the price, 402pay's rate on it, the flat fee (0 on a remainder, since its payment counts it once), what the customer pays toward the fees, and what you keep (amount plus customer_fee less fee and transaction_fee).
  • fee_rate_bps integer
    The fee rate for the checkout's rail, in basis points.

Review reasons

A checkout in needs_review says why in review_reason, and its payment is needs_review too.

review_reasonMeaning
lateThe transfer arrived after the checkout expired, so the rate it was quoted at no longer held.
wrong_networkThe transfer arrived on another EVM network at the same address. The checkout's crypto.detected_network and the payment's method.network name it.
claimedThe customer said they paid, with a transaction hash, after the checkout closed.

Errors

  • 404 not_found
    No checkout has that ID.

Any request can also fail on its key or its body. See errors.

Request
curl "https://dash.402pay.co/api/v1/checkouts/chk_C5yhPQvPqpYgdDgj"
Response
{  "data": {    "id": "chk_C5yhPQvPqpYgdDgj",    "kind": "checkout",    "status": "open",    "rail": "crypto",    "link_id": null,    "payment_id": "pmt_QI02vLdJGd48hBbg",    "amount": 4900,    "currency": "USD",    "breakdown": {      "currency": "USD",      "price": 4900,      "processing_fee": null,      "network_fee": 2,      "total": 4902    },    "crypto": {      "asset": "USDC",      "network": "polygon",      "amount": "49.00",      "address": "0x9a3c416D4A81669C01f4515bBDEB93C45d3813fe",      "payment_uri": "ethereum:0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359@137/transfer?address=0x9a3c416D4A81669C01f4515bBDEB93C45d3813fe&uint256=49000000",      "rate": {        "amount": 100,        "currency": "USD"      },      "received_amount": "0.00",      "remaining_amount": null,      "remaining_payment_uri": null,      "overpaid_amount": null,      "detected_network": null,      "tx_hash": null,      "explorer_url": null    },    "card": null,    "confirmations": {      "current": 0,      "required": 4    },    "remainder": false,    "canceled_by": null,    "replaced_by": null,    "failure_code": null,    "review_reason": null,    "success_url": "https://example.com/thanks",    "expires_at": "2026-09-26T21:37:47.047Z",    "sent_at": null,    "created_at": "2026-09-26T21:22:47.047Z",    "updated_at": "2026-09-26T21:22:47.047Z"  }}