Documentation

Accept Payments

This guide explains how to configure your account to accept cryptocurrency payments

Supported Networks

The following blockchain networks are supported:

Network
Solana
Arbitrum
BNB Chain
Litecoin

Supported Cryptocurrencies

The following cryptocurrencies are supported:

  • USDC
  • USDT
  • LTC (Litecoin)

LTC is the native cryptocurrency of the Litecoin network. To accept it, configure a Litecoin receiving address and enable LTC in your Settlement Settings. The networks and cryptocurrencies offered at checkout depend on the available assets and your enabled settlement settings.

Public payment API

For the simplest integration, redirect buyers to the hosted Paylink or Checkout Session. A custom payment UI can create an invoice with POST /api/public/payments. This endpoint is public and does not require an organization API key.

FieldTypeRequiredDescription
paylinkIdUUIDone source requiredAn enabled Paylink. Omit when using checkoutSessionId.
checkoutSessionIdstringone source requiredA valid ycs_ Checkout Session ID. Use its saved amount and customer data.
networkstringyesAn available network from public checkout data.
symbolstringyesAn enabled token symbol, at most 20 characters; normalized to uppercase.
customerEmailemaileffective email requiredUp to 255 characters. May be omitted only when the Checkout Session already supplies the email.
customerNamestringnoUp to 255 characters.
customerPhonestringnoUp to 50 characters.
customerDateOfBirthstringnoUp to 20 characters.
customerAddressstringnoUp to 500 characters.
clientReferenceIdstringnoYour customer reference, up to 255 characters.
subscriptionIdUUIDnoExisting subscription when paying a recurring renewal.
languagestringnoSupported checkout language code, at most 10 characters.
metadataobjectnoUp to 20 primitive values; metadata constraints.

Read GET /api/public/paylinks/{id} or GET /api/public/checkout-sessions/{id} to obtain the applicable checkout configuration. Do not invent network identifiers or token availability. The server determines the price from the Paylink or immutable Checkout Session; a browser-supplied amount is not accepted here.

Read payment progress

GET /api/public/payments/{id} returns { "success": true, "data": ... } for an existing invoice. Inspect success as well as the HTTP status.

FieldsMeaning
statusPublic payment status: PENDING, CONFIRMING, SUCCESS, EXPIRED, FAILED, or CANCELLED.
requiredAmount, amountReceived, remainingAmountDecimal strings in the payment asset's units. Preserve decimal precision.
isFullyPaidEnough funds have been received; this alone does not establish confirmation or settlement.
confirmations, requiredConfirmationsDeposit confirmation progress when available. null means unavailable, not zero or complete.
confirmationStagesFor Litecoin, separate deposit and payout objects, each with confirmations and requiredConfirmations. Other networks return null.
createdAt, detectedAt, paidAt, expiresAtUnix timestamps in milliseconds. Except for createdAt, these may be null; paidAt represents completed settlement when known.

Use the returned confirmation thresholds instead of assuming a fixed count. Litecoin deposit confirmation and merchant payout confirmation are separate stages; finishing the deposit stage does not mean the payment has completed. Preserve unknown progress instead of inventing a completed percentage.

Payment status = SUCCESS or a verified payment.confirmed webhook is required for fulfillment. Invoice creation, browser redirects, and isFullyPaid are not payment confirmation. For recurring access, also follow the subscription lifecycle rules.

On this page