Payments & Checkout API

Endpoints for creating payments, retrieving payment details, and public checkout operations.

Create Payment Checkout

Create a new payment and get a checkout URL to redirect the customer.

POST /api/payment/checkout
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

Authentication: OAuth2 token or Client Token with payments.create scope.

Request Body

{
  "amount": 10000,
  "currencyCode": "USD",
  "reference": "ORDER-123",
  "referenceLabel": "Order #123",
  "clientId": "your_client_id_here",
  "redirectUrl": "https://yoursite.com/success",
  "expiresAt": "2026-03-15T12:00:00Z"
}

Parameters

ParameterTypeRequiredDescription
amountintegerYesPayment amount in smallest unit (e.g., cents)
currencyCodestringYesCurrency code (must exist in configured currencies)
referencestringYesYour order/payment reference
referenceLabelstringYesDisplay label for the reference
clientIdstringYes*Payment application client ID (*or provide siteId)
siteIdstringYes*Payment site UUID (*or provide clientId)
redirectUrlstringNoURL to redirect customer after payment
blockchainSlugstringNoSpecific blockchain to use
productIdstringNoAssociated product UUID
settlementCurrencyCodestringNoCurrency for settlement
expiresAtstringNoCheckout URL expiration (ISO 8601)

Response

{
  "data": {
    "checkoutUrl": "https://yourdomain.com/checkout/550e8400-e29b-41d4-a716-446655440000?expires=1742044800&signature=abc123def456..."
  }
}

The checkoutUrl includes an HMAC-SHA256 signature for security. Redirect your customer to this URL to complete payment.

Get Payment

Retrieve payment details.

GET /api/payment/{paymentId}
Authorization: Bearer YOUR_TOKEN

Authentication: OAuth2 token or Client Token with payments.get scope.

Response

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "userId": "...",
    "status": "RECEIVED",
    "reference": "ORDER-123",
    "referenceLabel": "Order #123",
    "currencyCode": "USD",
    "settlementCurrencyCode": "USDT",
    "amount": {
      "value": 100.00,
      "amount": 10000,
      "formatted": "$100.00"
    },
    "receivedAmount": {
      "value": 100.00,
      "amount": 10000,
      "formatted": "$100.00"
    },
    "confirmedAt": "2026-01-15T10:30:00Z",
    "foundAt": "2026-01-15T10:15:00Z",
    "date": "2026-01-15T10:00:00Z",
    "checkoutUrl": "https://..."
  }
}

List Payments

Get a paginated list of payments for your payment applications.

GET /api/payment
Authorization: Bearer YOUR_OAUTH_TOKEN

Authentication: OAuth2 token only.

Query Parameters

ParameterTypeDescription
paymentApplicationIdstringFilter by payment application UUID

Response

{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "status": "CONFIRMED",
      "reference": "ORDER-123",
      "referenceLabel": "Order #123",
      "currencyCode": "USD",
      "amount": {
        "value": 100.00,
        "amount": 10000,
        "formatted": "$100.00"
      },
      "date": "2026-01-15T10:00:00Z"
    }
  ],
  "meta": {
    "pagination": {
      "total": 150,
      "count": 20,
      "per_page": 20,
      "current_page": 1,
      "total_pages": 8
    }
  }
}

Get Payment Instructions

Get payment instructions for a specific provider and method.

GET /api/payment/{paymentId}/provider/{provider}/method/{method}
Authorization: Bearer YOUR_TOKEN

Authentication: OAuth2 token or Client Token with payments.user-instructions.get scope.

Returns provider-specific payment instructions (e.g., blockchain address, QR code, bank details).

Amount Fields

All monetary values are returned as amount objects with the following structure:

FieldTypeDescription
valuefloatDecimal value (e.g., 100.00)
amountintegerValue in smallest currency unit / cents (e.g., 10000)
formattedstringFormatted display string (e.g., "$100.00")
currencyobjectCurrency details (code, name, decimals)
decimalsintegerNumber of decimal places
symbolstringCurrency symbol (e.g., "$")

Response examples in this documentation show a simplified subset (value, amount, formatted). The full object includes all fields listed above.

Payment Statuses

StatusDescription
OPENPayment created, awaiting payment
FOUNDFunds detected on blockchain but not yet confirmed
UNDERPAIDReceived amount is less than requested
RECEIVEDFull payment received and confirmed
CONFIRMEDMerchant webhook executed successfully
CANCELLEDPayment cancelled by merchant
ERRORError during payment processing
REFUNDPayment has been refunded

Checkout Endpoints (Public)

These endpoints are used by the hosted checkout page. They do not require authentication — the checkout URL signature provides security.

Get Checkout Payment Status

GET /api/checkout/payment/{paymentId}

Returns payment details along with merchant settings (e.g., whether underpayment or overpayment is allowed).

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "OPEN",
    "reference": "ORDER-123",
    "referenceLabel": "Order #123",
    "currencyCode": "USD",
    "amount": {
      "value": 100.00,
      "amount": 10000,
      "formatted": "$100.00"
    }
  }
}

Get Available Payment Methods

GET /api/checkout/{paymentId}/payment-methods

Returns the list of cryptocurrencies and payment methods the merchant has configured for their payment application.

Get Checkout Payment Instructions

GET /api/checkout/payment/{paymentId}/provider/{provider?}/method/{method?}

Returns the payment address, amount, and other instructions specific to the selected cryptocurrency and network. Link expiration and signature are validated.