Support API fundamentals
Ticket, refund, chargeback, and attachment methods use the same signed API endpoint as payments:Prerequisites: create a server-side API credential with only the scopes
your integration needs. New support scopes are not granted to existing
credentials automatically.
Sign every request
Send the exact raw JSON body with the required application ID and hash. The timestamp and nonce are an optional pair:
Support methods never require timestamp/nonce. If you send replay proof, provide both headers with a fresh timestamp and nonce; partial, stale, and reused proofs are rejected when detected. Hash and send the same bytes: changing whitespace or key order after signing invalidates the request.
Responses use the existing envelope and are signed in the
X-Data-Hash response header:
SHA512(rawResponseBody + secretKey) before using its contents. Error responses use the same request_id and timing fields and are signed when credential verification succeeded; early authentication failures may not have a response signature.
Signed request example
The following example lists tickets. The same helper works for every method in this guide.Scopes
Scope checks are always enforced for these methods. A credential can additionally restrict currencies or payment routes; payment-linked methods resolve the payment first and apply that policy to its actual currency and service.
Identifiers and idempotency
Resources expose only public identifiers:ticket.create and refund.request require params.identifiers.c_id. A successful response contains both c_id and h_id. Read methods accept exactly one of them, except chargebacks, which are addressed only by h_id.
State-changing methods other than ticket/refund creation require a top-level operation_id:
c_id or operation_id when retrying the same logical mutation. The server stores the completed business result without a time-to-live:
- same key and same payload returns the original result;
- same key and different payload returns HTTP
409with code1013; - transport timeouts do not authorize changing the key;
- key scope is merchant + method, so do not reuse an operation key for a different method.
refund.request, amount is an optional positive digit-string in minor units, up to 9223372036854775807. Values above JavaScript’s safe-integer limit remain strings in requests and responses; never coerce them to number.
Cursor pagination
All list methods use opaque cursor pagination:limit defaults to 25 and must be between 1 and 100. Pass next_cursor unchanged to obtain the next page; null means the list is complete. Lists intentionally omit an expensive total. Use the corresponding *.summary method for counts grouped by status.
Default quotas
Quotas are counted per merchant, application, and method.
HTTP
429 responses include the standard error envelope and retry headers. Do not retry mutations automatically unless you keep the same idempotency key and exact payload.
Common errors
For resource-specific codes, see Error Codes.
Best practices
- Store
request_id,c_id,h_id, method, and operation key with your local operation. - Treat all not-found responses as final for that credential; cross-merchant resources are deliberately indistinguishable from missing resources.
- Never send
merchant_id, application ID, actor, source, orservice_idin a support request body. - Use canonical dot-notation method names. Legacy payment aliases do not apply to support methods.
