Base URL
Environments: Use
https://checkout.ozura.com for production. For staging, use the URL provided by your Ozura representative.Authentication
All requests require these headers:Rate Limits
Every Create Session and Create Payment Link request checks your API keys. If too many requests check the Vault API Key in a short time, the request is rejected with429 Too Many Requests and errorCode: "VAULT_RATE_LIMITED". This says nothing about your key: wait for the number of seconds in the Retry-After header, then send the same request again. When you create many sessions or links at once, space the requests out instead of sending them in one burst.
503 Service Unavailable and errorCode: "VAULT_UNAVAILABLE". Retry with backoff.
Opening a payment link is also limited per visitor. A visitor who opens payment links too quickly in a short time sees a “Please Wait” page, which links back to your cancelUrl, and can try again a moment later.
Create Session
Creates a checkout session and returns a checkout URL.Request Body
*
amount is required when checkoutMode is "payment" or "recurring" and items is not provided. Not required for "donation" mode.
Deprecated fields:
taxRate and shippingCost are accepted and validated but ignored — they have no effect on pricing. Do not send these fields in new integrations.Response
"warnings" array with advisory messages, for example an EMBED DOWNGRADE message when you request embedMode: "iframe" (the session then runs as "redirect"). On an idempotent replay (same idempotencyKey), "cached": true is added at the top level and a new session is not created.
Get Session
Retrieve session details. The session ID acts as the access token — no additional authentication headers are required.Response
The full session object is returned. Key fields include:merchantName is stored inside metadata, not as a top-level session field. For recurring sessions, recurringConfig contains the full plan config object. The metadata object may contain internal fields used by the checkout page — do not expose, log, or forward the full metadata object to clients.Session Statuses
Cancel Session
Cancels a pending session. This endpoint is called automatically by the Ozura checkout page when the customer clicks “Cancel” — you do not need to call it from your server.This endpoint is browser-facing. It is called by the checkout page using a short-lived internal session credential. It cannot be called from your server using your Vault API Key — requests with
X-API-KEY are rejected. If a session is not cancelled explicitly, it expires automatically after 30 minutes.Response
Create Payment Link
Creates a reusable payment URL.Request Body
*Required when
checkoutMode is "payment" or "recurring" and items is not provided. Not required for donation mode.
Correlating payments to your orders. Payment links support three correlation references, all returned in the success-redirect
metadata (see Correlate Payments to Your Orders for the full guide):merchantPayLinkReference— set here at link creation; static, returned on every transaction from the link (attribute a link/campaign).merchantReference— set per checkout via a?ref=query parameter appended to the link URL (not a request-body field); unique per payer.merchantRecurringReference— for recurring links, set insiderecurringConfig; also persisted on the plan so you can look the plan up by it.
Response
idempotencyKey), the response also includes "cached": true. Either response may include a top-level "warnings" array with merchant-facing advisory messages.
Check Payment Link Availability
Check if a payment link is still valid. No authentication required.Response (Available)
Response (Unavailable)
Error Responses
All errors follow this format:details is only included when there are multiple specific validation failures (e.g. several invalid fields at once). Single-field and non-validation errors return error only.
Common Error Codes
Idempotency Conflict Codes
When you replay a request with anidempotencyKey that does not match the original active session, the API returns 409 with one of these machine-readable errorCode values: