Payment Page — Query Status & Expire

This guide shows how to look up the current status of a payment page and how to expire it before the user makes the payment. It follows the same API response pattern as the rest of Breeze. 

Recommended approach: Rely on webhooks for real-time state (event type: PAYMENT_SUCCEEDED, PAYMENT_EXPIRED) and use the read endpoints below when you need an immediate, on-demand check (e.g., rendering an admin screen). 

Prerequisites

  • You’ve already created a payment page via POST /v1/payment_pages and received an id (e.g., page_abc123xyz) and the hosted URL.

1. Get Payment Page by ID

Use this if you already have the Breeze payment page id (e.g., from creation response or webhook payload). See 📄 API Reference — Get a payment page.

curl -X GET 'https://api.breeze.cash/v1/payment_pages/page_abc123xyz' \
  -u "YOUR_API_KEY:" \
  --header 'Accept: application/json'
FieldTypeDescription
idstringPayment page unique identifier
currencystringCurrency code, e.g., "USD"
amountnumberPayment amount in minor units (e.g., cents)
lineItemsarrayArray of purchased line items
├─ namestringName of the item
├─ currencystringCurrency for the item
├─ amountnumberAmount for the item in minor units
├─ pricenumberPrice per item
├─ quantitynumberQuantity of the item
├─ descriptionstringDescription of the item
└─ imagesstring[]Array of image URLs
clientReferenceIdstringReference to merchant's original client order
successReturnUrlstringURL customer gets redirected to on success
failReturnUrlstringURL customer gets redirected to on failure
createdAtnumberTimestamp (ms since epoch)
urlstringHosted payment page URL
statusstringPayment page statusPAID UNPAID EXPIRED
transactionAmountnumberThe amount transacted (in minor units)
billingEmailstringEmail address associated with the billing
paymentTypestringPayment method type, e.g., "card"
customerobjectCustomer metadata
├─ idstringCustomer ID
├─ referenceIdstringReference for customer
└─ emailstringCustomer email address
payinDetailsobjectDetails of the payment method used, only populated if the payment status is PAID
├─ amountnumberPaid amount (minor units)
├─ currencystringPaid currency
├─ schemestringCard scheme: Visa | Mastercard | American Express
├─ last4stringLast four of card number
├─ taxAmountnumberTax collected (minor units), for example if the taxAmount is 60, it indicates a tax of $0.60 was collected from the customer
├─ typestringPayin type, e.g., "card"
├─ cardTypestringCard type: CREDIT | DEBIT | PREPAID
├─ binstringBank identification number (first 6 of card)
├─ issuerstringIssuing bank name
└─ threeDSobjectDetails of the 3DS authentication
├─ requestedbooleanIndicates if 3DS was requested
├─ flowstring"CHALLENGE" or "FRICTIONLESS"
├─ authenticationStatusCodestringEMVCo character code for the authentication status, values include "Y", "N", "U", "A", "C", "D", "R", "I"
└─ ecistringElectronic Commerce Indicator (ECI) value that indicate the authentication level and liability shift

Successful response

{
    "status": "SUCCEEDED",
    "data": {
        "id": "page_xxxxxxxxxxxxxxxx",
        "currency": "USD",
        "amount": 1000,
        "lineItems": [
            {
                "name": "item-name",
                "currency": "CUR",
                "amount": 1000,
                "price": 1000,
                "quantity": 1,
                "description": "item description",
                "images": [
                    "https://example.com/image.png"
                ]
            }
        ],
        "clientReferenceId": "order-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "successReturnUrl": "https://example.com/success",
        "failReturnUrl": "https://example.com/fail",
        "createdAt": 1234567890123,
        "url": "https://pay.example.com/page_xxxxxxxxxxxxxxxx/token_xxxxxxxxxxxxxxxx",
        "status": "PAID",
        "transactionAmount": 1000,
        "billingEmail": "[email protected]",
        "isRecurring": false,
        "paymentType": "card",
        "customer": {
            "id": "cus_xxxxxxxxxxxxxxxx",
            "referenceId": "ref_xxxxxxxxxxxx",
            "email": "[email protected]"
        },
        "payinDetails": {
            "amount": 1000,
            "currency": "CUR",
            "scheme": "VISA",
            "last4": "1234",
            "taxAmount": 0,
            "type": "card",
            "cardType": "CREDIT",
            "bin": "123456",
            "issuer": "Bank Name",
            "threeDS": {
                "requested": true,
                "authenticationStatusCode": "Y",
                "flow": "CHALLENGE",
                "eci": "05"
            }
        }
    }
}

Note: payinDetails is only present for card and Apple Pay payments. For crypto payments, use the fields below instead.

FieldTypeDescription
networkstringBlockchain network: POLYGON, ETHEREUM, SOLANA, ARBITRUM, OPTIMISM
tokenstringCrypto token: USDC, ETH, SOL, DAI
walletAddressstringCustomer's wallet address
walletTypestringWallet client used: metamask, walletconnect
transactionHashstringBlockchain transaction hash
tokenAmountstringAmount in token units (e.g. "10.00")

Successful response (crypto — USDC on Polygon)

{
    "status": "SUCCEEDED",
    "data": {
        "id": "page_abc123xyz",
        "currency": "USD",
        "amount": 1000,
        "lineItems": [
            {
                "name": "item-name",
                "currency": "USD",
                "amount": 1000,
                "price": 1000,
                "quantity": 1,
                "description": "item description",
                "images": [
                    "https://example.com/image.png"
                ]
            }
        ],
        "clientReferenceId": "order-001",
        "successReturnUrl": "https://example.com/success",
        "failReturnUrl": "https://example.com/fail",
        "createdAt": 1234567890123,
        "url": "https://pay.breeze.cash/page_abc123xyz/pcs_abc123xyz",
        "status": "PAID",
        "transactionAmount": 1000,
        "billingEmail": "[email protected]",
        "isRecurring": false,
        "paymentType": "evm_wallet_payment",
        "network": "POLYGON",
        "token": "USDC",
        "walletAddress": "0x676dB5B2585466479298f5Bf56D58699B45D563D",
        "walletType": "metamask",
        "transactionHash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
        "tokenAmount": "10.00",
        "customer": {
            "id": "cus_abc123xyz",
            "referenceId": "ref_abc123xyz",
            "email": "[email protected]"
        }
    }
}

2. Expire a payment page

Use this to explicitly expire a payment page before the user makes the payment. After a successful expire, subsequent webhook(s) will also reflect PAYMENT_EXPIRED.

  • Breeze will reject the expire request if the user has already made the payment.
curl -X POST 'https://api.breeze.cash/v1/payment_pages/page_abc123xyz/expire' \
  -u "YOUR_API_KEY:" \
  --header 'Content-Type: application/json'

Successful response

{
  "status": "SUCCEEDED",
  "data": {
    "id": "page_abc123xyz",
    "status": "EXPIRED",
    "clientReferenceId": "order-<your-unique-id>",
    ...
  }
}

Error responses

{  
  "status": "FAILED",  
  "errorCode": "WRONG_PARAMETER",
  "errorMessage": "<more-detailed-error-message>"
}

List all payment pages

Use this to fetch a paginated list of payment pages, for example when building a dashboard or running reconciliation.

curl -X GET 'https://api.breeze.cash/v1/payment_pages' \
  -u "YOUR_API_KEY:" \
  --header 'Accept: application/json'

Query parameters

ParameterTypeDescription
limitintegerNumber of payment pages to return (1–100, default 100)
offsetintegerNumber of payment pages to skip (min 0, default 0)
statusstringFilter by status: UNPAID | PAID | EXPIRED | CANCELED

Each object in data follows the same schema as Get Payment Page by ID above.

FieldTypeDescription
dataarrayArray of payment page objects
hasMorebooleantrue if there are more results beyond this page

Successful response

{
  "status": "SUCCEEDED",
  "data": [
    {
      "id": "page_abc123xyz",
      "status": "PAID",
      ...
    }
  ],
  "hasMore": false
}

Error codes — For a complete list of errors returned by the payin endpoints, see the Error Reference.

Webhooks — For payload examples and event sequences fired during payment flows (PAYMENT_CREATED, PAYMENT_SUCCEEDED, PAYMENT_EXPIRED, PAYMENT_ATTEMPT_FAILED), see the Webhook Event Reference.