Skip to main content

Payment Pages API

Payment page endpoints are public customer-facing endpoints used by hosted payment flows. They are excluded from the gateway /api/v1 prefix.

Authentication

Payment page reads require a pre-signed query string:
Query ParameterDescription
sig or signatureHMAC-SHA256 signature generated by 123hub
exp or expiresUnix timestamp in seconds
Invalid, expired, or mismatched signatures return 404 to avoid leaking payment page existence. The signature covers:
token.exp.signatureNonce.signatureVersion

Get Payment Page Details

GET /payment-pages/{token}/details?sig={signature}&exp={expires}
Returns public payment page data.
{
  "token": "pp_abc123",
  "status": "active",
  "expires_at": "2026-04-24T12:00:00.000Z",
  "deep_links": {
    "web": "https://payment.example/checkout",
    "android": "intent://...",
    "ios": "upi://pay?..."
  },
  "return_urls": {
    "success_url": "https://merchant.example/success",
    "cancel_url": "https://merchant.example/cancel"
  },
  "payment": {
    "transaction_id": "pay_1234567890abcdef",
    "status": "pending",
    "amount_minor": 125000,
    "amount": 1250,
    "currency": "ARS",
    "method": "bank_transfer",
    "type": "deposit_pp",
    "reference": "order-123",
    "created_at": "2026-04-24T10:30:00.000Z",
    "customer": {
      "name": "Jane Doe",
      "email": "jane@example.com",
      "phone": "+5491155551234"
    },
    "instructions": {
      "bank_name": "Banco de la Nacion Argentina",
      "account_number": "012345678901234567",
      "cbu": "2850590940090418135201",
      "clabe": "646180157000123456",
      "beneficiary": "QuadPay LATAM S.A."
    }
  }
}

Legacy Page Endpoint

GET /payment-pages/{token}
This route currently returns 404 with a message directing clients to /payment-pages/{token}/details. New integrations should use /details.

Payment Events Stream

GET /payment-pages/{token}/events?sig={signature}&exp={expires}
Opens a Server-Sent Events stream for payment-page status updates.
EventDescription
payment-eventPayment event payload with event, payment_id, payment, and timestamp
heartbeatKeep-alive event every 30 seconds
timeoutStream reached maximum duration
completeStream completed
errorStream failed
The stream automatically closes after 30 minutes. The route is throttled more strictly than the details endpoint.