Skip to content

Authentication

Every request carries a bearer credential in the Authorization header:

Authorization: Bearer uzp_live_…

There are two kinds of credentials.

Formatuzp_test_… (test mode) or uzp_live_… (live mode)
Where to get oneDashboard → Developers → API keys
Use it fromYour server only
Can callEvery endpoint

The key decides the mode: a test key only sees test payments, a live key only live ones. Creating a live key asks for a confirmation code sent to your email and your PIN.

Each payment comes with its own checkout_token (cs_…). It is scoped to that one payment and is safe to hand to a browser. It can call:

EndpointWhat it returns
GET /v1/payments/{id}The payer view of the payment: amount, status, description, deposit addresses. No metadata, no settlement details.
GET /v1/payments/{id}/methodsThe methods offered on your hosted page (your accepted tokens).
POST /v1/payments/{id}/addressA deposit address for a token and network.

The hosted payment page uses exactly these endpoints, so you can build your own payment page with them (see Headless payments). These endpoints allow requests from any origin (CORS). A checkout token used on a different payment returns 404.

checkout_url carries the token in its fragment (#cs_…), which browsers never send to servers or in Referer headers.

StatusCodeWhen
401unauthorizedMissing, malformed, revoked or unknown credential
403forbiddenThe account is suspended