The payment object
Returned by every payment endpoint called with your secret key, and sent as data in
webhooks.
{ "object": "payment", "id": "pay_01K8Z3M0Q4V7Y2B9C6D1E5F8G3", "payment_id": "order_1001", "livemode": true, "source": "api_checkout", "status": "settled", "amount": "25.00", "currency": "USD", "checkout_url": "https://pay.unizpay.com/pay_01K8Z3…#cs_…", "checkout_token": "cs_…", "expires_at": "2026-10-31T13:00:00.000Z", "max_conversion_bps": null, "underpay_tolerance": null, "fee_payer": null, "underpaid_at": null, "underpaid_accepted_at": null, "accepted_tokens": null, "created_at": "2026-10-31T12:00:00.000Z", "description": "Order #1001", "success_url": "https://shop.example.com/orders/1001", "cancel_url": null, "metadata": { "customer_id": "c_123" }, "deposit_addresses": [ { "token": "USDC", "network": "polygon", "network_name": "Polygon", "chain_id": "eip155:137", "address": "0x5b1C…9e40", "explorer_url": "https://polygonscan.com/address/0x5b1C…9e40", "pay_amount": "25", "quote_expires_at": "2026-10-31T13:01:12.000Z", "processing_fee": "0.00", "price_locked": false, "window_seconds": 3600 } ], "deposits": [ { "token": "USDC", "amount": "25", "tx_hash": "0x9a3f…", "explorer_url": "https://polygonscan.com/tx/0x9a3f…", "network": "polygon", "from": "0x71C2…", "status": "final", "detected_at": "2026-10-31T12:03:12.000Z" } ], "settlements": [ { "kind": "sweep", "status": "succeeded", "tx_hash": "0x4c8e…", "explorer_url": "https://polygonscan.com/tx/0x4c8e…", "destination_tx_hash": null, "destination_explorer_url": null, "created_at": "2026-10-31T12:03:20.000Z", "token": "USDC", "net": "24.894", "platform_fee": "0.1", "fee_token": "USDC", "network_cost": "0.006" } ]}Payment
Section titled “Payment”| Field | Type | Description |
|---|---|---|
object | string | Always "payment" |
id | string | UnizPay’s id (pay_…) |
payment_id | string | Your reference, unique per mode |
livemode | boolean | true in live mode |
source | string | payment_link (made in the dashboard), api_checkout (paid on the hosted page), api_headless (paid in your UI), or api (no address requested yet) |
status | string | See Payment lifecycle |
amount | string | Price in USD, for example "25.00" |
currency | string | Always "USD" |
checkout_url | string | Hosted payment page, with the checkout token in the fragment |
checkout_token | string | Payment-scoped token for payer-facing pages (cs_…) |
expires_at | string | null | Last moment to request a deposit address; null never expires |
max_conversion_bps | integer | null | Per-payment override; null uses your payment defaults |
underpay_tolerance | string | null | Per-payment override in USD; null uses your payment defaults |
fee_payer | string | null | merchant or payer; null uses your payment defaults |
underpaid_at | string | null | When the payment became underpaid |
underpaid_accepted_at | string | null | When an underpaid payment was accepted |
accepted_tokens | object | null | Tokens offered on the hosted page for this payment; null uses your accepted tokens |
created_at | string | Creation time |
description | string | null | Shown to the payer |
success_url | string | null | Where the hosted page sends the payer after paying |
cancel_url | string | null | Where the hosted page sends a payer who leaves |
metadata | object | Your key-value data; never shown to the payer |
deposit_addresses | array | Addresses issued for this payment (below) |
deposits | array | Transfers received (below) |
settlements | array | Payout transactions (below) |
Deposit address
Section titled “Deposit address”| Field | Type | Description |
|---|---|---|
token | string | Token to send, for example "USDC" |
network | string | Network name, for example "polygon" |
network_name | string | Display name, for example "Polygon" |
chain_id | string | CAIP-2 chain id |
address | string | The deposit address |
explorer_url | string | The address on the network’s block explorer |
pay_amount | string | Amount of token to send, fees included |
quote_expires_at | string | End of the window to pay at this address |
processing_fee | string | USD added to the price when the payer pays the fees; "0.00" otherwise |
price_locked | boolean | true for tokens whose price moves: the amount is a 15-minute quote |
window_seconds | integer | Length of the window from when the address was issued |
Deposit
Section titled “Deposit”| Field | Type | Description |
|---|---|---|
token | string | Token received |
amount | string | Amount received |
tx_hash | string | Transaction that sent it |
explorer_url | string | The transaction on the block explorer |
network | string | Network name |
from | string | null | Sender address |
status | string | detected, confirmed, final, or reorged (dropped by a chain reorganization; not counted) |
detected_at | string | When it was first seen |
Settlement
Section titled “Settlement”| Field | Type | Description |
|---|---|---|
kind | string | sweep (same token), swap (converted on the same network), bridge (delivered to another network), raw (delivered unconverted to your fallback) |
status | string | pending, submitted, bridging, succeeded, refunded (a cross-network delivery was refunded to the source network), or failed |
tx_hash | string | null | The settlement transaction |
explorer_url | string | null | That transaction on the block explorer |
destination_tx_hash | string | null | Cross-network only: the delivery (or refund) transaction |
destination_explorer_url | string | null | That transaction on the block explorer |
created_at | string | When settlement started |
token | string | null | Token delivered to you |
net | string | null | Amount delivered to you |
platform_fee | string | null | The $0.10 platform fee, in fee_token |
fee_token | string | null | Token of platform_fee and network_cost (for cross-network deliveries, the token on the source network) |
network_cost | string | null | Gas cost passed through at cost, in fee_token |