Retrieve a payment
GET
/payments/{paymentId}Parameters
paymentIdstringpathrequiredA payment's id. Opaque — use it as you received it.Example:
pay_019985c24a6e7c3b9f102d5e8a1b3c4dpattern ^pay_[0-9a-f]{32}$
Responses
The payment.
Headers
X-Request-IdstringThe request's trace id: the same value a problem body carries astraceId. Quote it when you contact support. A replayed response (Idempotent-Replayed: true) carries the replay's own; its body keeps the original request'straceId.RateLimit-LimitintegerRateLimit-RemainingintegerRateLimit-ResetintegerSeconds until the window resets.Idempotent-Replayedbooleantruewhen this response was replayed from an earlier request with the sameIdempotency-Key.
Schema application/json
idstringrequiredA payment's id. Opaque — use it as you received it.Example:
pay_019985c24a6e7c3b9f102d5e8a1b3c4dpattern ^pay_[0-9a-f]{32}$
merchantReferencestringrequiredYour own reference for this payment, as you sent it.statusstringrequiredpendingawaiting the customer — also after a failed attempt, while the customer may retry ·processingcustomer acted, settlement in flight ·completedfunds credited ·failednot used for payments: one never paid endsexpired·cancelled·expiredcheckout TTL elapsed unpaid (a customer who committed just before the deadline can still turn itcompleted) ·refunded. (partially_refundedis not reported yet.)Allowed values:
pendingprocessingcompletedfailedcancelledexpiredrefundedamountMoneyrequiredDecimal amount as a string — never a float, never minor units. An amount you send may carry no more decimal places than its currency has (and never more than 8); trailing zeros do not count, so10.100 EURis fine and10.123 EURis400 validation_failedonamount.value. An amount the API returns is written with exactly as many decimal places as its currency has (at most 8):10.10 EUR, never10.1.valuestringrequiredExample:
149.90pattern ^-?\d{1,18}(\.\d{1,18})?$
currencystringrequiredISO 4217 code for fiat (EUR), asset ticker for crypto (USDT).Example:
EURpattern ^[A-Z0-9]{3,10}$
feeobjectPresent once the payment is completed: the fee charged to you on it, in the payment's currency. You were creditedamountless this.valuestringrequiredExample:
149.90pattern ^-?\d{1,18}(\.\d{1,18})?$
currencystringrequiredISO 4217 code for fiat (EUR), asset ticker for crypto (USDT).Example:
EURpattern ^[A-Z0-9]{3,10}$
methodstringrequiredHow the customer pays — the same vocabulary asPayoutMethod.jeton_wallet: the customer pays from their Jeton account on the checkout page. More methods will come;GET /payment-methodslists those enabled for you.Allowed values:
jeton_walletcheckoutobjectPresent while the payment ispendingorprocessing.urlstring (uri)Redirect the customer here. Returned in the create response only — the checkout token is stored hashed, soGETcannot reproduce it. Persist it with your order. A retry of the create under itsIdempotency-Keyissues a new one while nobody has started paying (see Retrying onPOST /payments).expiresAtstring (date-time)requiredRFC 3339, UTC, with millisecond precision.Example:
2026-09-18T10:15:30.123Z
customerCustomerThe payer. Only the e-mail is reported for now; name, phone and country are not provided yet. The checkout page's language is the payment's ownlanguage, not a customer field.emailstring (email)max length 100
payerobjectPresent once the payment is completed: the Jeton user who actually paid. Distinct fromcustomer, which is what you sent. Passpayer.customerNumberasdestination.customerNumberonPOST /payoutsto pay the same customer back.customerNumberstringrequired
languagestringThe checkout page's language as you sent it. Absent when you sent none.pattern ^[a-z]{2}$
createdAtstring (date-time)requiredRFC 3339, UTC, with millisecond precision.Example:
2026-09-18T10:15:30.123ZupdatedAtstring (date-time)requiredLast change. It never moves backwards, so use it to discard stale webhook snapshots.Example:
2026-09-18T10:15:30.123ZcompletedAtstring (date-time)Present once the payment is completed — when the funds were credited.Example:
2026-09-18T10:15:30.123Z