Skip to main content
Every GET /{resource}/{id} response and every webhook payload uses this envelope. The attributes object varies by process — see the per-resource pages for full field tables.

Shape

Fields

Internal process machinery — the component, its raw state, and the template name — is deliberately not part of this contract and never appears in a response. Drive your integration from status and substatus.
process is a stage code, not a resource type. It tells you where a transaction is, not what kind it is, and some values — success.completed, for instance — are shared across products. Do not use it to decide how to parse attributes. Use the endpoint you called, and where one endpoint can return more than one shape, branch on which attribute keys are present.

Reading the envelope correctly

The four label objects are always present. When a state has no registered label, status, substatus, message, and error_message come back as {"en": "", "pt": "", "es": ""} — present with empty strings, not omitted. Treat an empty string as “no information”; do not expect the key to be missing. attributes is always an object. When a process has no published attribute schema you get {}, not a missing field or null. An attribute with an empty value is omitted from attributes. A missing key means “not filled in yet” — that is how you distinguish “hasn’t happened” from “happened with a zero value”. Check for key presence, not for a falsy value.

version is a label, not an API version

The field carries a literal per route, and the ramp routes still emit "v1": All of these are /v2/ routes on the same contract. The value is an inherited label — do not branch on it.

List responses

All list endpoints (GET /v2/crossramp_checkouts, GET /v2/onramps, etc.) return the same transaction objects inside a results array, wrapped in a pagination envelope:
total is the match count without pagination applied, so you can use it to page through the full set. results is never null — an empty page is []. Items inside results carry every field above except version. Lists are always ordered by creation time, newest first. The ordering is not configurable.

Webhooks

Webhooks deliver the same JSON object as the corresponding GET /{resource}/{id} endpoint. Configure the webhook URL per-transaction at creation time or per-template in the dashboard.