Skip to main content

API Reference

The public merchant API is centered on the payment API endpoint:
All method-dispatched operations in this surface use that URL; the JSON body method field selects the operation. Webhook resend is a separate route listed below and has a stricter route-bound signature contract.

Public Surfaces

Provider callback endpoints, health checks, metrics, and internal admin APIs are not part of the merchant-facing public API documentation.

API Methods

See API Methods for request and response shapes and Support API fundamentals for strict support authentication, idempotency, scopes and pagination.

Authentication

Requests to POST /public/api/multihub/v1 require X-Data-Application-Id and X-Data-Hash. For that method-dispatched endpoint, timestamp and nonce are optional: The bytes you hash must match the HTTP request body exactly. Compact JSON and pretty JSON produce different signatures. Send X-Data-Timestamp and X-Data-Nonce as a pair when you use replay proof. Every method dispatched through /public/api/multihub/v1 accepts requests with neither replay header; one-without-the-other is rejected. If replay storage is temporarily unavailable, a correctly signed request is not rejected solely because it included the optional pair. POST /api/v1/payments/{paymentId}/webhook/resend also requires only application id and hash. Without replay headers it signs the raw request body; with the complete optional pair it uses the route-bound v1 signature described in Webhooks. Its body requires payment_id and operation_id. Successful and error responses may include an X-Data-Hash response header. When present, it is computed as:

Response Envelope

Successful responses return HTTP 200:
Errors use HTTP 400 for validation/authentication, 403 for scope/policy denial, 404 for unknown methods or tenant-safe absence, 409 for state/idempotency conflicts, 429 for quotas, and 503 for unavailable support dependencies:
Always use success as the primary outcome flag. HTTP status only separates transport-level success from API errors.

Identifiers

Rate Limits

The public API controller is not limited by the default gateway IP throttler, but authenticated applications have per-method protective buckets for payment, balance, ticket, refund, chargeback, and attachment methods. Buckets are keyed by merchant/application and method. When a bucket is exhausted, the API returns HTTP 429 with the standard API error envelope and Retry-After-* headers; retry with backoff rather than tight polling. HTTP 403 is used for credential-policy or merchant-ownership denials. DTO validation errors use code 9000 with HTTP 400; strict validation rejects unknown fields. Gateway readiness checks can return a non-envelope HTTP 503 while dependencies are not ready. For balance.get, value_blocking is currently always 0 and enabled is currently always true in runtime responses. Treat them as compatibility fields unless your account manager confirms a product change. Payment-page endpoints use gateway throttling and route-specific limits. See their reference pages for details.