Skip to Content
CheckoutAPI ReferencePaymentsOverview

Payments

A payment represents a completed on-chain transfer of stablecoins from a customer. Payments are created when a customer completes a checkout or when a subscription fee is charged.

Payment Modes

When creating a checkout or subscription, you can specify a payment_method:

ModeDescription
directFunds are sent directly to your settlement address when the customer pays. Requires a signed request at checkout creation. Refunds via signed rescue request.
two_stepFunds are held until you capture them to your settlement address or refund them to the customer via signed requests.
🔐

Both payment modes require a signing key. See Signed Requests for setup instructions.

Two-Step Payment Flow

  1. Customer pays — funds are held securely until you decide what to do with them
  2. Capture — you call signCapture() from the SDK and send the signed request to collect funds
  3. Refund (if needed) — you call signRefund() with the customer’s address and send the signed request to return funds

The API verifies your signature before executing any fund movement.

Refunds

How refunds work depends on the payment mode:

  • Direct mode — you send a signed rescue request via the API using signRescue() from the SDK to recover excess deposits or return funds.

  • Two-step mode — you send a signed refund request via the API using signRefund() from the SDK, and funds are returned to the customer’s wallet address automatically.

Need partial captures or partial refunds? Contact your account manager to discuss options for partial fund movements.

Payment Statuses

StatusDescription
client_deposit_pendingCheckout created; no deposit detected yet
client_deposit_detectedDeposit seen on-chain; waiting for confirmations
client_deposit_confirmedDeposit confirmed; payment contract deploy queued
client_deposit_expiredCheckout expired before a valid deposit arrived
escrow_confirmedTWO_STEP: funds held in escrow, awaiting capture or refund
settledPayment complete; funds transferred to your settlement address
refundedFull amount refunded to customer (two-step only)
failedPayment attempt failed (e.g., deposit lost to chain reorg)

Available Endpoints

Start building

XO

Request Demo

Schedule a call with our team

Select a product
Arrow right

Start building
Grateful

Contact Us

We're here to help