/api/v1/gateway/payments/status
Read back one payin by your own order reference — status, amounts, and the currency you were credited in.
not_found.
/api/v1/user/login.id. There is nothing extra to store:
the order id you already have is the key.Example request
Reading the response
All amounts are decimal strings, never numbers —"100.00", not 100.00. Parsing them into a
floating-point type will eventually cost you precision on a real payment.
Status values
expired means we stopped waiting, not no money arrived. The deposit address stays live, and
a late payment still settles, still credits you, and still fires a callback. A payment can move
from expired to paid, so do not make it terminal in your own system.Which fields are populated when
Money fields arenull until the payment settles. This is the single most common surprise here:
deposit_asset is never null — before your customer picks a method it holds the default
(USDT) rather than a choice they have made. Only read it as “the currency you were credited in”
once status is settled or deposit_chain is non-null.Telling the two 400s apart
validation_error means merchant_reference was missing, empty, or over 128 characters — the
payload reached us and failed validation.
bad_request means the envelope was wrong, so nothing was ever validated: a missing or skewed
x-timestamp, a body that is not {"data":"…"}, or a payload we could not decrypt with your
encryption secret. If you are seeing this on every call, the problem is in your signing helper, not
in your fields.
A 403 is either an IP that is not on your allowlist or the payin product not being enabled on the
account. A 429 means you are over 600 lookups per minute.
not_found too. The endpoint never
confirms that someone else’s order exists.Polling, if you must
The callback is the intended path and it is retried up to 8 times — but if you are recovering from a missed callback or reconciling a batch:- Look up on demand (a support query, an order older than expected), not on a fixed loop over every open order
- Stop at the first settled status:
paid,underpaidoroverpaidare final for fulfilment - Keep polling
expiredorders only briefly. A late payment fires a callback anyway, and we keep re-checking lapsed payments on our side
Authorizations
Identifies your account. Issued from Developer Tools in the dashboard.
Headers
Unix epoch in seconds — not milliseconds. Must be within ±5 minutes of our clock, which is what makes a captured request unusable later. Keep your client's clock NTP-synced.
1748023400
HMAC-SHA256 over the signing string, hex encoded. The timestamp is part of what is signed, so a replayed body cannot be re-dated. See https://docs.pontisglobe.com/authentication for how it is built.
"2f8a9b4c1d7e0a3f6b8c2d5e9f1a4b7c0d3e6f9a2b5c8d1e4f7a0b3c6d9e2f5a"
Body
1 - 128"ORDER-1042"