{"info":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","description":"<html><head></head><body><p>The Xago API combines REST endpoints for transactional operations with a WebSocket service that streams live market data, orderbook updates, and account<br>events.</p>\n<p>Your use of the API is subject to our Terms of Service.</p>\n<p>For any API questions, feedback, or suggestions, please reach out to our support team.</p>\n<p>The API lets you:</p>\n<ul>\n<li><p>Retrieve live and historical market data</p>\n</li>\n<li><p>Place, query, and cancel orders</p>\n</li>\n<li><p>Trade across all supported crypto and fiat markets</p>\n</li>\n<li><p>Move funds in and out of your crypto and fiat wallets</p>\n</li>\n<li><p>Subscribe to real-time orderbook, trade, and private account streams over WebSocket</p>\n<p>  Getting started</p>\n<p>  A few things to know before you start building against the Xago API:</p>\n</li>\n<li><p>MFA must be active on your account before API keys can be issued.</p>\n</li>\n<li><p>Every REST request must use the application/json content-type, and only HTTPS is accepted.</p>\n</li>\n<li><p>Successful REST calls return HTTP status codes in the 200–299 range, with the payload wrapped in a standard JSON response envelope. Anything outside that<br>  range indicates a server or infrastructure issue.</p>\n</li>\n<li><p>An order ID in the response does not guarantee the order has been filled. When you receive 202 Accepted, confirm the final state via the Order Status<br>  endpoint or the WebSocket feed.</p>\n</li>\n<li><p>Calls to authenticated endpoints without a valid API key or session token are rejected with HTTP 403.</p>\n</li>\n<li><p>POST, PUT, and PATCH requests missing the content-type: application/json header are also rejected with HTTP 403.</p>\n</li>\n<li><p>Two authentication modes are supported: session cookies for browser-based clients and API keys for programmatic access. Endpoints enforce role-based<br>  permissions, so access may depend on your account type (individual, corporate, aggregator, or admin).</p>\n</li>\n<li><p>Real-time data is split across two WebSocket channels — a public feed for market data and an authenticated private feed for account-specific events.</p>\n</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"49463771","collectionId":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","publishedId":"2sBXwjuCtW","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-05-20T09:43:49.000Z"},"item":[{"name":"Login","item":[{"name":"Generate Access Token","event":[{"listen":"test","script":{"id":"13cea562-8aff-4636-b6f3-b83fc90a4d15","exec":["// Assuming the token is in the response body in a field called \"tokenValue\"","var jsonData = pm.response.json();","pm.environment.set(\"access_token\", jsonData.tokenValue);",""],"type":"text/javascript","packages":{},"requests":{}}}],"id":"624b99e4-067c-4bec-b5c5-b3a047fb9821","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"policyId\": \"5e2585a474b0e90012ce8ff1\",\n    \"fields\": [\n        {\n            \"fieldName\": \"apiPublicKey\",\n            \"fieldValue\": \"your-api-key\"\n        },\n        {\n            \"fieldName\": \"apiSecretKey\",\n            \"fieldValue\": \"your-api-secret\"\n        }\n    ],\n    \"multiFactor\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/login","description":"<p>Exchange an API key pair for a JWT access token.</p>\n<p>Supply the API key policy ID (<code>5e2585a474b0e90012ce8ff1</code> in production) and provide the <code>apiPublicKey</code> / <code>apiSecretKey</code> field pair. The response body contains a <code>tokenValue</code> — store it and pass it on subsequent requests as the <code>Authorization: Bearer &lt;tokenValue&gt;</code> header.</p>\n<p><strong>Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>policyId</code></td>\n<td>string</td>\n<td>Identifier of the login policy.</td>\n</tr>\n<tr>\n<td><code>fields[].fieldName</code></td>\n<td>string</td>\n<td><code>apiPublicKey</code> or <code>apiSecretKey</code>.</td>\n</tr>\n<tr>\n<td><code>fields[].fieldValue</code></td>\n<td>string</td>\n<td>The credential value.</td>\n</tr>\n<tr>\n<td><code>multiFactor</code></td>\n<td>boolean</td>\n<td><code>false</code> for API key login.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Responses</strong></p>\n<ul>\n<li><code>200 OK</code> — JWT issued. The provided test script writes <code>tokenValue</code> into the <code>access_token</code> environment variable.</li>\n<li><code>400 Bad Request</code> — invalid payload shape.</li>\n<li><code>401 Unauthorized</code> — incorrect credentials or disabled API key.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["identity","v1","login"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"fcea7a68-b113-4ddf-89c7-f83cae96be51","name":"Success","originalRequest":{"auth":{"type":"noauth"},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"policyId\": \"5e2585a474b0e90012ce8ff1\",\n    \"fields\": [\n        {\n            \"fieldName\": \"apiPublicKey\",\n            \"fieldValue\": \"your-api-key\"\n        },\n        {\n            \"fieldName\": \"apiSecretKey\",\n            \"fieldValue\": \"your-api-secret\"\n        }\n    ],\n    \"multiFactor\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/login","description":"Exchange an API key pair for a JWT access token.\n\nSupply the API key policy ID (`5e2585a474b0e90012ce8ff1` in production) and provide the `apiPublicKey` / `apiSecretKey` field pair. The response body contains a `tokenValue` — store it and pass it on subsequent requests as the `Authorization: Bearer <tokenValue>` header.\n\n**Body**\n| Field | Type | Notes |\n|---|---|---|\n| `policyId` | string | Identifier of the login policy. |\n| `fields[].fieldName` | string | `apiPublicKey` or `apiSecretKey`. |\n| `fields[].fieldValue` | string | The credential value. |\n| `multiFactor` | boolean | `false` for API key login. |\n\n**Responses**\n- `200 OK` — JWT issued. The provided test script writes `tokenValue` into the `access_token` environment variable.\n- `400 Bad Request` — invalid payload shape.\n- `401 Unauthorized` — incorrect credentials or disabled API key."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"identityInfo\": {\n    \"identityType\": \"Business\",\n    \"activeStatus\": true,\n    \"adminVerified\": true,\n    \"aiqEnabled\": false,\n    \"statusLocked\": false,\n    \"referralCode\": \"\",\n    \"parentAdmin\": true,\n    \"parentId\": \"xago\",\n    \"superParentId\": \"xago\",\n    \"identityId\": \"46336530-03a3-11ee-a480-9dd8624f4f0d\",\n    \"roles\": [\n      \"admin\",\n      \"compliance\",\n      \"payments\"\n    ]\n  },\n  \"tokenValue\": \"ed36a0d3c2db48a21caf647d8436d299dd2babd6344d5219cfe7080661c410c5\"\n}"},{"id":"d4bf934a-8055-4fae-8b47-2d9b99d2144d","name":"Invalid credentials","originalRequest":{"auth":{"type":"noauth"},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"policyId\": \"5e2585a474b0e90012ce8ff1\",\n    \"fields\": [\n        {\n            \"fieldName\": \"apiPublicKey\",\n            \"fieldValue\": \"your-api-key\"\n        },\n        {\n            \"fieldName\": \"apiSecretKey\",\n            \"fieldValue\": \"your-api-secret\"\n        }\n    ],\n    \"multiFactor\": false\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/login","description":"Exchange an API key pair for a JWT access token.\n\nSupply the API key policy ID (`5e2585a474b0e90012ce8ff1` in production) and provide the `apiPublicKey` / `apiSecretKey` field pair. The response body contains a `tokenValue` — store it and pass it on subsequent requests as the `Authorization: Bearer <tokenValue>` header.\n\n**Body**\n| Field | Type | Notes |\n|---|---|---|\n| `policyId` | string | Identifier of the login policy. |\n| `fields[].fieldName` | string | `apiPublicKey` or `apiSecretKey`. |\n| `fields[].fieldValue` | string | The credential value. |\n| `multiFactor` | boolean | `false` for API key login. |\n\n**Responses**\n- `200 OK` — JWT issued. The provided test script writes `tokenValue` into the `access_token` environment variable.\n- `400 Bad Request` — invalid payload shape.\n- `401 Unauthorized` — incorrect credentials or disabled API key."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"Unauthorized\"\n  },\n  \"errors\": [\n    \"AuthenticationError: No matching policy found!\"\n  ]\n}"}],"_postman_id":"624b99e4-067c-4bec-b5c5-b3a047fb9821"}],"id":"31056b65-1f76-47b9-9ad9-538b9438d71e","description":"<p>Endpoint for obtaining an access token. Authenticate by posting your API public and secret keys to <code>/v1/login</code>; the response contains a <code>tokenValue</code> that you pass on every subsequent authenticated request as <code>Authorization: Bearer &lt;tokenValue&gt;</code>.</p>\n<p>A successful login returns:</p>\n<ul>\n<li><code>tokenValue</code> — an opaque session token (hex string). Pass it as the bearer credential on all authenticated calls.</li>\n<li><code>identityInfo</code> — a snapshot of the authenticated identity including <code>identityId</code>, <code>identityType</code>, <code>roles[]</code>, and account-status flags (<code>activeStatus</code>, <code>adminVerified</code>, <code>statusLocked</code>, <code>parentAdmin</code>, etc.).</li>\n</ul>\n<p><strong>Notes</strong></p>\n<ul>\n<li>MFA must be enabled on the account before API keys can be created, but the API-key login itself does not require an MFA code.</li>\n<li>Invalid credentials return <code>401 Unauthorized</code> with an <code>AuthenticationError</code> in <code>errors[]</code>. Malformed payloads return <code>400 Bad Request</code>.</li>\n<li>The token is opaque to clients — it is a server-side session reference, not a self-contained JWT, so its contents cannot be decoded locally. To invalidate it, call the logout endpoint or wait for the server-side session to expire; re-authenticate when you receive a <code>401</code> or <code>403</code> on a previously working call.</li>\n</ul>\n","_postman_id":"31056b65-1f76-47b9-9ad9-538b9438d71e","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Wallets","item":[{"name":"Get Wallet Balances","id":"47d40606-1109-4ea8-9e44-b0cbb393d229","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/wallet","description":"<p>Return every wallet held by the authenticated identity, with available and reserved balances per currency. Reserved balances reflect funds committed to open orders or pending withdrawals and are not spendable until released.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","wallet"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"08ae37ee-8c97-4d9a-a0b3-c29f2aac6e8d","name":"Success","originalRequest":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/wallet","description":"Return every wallet held by the authenticated identity, with available and reserved balances per currency. Reserved balances reflect funds committed to open orders or pending withdrawals and are not spendable until released."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"address\": \"rJTijYbdnutxgxDpQZrkhCw9SMwow5NZ7n\",\n  \"tag\": 1253366934,\n  \"balances\": [\n    {\n      \"currencyCode\": \"ZAR\",\n      \"balance\": 20780,\n      \"available\": 11580,\n      \"onTrade\": 9200,\n      \"inTransfer\": 0,\n      \"pendingWithdrawal\": 0\n    },\n    {\n      \"currencyCode\": \"CAD\",\n      \"balance\": 1000,\n      \"available\": 1000,\n      \"onTrade\": 0,\n      \"inTransfer\": 0,\n      \"pendingWithdrawal\": 0\n    },\n    {\n      \"currencyCode\": \"USDT\",\n      \"balance\": 1560,\n      \"available\": 1182,\n      \"onTrade\": 0,\n      \"inTransfer\": 115,\n      \"pendingWithdrawal\": 263\n    },\n    {\n      \"currencyCode\": \"USDC\",\n      \"balance\": 0,\n      \"available\": 0,\n      \"onTrade\": 0,\n      \"inTransfer\": 0,\n      \"pendingWithdrawal\": 0\n    },\n    {\n      \"currencyCode\": \"XRP\",\n      \"balance\": 0,\n      \"available\": 0,\n      \"onTrade\": 0,\n      \"inTransfer\": 0,\n      \"pendingWithdrawal\": 0\n    }\n  ],\n  \"cryptoAddresses\": [\n    {\n      \"id\": \"f1ae24f6-a755-4a30-a2c7-d5dafdb698c7\",\n      \"identityId\": \"46336530-03a3-11ee-a480-9dd8624f4f0d\",\n      \"currencyCode\": \"USDT\",\n      \"blockchain\": \"ethereum\",\n      \"address\": \"0xde1588269e35046b2922898dbce38dc70c0fbf6d\",\n      \"providerId\": null,\n      \"providerName\": \"CAPE_CRYPTO\",\n      \"state\": \"ACTIVE\"\n    }\n  ]\n}"}],"_postman_id":"47d40606-1109-4ea8-9e44-b0cbb393d229"}],"id":"0ea02844-11e4-4811-9c52-356cf92dc60b","description":"<p>Endpoints for inspecting the wallets and balances held by the authenticated identity. Each identity has one wallet per supported currency, holding both an available and a reserved balance (reserved funds back open orders and pending withdrawals).</p>\n","_postman_id":"0ea02844-11e4-4811-9c52-356cf92dc60b","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"KYC","item":[{"name":"Get the types and fields required for different KYC Requests","id":"3b972e23-12ee-4337-97ee-9ba37239d25f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/identity/v1/kyc/requests/request_types","description":"<p>Return the catalogue of KYC request types available to the caller. Each type bundles a set of fields (text, selector, checkbox, document) that the customer must complete. Use the returned <code>requestTypeId</code> when creating sub-accounts or submitting onboarding bundles.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","kyc","requests","request_types"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"6fe5d509-b9a4-4000-b08d-ab438f6a8266","name":"Success","originalRequest":{"method":"GET","header":[],"url":"https://exchange.xago.io/identity/v1/kyc/requests/request_types","description":"Return the catalogue of KYC request types available to the caller. Each type bundles a set of fields (text, selector, checkbox, document) that the customer must complete. Use the returned `requestTypeId` when creating sub-accounts or submitting onboarding bundles."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": \"eded359a-e5f1-4506-96f0-1b42af7e61dd\",\n    \"category\": \"beneficiary\",\n    \"scope\": \"bank\",\n    \"identityType\": \"corporate\",\n    \"requiredFields\": [\n      {\n        \"id\": \"cde132f7-8e61-4fce-bc57-825fbf03f2a7\",\n        \"fieldType\": \"document\",\n        \"name\": \"companyRegistrationDocument\",\n        \"displayName\": \"Company Registration Document\",\n        \"description\": \"Company registration document indicating directors of the company.\"\n      },\n      {\n        \"id\": \"42e3835c-cfec-46bf-b171-8e62f0b1d281\",\n        \"fieldType\": \"document\",\n        \"name\": \"directorsIdentityDocument\",\n        \"displayName\": \"Director's ID\",\n        \"selectorOptions\": [\n          \"National ID card\",\n          \"Passport\",\n          \"Driving licence\"\n        ],\n        \"allowMultiple\": true\n      }\n    ]\n  }\n]"}],"_postman_id":"3b972e23-12ee-4337-97ee-9ba37239d25f"},{"name":"Gets the fields required for a KYC Request","id":"48b0bc9d-c5d9-4259-89a1-1b32deb5b75c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/identity/v1/kyc/requests/adhoc/:requestId","description":"<p>Retrieve the field schema for a specific adhoc KYC request raised against the caller. Returns each <code>kycRequestFieldId</code>, its <code>fieldType</code>, label, and any validation hints. Use this response to build the dynamic submission payload for the corresponding POST endpoint.</p>\n<p><strong>Path params</strong></p>\n<ul>\n<li><code>:requestId</code> — the ID of the KYC request that was raised against the identity.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","kyc","requests","adhoc",":requestId"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","value":"","key":"requestId"}]}},"response":[{"id":"c4636df7-eae1-4657-9a3f-4ac304ab2b2b","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/identity/v1/kyc/requests/adhoc/:requestId","protocol":"https","host":["exchange","xago","io"],"path":["identity","v1","kyc","requests","adhoc",":requestId"],"variable":[{"key":"requestId","value":""}]},"description":"Retrieve the field schema for a specific adhoc KYC request raised against the caller. Returns each `kycRequestFieldId`, its `fieldType`, label, and any validation hints. Use this response to build the dynamic submission payload for the corresponding POST endpoint.\n\n**Path params**\n- `:requestId` — the ID of the KYC request that was raised against the identity."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestId\": \"c1d8f6b7-1234-4abc-9999-abcdef012345\",\n  \"state\": \"PENDING\",\n  \"expiresAt\": \"2026-06-20T12:00:00.000Z\",\n  \"requiredFields\": [\n    {\n      \"id\": \"f1\",\n      \"fieldType\": \"input\",\n      \"name\": \"fullName\",\n      \"displayName\": \"Full Name\",\n      \"isRequired\": true\n    },\n    {\n      \"id\": \"f3\",\n      \"fieldType\": \"document\",\n      \"name\": \"idDocument\",\n      \"displayName\": \"ID Document\",\n      \"isRequired\": true\n    }\n  ]\n}"},{"id":"f7c1d596-2234-41bb-b4de-526520be9848","name":"Invalid request ID","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/identity/v1/kyc/requests/adhoc/:requestId","protocol":"https","host":["exchange","xago","io"],"path":["identity","v1","kyc","requests","adhoc",":requestId"],"variable":[{"key":"requestId","value":""}]},"description":"Retrieve the field schema for a specific adhoc KYC request raised against the caller. Returns each `kycRequestFieldId`, its `fieldType`, label, and any validation hints. Use this response to build the dynamic submission payload for the corresponding POST endpoint.\n\n**Path params**\n- `:requestId` — the ID of the KYC request that was raised against the identity."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"\"\n  },\n  \"externalStatus\": \"Invalid input\",\n  \"errors\": [\n    \"ValidationError: Invalid kyc request\"\n  ]\n}"},{"id":"246ba5d5-ecd8-41d6-9be7-2c58f4d42de0","name":"Validation error (missing field)","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/identity/v1/kyc/requests/adhoc/:requestId","protocol":"https","host":["exchange","xago","io"],"path":["identity","v1","kyc","requests","adhoc",":requestId"],"variable":[{"key":"requestId","value":""}]},"description":"Retrieve the field schema for a specific adhoc KYC request raised against the caller. Returns each `kycRequestFieldId`, its `fieldType`, label, and any validation hints. Use this response to build the dynamic submission payload for the corresponding POST endpoint.\n\n**Path params**\n- `:requestId` — the ID of the KYC request that was raised against the identity."},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 422,\n    \"message\": \"Invalid input\"\n  },\n  \"errors\": [\n    \"ValidationError: Missing data for field companyRegistrationDocument\"\n  ]\n}"}],"_postman_id":"48b0bc9d-c5d9-4259-89a1-1b32deb5b75c"},{"name":"Submits a completed KYC Request for review","id":"26482374-41d0-4e9d-83e8-92343f63cb9d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\n  {\n    \"kycRequestFieldId\": \"string\",\n    \"fieldType\": \"string\",\n    \"name\": \"string\",\n    \"docData\": \"string\",\n    \"docType\": \"string\",\n    \"docMimeType\": \"string\",\n    \"selectorData\": \"string\",\n    \"checkboxData\": false,\n    \"inputData\": \"string\"\n  },\n  {\n    \"kycRequestFieldId\": \"string\",\n    \"fieldType\": \"string\",\n    \"name\": \"string\",\n    \"docData\": \"string\",\n    \"docType\": \"string\",\n    \"docMimeType\": \"string\",\n    \"selectorData\": \"string\",\n    \"checkboxData\": false,\n    \"inputData\": \"string\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/kyc/requests/adhoc/:requestId","description":"<p>Submit completed KYC data for an adhoc request. The body is an array — one entry per field returned by the GET endpoint. Populate <code>inputData</code>, <code>selectorData</code>, <code>checkboxData</code>, or the <code>docData</code> / <code>docType</code> / <code>docMimeType</code> triplet depending on the field type.</p>\n<p>Submissions are queued for compliance review; the eventual outcome is delivered asynchronously via webhook or surfaced when the identity is next fetched.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","kyc","requests","adhoc",":requestId"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","value":"","key":"requestId"}]}},"response":[{"id":"b71a6853-8eaa-43c7-8eaa-626d34090201","name":"Submitted (verified from handler source)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\n  {\n    \"kycRequestFieldId\": \"string\",\n    \"fieldType\": \"string\",\n    \"name\": \"string\",\n    \"docData\": \"string\",\n    \"docType\": \"string\",\n    \"docMimeType\": \"string\",\n    \"selectorData\": \"string\",\n    \"checkboxData\": false,\n    \"inputData\": \"string\"\n  },\n  {\n    \"kycRequestFieldId\": \"string\",\n    \"fieldType\": \"string\",\n    \"name\": \"string\",\n    \"docData\": \"string\",\n    \"docType\": \"string\",\n    \"docMimeType\": \"string\",\n    \"selectorData\": \"string\",\n    \"checkboxData\": false,\n    \"inputData\": \"string\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://exchange.xago.io/identity/v1/kyc/requests/adhoc/:requestId","protocol":"https","host":["exchange","xago","io"],"path":["identity","v1","kyc","requests","adhoc",":requestId"],"variable":[{"key":"requestId","value":""}]},"description":"Submit completed KYC data for an adhoc request. The body is an array — one entry per field returned by the GET endpoint. Populate `inputData`, `selectorData`, `checkboxData`, or the `docData` / `docType` / `docMimeType` triplet depending on the field type.\n\nSubmissions are queued for compliance review; the eventual outcome is delivered asynchronously via webhook or surfaced when the identity is next fetched."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"state\": \"SUBMITTED\"\n}"}],"_postman_id":"26482374-41d0-4e9d-83e8-92343f63cb9d"},{"name":"Submits a completed KYC Onboarding Request for review","id":"88c5d164-291b-4d51-bfaf-22736d48f5e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\n  {\n    \"kycRequestFieldId\": \"string\",\n    \"fieldType\": \"string\",\n    \"name\": \"string\",\n    \"docData\": \"string\",\n    \"docType\": \"string\",\n    \"docMimeType\": \"string\",\n    \"selectorData\": \"string\",\n    \"checkboxData\": false,\n    \"inputData\": \"string\"\n  },\n  {\n    \"kycRequestFieldId\": \"string\",\n    \"fieldType\": \"string\",\n    \"name\": \"string\",\n    \"docData\": \"string\",\n    \"docType\": \"string\",\n    \"docMimeType\": \"string\",\n    \"selectorData\": \"string\",\n    \"checkboxData\": false,\n    \"inputData\": \"string\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/kyc/requests/onboarding","description":"<p>Submit a completed onboarding bundle for a new identity. Same payload shape as adhoc submission, but used for the initial onboarding flow rather than a later top-up request.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","kyc","requests","onboarding"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"0c2d7041-ad9e-45f6-9b14-287f510fd774","name":"Submitted (verified from handler source)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\n  {\n    \"kycRequestFieldId\": \"string\",\n    \"fieldType\": \"string\",\n    \"name\": \"string\",\n    \"docData\": \"string\",\n    \"docType\": \"string\",\n    \"docMimeType\": \"string\",\n    \"selectorData\": \"string\",\n    \"checkboxData\": false,\n    \"inputData\": \"string\"\n  },\n  {\n    \"kycRequestFieldId\": \"string\",\n    \"fieldType\": \"string\",\n    \"name\": \"string\",\n    \"docData\": \"string\",\n    \"docType\": \"string\",\n    \"docMimeType\": \"string\",\n    \"selectorData\": \"string\",\n    \"checkboxData\": false,\n    \"inputData\": \"string\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/kyc/requests/onboarding","description":"Submit a completed onboarding bundle for a new identity. Same payload shape as adhoc submission, but used for the initial onboarding flow rather than a later top-up request."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"state\": \"SUBMITTED\"\n}"},{"id":"847fa061-a33f-40d7-b5cb-921dca7b267e","name":"Refreshed token (when X-Auth-Token header is sent)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"[\n  {\n    \"kycRequestFieldId\": \"string\",\n    \"fieldType\": \"string\",\n    \"name\": \"string\",\n    \"docData\": \"string\",\n    \"docType\": \"string\",\n    \"docMimeType\": \"string\",\n    \"selectorData\": \"string\",\n    \"checkboxData\": false,\n    \"inputData\": \"string\"\n  },\n  {\n    \"kycRequestFieldId\": \"string\",\n    \"fieldType\": \"string\",\n    \"name\": \"string\",\n    \"docData\": \"string\",\n    \"docType\": \"string\",\n    \"docMimeType\": \"string\",\n    \"selectorData\": \"string\",\n    \"checkboxData\": false,\n    \"inputData\": \"string\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/kyc/requests/onboarding","description":"Submit a completed onboarding bundle for a new identity. Same payload shape as adhoc submission, but used for the initial onboarding flow rather than a later top-up request."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"\"ed36a0d3c2db48a21caf647d8436d299dd2babd6344d5219cfe7080661c410c5\""}],"_postman_id":"88c5d164-291b-4d51-bfaf-22736d48f5e4"}],"id":"0676a914-dd6f-4ac4-b375-bf3e3e870bf9","description":"<p>Endpoints for retrieving KYC requirements and submitting KYC data for review. KYC requests are dynamic — the fields a customer must complete depend on their identity type (individual, corporate, aggregator), jurisdiction, and the product they are onboarding to.</p>\n<p>A typical flow is:</p>\n<ol>\n<li>Call <strong>Get KYC request types</strong> to discover the available request templates.</li>\n<li>Call <strong>Get fields for a KYC request</strong> with the chosen request ID to retrieve the schema.</li>\n<li>Collect the field values and documents from the customer.</li>\n<li>Submit the completed bundle to the <strong>adhoc</strong> or <strong>onboarding</strong> endpoint.</li>\n</ol>\n<p>Documents are submitted inline as base64-encoded payloads in <code>docData</code>.</p>\n","_postman_id":"0676a914-dd6f-4ac4-b375-bf3e3e870bf9","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Company","item":[{"name":"Merchants","item":[{"name":"Get Merchant Accounts","id":"5b760e7f-448e-4898-bbde-389e46e84871","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/company/merchants?limit=9242&page=9242&accountId=string&accountEmail=string&accountMobile=string","description":"<p>List the merchant accounts owned by the calling company. Supports paging and filtering by merchant identifiers and contact details.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>limit</code>, <code>page</code> — pagination.</li>\n<li><code>accountId</code> — filter to a specific merchant.</li>\n<li><code>accountEmail</code>, <code>accountMobile</code> — lookup by contact detail.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","merchants"],"host":["exchange","xago","io"],"query":[{"key":"limit","value":"9242"},{"key":"page","value":"9242"},{"key":"accountId","value":"string"},{"key":"accountEmail","value":"string"},{"key":"accountMobile","value":"string"}],"variable":[]}},"response":[{"id":"20a82763-4ace-45ea-b171-d6db9eb401dc","name":"Success (shape based on /company/accounts pattern)","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/exchange/v1/company/merchants?limit=9242&page=9242&accountId=string&accountEmail=string&accountMobile=string","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","company","merchants"],"query":[{"key":"limit","value":"9242"},{"key":"page","value":"9242"},{"key":"accountId","value":"string"},{"key":"accountEmail","value":"string"},{"key":"accountMobile","value":"string"}]},"description":"List the merchant accounts owned by the calling company. Supports paging and filtering by merchant identifiers and contact details.\n\n**Query parameters**\n- `limit`, `page` — pagination.\n- `accountId` — filter to a specific merchant.\n- `accountEmail`, `accountMobile` — lookup by contact detail."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"totalItems\": 2,\n    \"itemCount\": 2,\n    \"numberOfPages\": 1,\n    \"limit\": 10,\n    \"pageNumber\": 1\n  },\n  \"data\": [\n    {\n      \"_id\": \"b553cfa3-52ef-41bc-922c-029e54ff2811\",\n      \"firstName\": \"Acme\",\n      \"lastName\": \"Pty Ltd\",\n      \"email\": \"ops@acme.example\",\n      \"mobileNumber\": \"+27821234567\",\n      \"status\": \"ACTIVE\",\n      \"createdAt\": \"2026-02-04T10:21:00.000Z\"\n    }\n  ]\n}"},{"id":"590185e4-e196-4487-8188-a52891900dcd","name":"Endpoint unavailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/exchange/v1/company/merchants?limit=9242&page=9242&accountId=string&accountEmail=string&accountMobile=string","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","company","merchants"],"query":[{"key":"limit","value":"9242"},{"key":"page","value":"9242"},{"key":"accountId","value":"string"},{"key":"accountEmail","value":"string"},{"key":"accountMobile","value":"string"}]},"description":"List the merchant accounts owned by the calling company. Supports paging and filtering by merchant identifiers and contact details.\n\n**Query parameters**\n- `limit`, `page` — pagination.\n- `accountId` — filter to a specific merchant.\n- `accountEmail`, `accountMobile` — lookup by contact detail."},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ResourceNotFound\",\n  \"message\": \"Route not registered on local stack (schema file missing). Verify against production.\"\n}"}],"_postman_id":"5b760e7f-448e-4898-bbde-389e46e84871"},{"name":"Create Merchant Account","id":"d26b30a6-4b07-4dd8-8dd3-88a60629e275","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"clientId\": \"string\",\n  \"firstName\": \"s_3\",\n  \"lastName\": \"SrN\",\n  \"email\": \"c@.uUCvCUEi.YJz\",\n  \"mobileNumber\": \"+086909979100\",\n  \"identificationDocumentType\": \"string\",\n  \"identificationNumber\": \"string\",\n  \"address\": \"string\",\n  \"country\": \"string\",\n  \"city\": \"string\",\n  \"district\": \"string\",\n  \"postalCode\": \"string\",\n  \"nationality\": \"string\",\n  \"dateOfBirth\": 7238.1762716742805,\n  \"parentId\": \"string\",\n  \"middleName\": \"L/^4XNT_d9le~m=M/f{;Pd\",\n  \"addressDocumentType\": \"string\",\n  \"destinationAddress\": \"string\",\n  \"tag\": \"string\",\n  \"documentImageFront\": \"string\",\n  \"documentImageBack\": \"string\",\n  \"passportNumber\": \"string\",\n  \"profileImage\": \"string\",\n  \"callBackURL\": \"string\",\n  \"extension\": \"string\",\n  \"addressProofImage\": \"string\",\n  \"secondaryMobileNumber\": \"+5807758\",\n  \"idNumberVersion\": \"string\",\n  \"homeAddressVersion\": \"string\",\n  \"thirdPartyVerificationUrlVersion\": \"string\",\n  \"idNumberHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"homeAddressHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"thirdPartyVerificationUrlHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"secondaryEmail\": \"YE_KCs6QdX.@.nZvsRAHs\",\n  \"dha\": {\n    \"flag\": false,\n    \"statusCode\": 6380.409561619861,\n    \"message\": \"string\"\n  }\n}"},"url":"https://exchange.xago.io/exchange/v1/company/merchants","description":"<p>Create a new merchant account beneath the calling company. The merchant becomes a parent for sub-accounts created via the aggregator sub-account endpoint. KYC requirements depend on the merchant's identity type — fetch the relevant request type first if your account is not whitelisted.</p>\n<hr />\n<p><strong>Response convention:</strong> the response contains <code>merchantId</code> — use it as the parent <code>merchantId</code> when creating sub-accounts via <strong>Create Sub Account (For Aggregator Account)</strong>, and to filter the <strong>Get All Sub Accounts</strong> list.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","merchants"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"3a5aa295-592e-4930-9381-d8baddbbce33","name":"Created (shape derived from handler — not live-verified)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"clientId\": \"string\",\n  \"firstName\": \"s_3\",\n  \"lastName\": \"SrN\",\n  \"email\": \"c@.uUCvCUEi.YJz\",\n  \"mobileNumber\": \"+086909979100\",\n  \"identificationDocumentType\": \"string\",\n  \"identificationNumber\": \"string\",\n  \"address\": \"string\",\n  \"country\": \"string\",\n  \"city\": \"string\",\n  \"district\": \"string\",\n  \"postalCode\": \"string\",\n  \"nationality\": \"string\",\n  \"dateOfBirth\": 7238.1762716742805,\n  \"parentId\": \"string\",\n  \"middleName\": \"L/^4XNT_d9le~m=M/f{;Pd\",\n  \"addressDocumentType\": \"string\",\n  \"destinationAddress\": \"string\",\n  \"tag\": \"string\",\n  \"documentImageFront\": \"string\",\n  \"documentImageBack\": \"string\",\n  \"passportNumber\": \"string\",\n  \"profileImage\": \"string\",\n  \"callBackURL\": \"string\",\n  \"extension\": \"string\",\n  \"addressProofImage\": \"string\",\n  \"secondaryMobileNumber\": \"+5807758\",\n  \"idNumberVersion\": \"string\",\n  \"homeAddressVersion\": \"string\",\n  \"thirdPartyVerificationUrlVersion\": \"string\",\n  \"idNumberHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"homeAddressHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"thirdPartyVerificationUrlHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"secondaryEmail\": \"YE_KCs6QdX.@.nZvsRAHs\",\n  \"dha\": {\n    \"flag\": false,\n    \"statusCode\": 6380.409561619861,\n    \"message\": \"string\"\n  }\n}"},"url":"https://exchange.xago.io/exchange/v1/company/merchants","description":"Create a new merchant account beneath the calling company. The merchant becomes a parent for sub-accounts created via the aggregator sub-account endpoint. KYC requirements depend on the merchant's identity type — fetch the relevant request type first if your account is not whitelisted."},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"merchantId\": \"b553cfa3-52ef-41bc-922c-029e54ff2811\",\n  \"status\": \"PENDING_COMPLIANCE_REVIEW\",\n  \"createdAt\": \"2026-05-20T11:50:00.000Z\"\n}"}],"_postman_id":"d26b30a6-4b07-4dd8-8dd3-88a60629e275"}],"id":"fede33c2-dcde-453f-b8e7-8dde1afb0631","description":"<p>Manage merchant accounts under a parent company. Merchants sit one level above sub-accounts in the hierarchy and are typically used by aggregators to segment their customer base.</p>\n","_postman_id":"fede33c2-dcde-453f-b8e7-8dde1afb0631","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Accounts","item":[{"name":"Get All Sub Accounts","id":"bc69b171-46e1-4255-898c-35dd82d026cd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/company/accounts?limit=9242&page=9242&merchantId=string&accountId=string&parentId=string&accountEmail=string&accountMobile=string","description":"<p>List sub-accounts owned by the calling company, optionally scoped to a specific merchant. Supports the standard <code>limit</code>/<code>page</code> paging plus filters by <code>accountId</code>, <code>parentId</code>, <code>accountEmail</code>, and <code>accountMobile</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts"],"host":["exchange","xago","io"],"query":[{"key":"limit","value":"9242"},{"key":"page","value":"9242"},{"key":"merchantId","value":"string"},{"key":"accountId","value":"string"},{"key":"parentId","value":"string"},{"key":"accountEmail","value":"string"},{"key":"accountMobile","value":"string"}],"variable":[]}},"response":[{"id":"0c87366e-e2f0-4161-baaf-6f269c71d10c","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/exchange/v1/company/accounts?limit=9242&page=9242&merchantId=string&accountId=string&parentId=string&accountEmail=string&accountMobile=string","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","company","accounts"],"query":[{"key":"limit","value":"9242"},{"key":"page","value":"9242"},{"key":"merchantId","value":"string"},{"key":"accountId","value":"string"},{"key":"parentId","value":"string"},{"key":"accountEmail","value":"string"},{"key":"accountMobile","value":"string"}]},"description":"List sub-accounts owned by the calling company, optionally scoped to a specific merchant. Supports the standard `limit`/`page` paging plus filters by `accountId`, `parentId`, `accountEmail`, and `accountMobile`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"totalItems\": 15,\n    \"itemCount\": 10,\n    \"numberOfPages\": 2,\n    \"limit\": 10,\n    \"pageNumber\": 1\n  },\n  \"data\": [\n    {\n      \"_id\": \"69a58dbef5f1f8f01fd8159b\",\n      \"firstName\": \"John\",\n      \"lastName\": \"Doe\",\n      \"activeStatus\": false,\n      \"customAccountId\": \"CUST-001\",\n      \"email\": \"john.doe@example.com\",\n      \"mobileNumber\": \"+27821234567\",\n      \"adminVerified\": false,\n      \"status\": \"PENDING_COMPLIANCE_REVIEW\",\n      \"beneficiaries\": [\n        {\n          \"uuid\": \"06575628-dea2-4c8b-a433-b2e32a783b9e\",\n          \"scope\": \"internal\",\n          \"type\": \"rollup\",\n          \"depositReference\": \"DEP8X162B\",\n          \"name\": \"Parent Company\",\n          \"identity\": {\n            \"mobileNumber\": \"+27821234500\",\n            \"uuid\": \"46336530-03a3-11ee-a480-9dd8624f4f0d\"\n          }\n        }\n      ],\n      \"createdAt\": \"2026-03-02T13:16:46.184Z\",\n      \"accountId\": \"ea405045-1581-40c5-9c69-3b36ea18ecbb\"\n    }\n  ]\n}"}],"_postman_id":"bc69b171-46e1-4255-898c-35dd82d026cd"},{"name":"Get Sub Account By Custom Reference","id":"3d32d0fe-0a48-478e-94a0-ed9160051e8e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/company/accounts/customreference/:customreference","description":"<p>Look up a sub-account by the <code>customReference</code> value supplied at creation. Useful when mapping Xago accounts to external customer IDs from your own system.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts","customreference",":customreference"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","value":"","key":"customreference"}]}},"response":[{"id":"73a2faaf-e21e-4879-af7f-ec7300de77ad","name":"Endpoint unavailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/exchange/v1/company/accounts/customreference/:customreference","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","company","accounts","customreference",":customreference"],"variable":[{"key":"customreference","value":""}]},"description":"Look up a sub-account by the `customReference` value supplied at creation. Useful when mapping Xago accounts to external customer IDs from your own system."},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ResourceNotFound\",\n  \"message\": \"Route not registered on local stack (schema file missing). Verify against production.\"\n}"}],"_postman_id":"3d32d0fe-0a48-478e-94a0-ed9160051e8e"},{"name":"Get Company Account By Id","id":"1123f52b-646d-49b1-bac3-31f29024d8e5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/company/accounts/:accountId","description":"<p>Return the full record for a single sub-account, including KYC status, contact details, and linked beneficiaries.</p>\n<p><strong>Path params</strong></p>\n<ul>\n<li><code>:accountId</code> — the Xago UUID of the sub-account.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts",":accountId"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","value":"","key":"accountId"}]}},"response":[{"id":"e789893f-1f6e-43d1-bf71-fc7c20411546","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/exchange/v1/company/accounts/:accountId","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","company","accounts",":accountId"],"variable":[{"key":"accountId","value":""}]},"description":"Return the full record for a single sub-account, including KYC status, contact details, and linked beneficiaries.\n\n**Path params**\n- `:accountId` — the Xago UUID of the sub-account."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"activeStatus\": false,\n  \"customAccountId\": \"CUST-001\",\n  \"email\": \"john.doe@example.com\",\n  \"mobileNumber\": \"+27821234567\",\n  \"adminVerified\": false,\n  \"status\": \"PENDING_COMPLIANCE_REVIEW\",\n  \"beneficiaries\": [\n    {\n      \"uuid\": \"06575628-dea2-4c8b-a433-b2e32a783b9e\",\n      \"scope\": \"internal\",\n      \"type\": \"rollup\",\n      \"depositReference\": \"DEP8X162B\",\n      \"name\": \"Parent Company\",\n      \"identity\": {\n        \"mobileNumber\": \"+27821234500\",\n        \"uuid\": \"46336530-03a3-11ee-a480-9dd8624f4f0d\"\n      }\n    }\n  ],\n  \"createdAt\": \"2026-03-02T13:16:46.184Z\",\n  \"accountId\": \"ea405045-1581-40c5-9c69-3b36ea18ecbb\"\n}"}],"_postman_id":"1123f52b-646d-49b1-bac3-31f29024d8e5"},{"name":"Get Sub Account Beneficiaries","id":"d8b96192-9d86-4b1c-b95b-9b3caae09769","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/company/accounts/beneficiaries/:uuid","description":"<p>List the beneficiaries linked to a single sub-account.</p>\n<p><strong>Path params</strong></p>\n<ul>\n<li><code>:uuid</code> — the sub-account's UUID.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts","beneficiaries",":uuid"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","value":"","key":"uuid"}]}},"response":[{"id":"85c93e6f-aa2d-4b8f-99b3-7feb46c8c304","name":"Server error","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/exchange/v1/company/accounts/beneficiaries/:uuid","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","company","accounts","beneficiaries",":uuid"],"variable":[{"key":"uuid","value":""}]},"description":"List the beneficiaries linked to a single sub-account.\n\n**Path params**\n- `:uuid` — the sub-account's UUID."},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"System Error\"\n  }\n}"}],"_postman_id":"d8b96192-9d86-4b1c-b95b-9b3caae09769"},{"name":"Update Company Account","id":"37313961-22f8-4c0a-9b02-6e33f5308d46","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"clientId\": \"string\",\n  \"firstName\": \"s_3\",\n  \"lastName\": \"SrN\",\n  \"email\": \"c@.uUCvCUEi.YJz\",\n  \"mobileNumber\": \"+086909979100\",\n  \"identificationDocumentType\": \"string\",\n  \"identificationNumber\": \"string\",\n  \"address\": \"string\",\n  \"country\": \"string\",\n  \"city\": \"string\",\n  \"district\": \"string\",\n  \"postalCode\": \"string\",\n  \"nationality\": \"string\",\n  \"dateOfBirth\": 7238.1762716742805,\n  \"parentId\": \"string\",\n  \"middleName\": \"L/^4XNT_d9le~m=M/f{;Pd\",\n  \"addressDocumentType\": \"string\",\n  \"destinationAddress\": \"string\",\n  \"tag\": \"string\",\n  \"documentImageFront\": \"string\",\n  \"documentImageBack\": \"string\",\n  \"passportNumber\": \"string\",\n  \"profileImage\": \"string\",\n  \"callBackURL\": \"string\",\n  \"extension\": \"string\",\n  \"addressProofImage\": \"string\",\n  \"secondaryMobileNumber\": \"+5807758\",\n  \"idNumberVersion\": \"string\",\n  \"homeAddressVersion\": \"string\",\n  \"thirdPartyVerificationUrlVersion\": \"string\",\n  \"idNumberHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"homeAddressHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"thirdPartyVerificationUrlHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"secondaryEmail\": \"YE_KCs6QdX.@.nZvsRAHs\",\n  \"dha\": {\n    \"flag\": false,\n    \"statusCode\": 6380.409561619861,\n    \"message\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/company/accounts","description":"<p>Update mutable fields on a sub-account (contact details, address, identification, etc.). Immutable fields (e.g. KYC-verified name) are ignored. Submit only the fields you want to change.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"8ebe956e-e953-4725-a198-4f0efa22afdb","name":"Updated","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"clientId\": \"string\",\n  \"firstName\": \"s_3\",\n  \"lastName\": \"SrN\",\n  \"email\": \"c@.uUCvCUEi.YJz\",\n  \"mobileNumber\": \"+086909979100\",\n  \"identificationDocumentType\": \"string\",\n  \"identificationNumber\": \"string\",\n  \"address\": \"string\",\n  \"country\": \"string\",\n  \"city\": \"string\",\n  \"district\": \"string\",\n  \"postalCode\": \"string\",\n  \"nationality\": \"string\",\n  \"dateOfBirth\": 7238.1762716742805,\n  \"parentId\": \"string\",\n  \"middleName\": \"L/^4XNT_d9le~m=M/f{;Pd\",\n  \"addressDocumentType\": \"string\",\n  \"destinationAddress\": \"string\",\n  \"tag\": \"string\",\n  \"documentImageFront\": \"string\",\n  \"documentImageBack\": \"string\",\n  \"passportNumber\": \"string\",\n  \"profileImage\": \"string\",\n  \"callBackURL\": \"string\",\n  \"extension\": \"string\",\n  \"addressProofImage\": \"string\",\n  \"secondaryMobileNumber\": \"+5807758\",\n  \"idNumberVersion\": \"string\",\n  \"homeAddressVersion\": \"string\",\n  \"thirdPartyVerificationUrlVersion\": \"string\",\n  \"idNumberHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"homeAddressHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"thirdPartyVerificationUrlHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"secondaryEmail\": \"YE_KCs6QdX.@.nZvsRAHs\",\n  \"dha\": {\n    \"flag\": false,\n    \"statusCode\": 6380.409561619861,\n    \"message\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/company/accounts","description":"Update mutable fields on a sub-account (contact details, address, identification, etc.). Immutable fields (e.g. KYC-verified name) are ignored. Submit only the fields you want to change."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"\"\n  }\n}"}],"_postman_id":"37313961-22f8-4c0a-9b02-6e33f5308d46"},{"name":"Update Third Party Verification Url","id":"5dc7f8f2-97d6-42b3-ae5e-a16425ba4a6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"clientId\": \"string\",\n  \"firstName\": \"s_3\",\n  \"lastName\": \"SrN\",\n  \"email\": \"c@.uUCvCUEi.YJz\",\n  \"mobileNumber\": \"+086909979100\",\n  \"identificationDocumentType\": \"string\",\n  \"identificationNumber\": \"string\",\n  \"address\": \"string\",\n  \"country\": \"string\",\n  \"city\": \"string\",\n  \"district\": \"string\",\n  \"postalCode\": \"string\",\n  \"nationality\": \"string\",\n  \"dateOfBirth\": 7238.1762716742805,\n  \"parentId\": \"string\",\n  \"middleName\": \"L/^4XNT_d9le~m=M/f{;Pd\",\n  \"addressDocumentType\": \"string\",\n  \"destinationAddress\": \"string\",\n  \"tag\": \"string\",\n  \"documentImageFront\": \"string\",\n  \"documentImageBack\": \"string\",\n  \"passportNumber\": \"string\",\n  \"profileImage\": \"string\",\n  \"callBackURL\": \"string\",\n  \"extension\": \"string\",\n  \"addressProofImage\": \"string\",\n  \"secondaryMobileNumber\": \"+5807758\",\n  \"idNumberVersion\": \"string\",\n  \"homeAddressVersion\": \"string\",\n  \"thirdPartyVerificationUrlVersion\": \"string\",\n  \"idNumberHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"homeAddressHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"thirdPartyVerificationUrlHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"secondaryEmail\": \"YE_KCs6QdX.@.nZvsRAHs\",\n  \"dha\": {\n    \"flag\": false,\n    \"statusCode\": 6380.409561619861,\n    \"message\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/company/accounts/:accountId","description":"<p>Attach or replace the third-party verification URL (e.g. a Persona inquiry link) on a sub-account. Used by whitelisted accounts that complete KYC via an external provider rather than the inline KYC submission endpoints.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts",":accountId"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","value":"","key":"accountId"}]}},"response":[{"id":"c4b5970d-902c-42b5-9dd9-ed81f29f99db","name":"Updated","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"clientId\": \"string\",\n  \"firstName\": \"s_3\",\n  \"lastName\": \"SrN\",\n  \"email\": \"c@.uUCvCUEi.YJz\",\n  \"mobileNumber\": \"+086909979100\",\n  \"identificationDocumentType\": \"string\",\n  \"identificationNumber\": \"string\",\n  \"address\": \"string\",\n  \"country\": \"string\",\n  \"city\": \"string\",\n  \"district\": \"string\",\n  \"postalCode\": \"string\",\n  \"nationality\": \"string\",\n  \"dateOfBirth\": 7238.1762716742805,\n  \"parentId\": \"string\",\n  \"middleName\": \"L/^4XNT_d9le~m=M/f{;Pd\",\n  \"addressDocumentType\": \"string\",\n  \"destinationAddress\": \"string\",\n  \"tag\": \"string\",\n  \"documentImageFront\": \"string\",\n  \"documentImageBack\": \"string\",\n  \"passportNumber\": \"string\",\n  \"profileImage\": \"string\",\n  \"callBackURL\": \"string\",\n  \"extension\": \"string\",\n  \"addressProofImage\": \"string\",\n  \"secondaryMobileNumber\": \"+5807758\",\n  \"idNumberVersion\": \"string\",\n  \"homeAddressVersion\": \"string\",\n  \"thirdPartyVerificationUrlVersion\": \"string\",\n  \"idNumberHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"homeAddressHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"thirdPartyVerificationUrlHistory\": [\n    \"string\",\n    \"string\"\n  ],\n  \"secondaryEmail\": \"YE_KCs6QdX.@.nZvsRAHs\",\n  \"dha\": {\n    \"flag\": false,\n    \"statusCode\": 6380.409561619861,\n    \"message\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://exchange.xago.io/exchange/v1/company/accounts/:accountId","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","company","accounts",":accountId"],"variable":[{"key":"accountId","value":""}]},"description":"Attach or replace the third-party verification URL (e.g. a Persona inquiry link) on a sub-account. Used by whitelisted accounts that complete KYC via an external provider rather than the inline KYC submission endpoints."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"\"\n  }\n}"}],"_postman_id":"5dc7f8f2-97d6-42b3-ae5e-a16425ba4a6d"},{"name":"Create Sub Account","id":"2c056dc9-7de3-4eab-8282-88e86c9dcd1f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@gmail.com\",\n    \"mobileNumber\": \"+27821234567\",\n    \"kycRequest\": {\n        // NOTE: These requirements are dynamic based on the identity type of the customer - see 7. Get KYC REQUEST TYPES. If your account is whitelisted, see below\n        \"kycRequestTypeId\": \"7338beda-3aaf-44c2-b47b-ac1cba7b523a\",\n        \"kycRequestData\": [\n            {\n                \"fieldName\": \"dateOfBirth\",\n                \"data\": \"19971107\"\n            },\n            {\n                \"fieldName\": \"idNumber\",\n                \"data\": \"0123456789012\"\n            },\n            {\n                \"fieldName\": \"address\",\n                \"data\": \"TestStreet\"\n            },\n            {\n                \"fieldName\": \"cityOfResidence\",\n                \"data\": \"Pretoria\"\n            },\n            {\n                \"fieldName\": \"districtOfResidence\",\n                \"data\": \"Garsfontein\"\n            },\n            {\n                \"fieldName\": \"postalCode\",\n                \"data\": \"0157\"\n            },\n            {\n                \"fieldName\": \"countryOfResidence\",\n                \"data\": \"ZA\"\n            },\n            {\n                \"fieldName\": \"nationality\",\n                \"data\": \"ZA\"\n            },\n            {\n                \"fieldName\": \"identityDocument\",\n                \"selectorOption\": \"South African ID Document\",\n                \"data\": \"file converted to base 64\"\n            },\n            {\n                \"fieldName\": \"signature\",\n                \"data\": \"file converted to base 64\"\n            },\n            {\n                \"fieldName\": \"sourceOfFundsDocument\",\n                \"selectorOption\": \"Angel Investments\",\n                \"data\": \"file converted to base 64\"\n            },\n            {\n                \"fieldName\": \"sourceOfFundsDocument\",\n                \"selectorOption\": \"Bank statement\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/company/accounts","description":"<p>Create a sub-account under the calling company. KYC requirements are dynamic — call <strong>Get KYC request types</strong> first to discover the correct <code>kycRequestTypeId</code> and the fields to include in <code>kycRequestData</code>.</p>\n<p>If your account is whitelisted, use <strong>Create Sub Account (For Whitelisted Account)</strong> instead and supply a <code>thirdPartyVerificationUrl</code>.</p>\n<hr />\n<p><strong>Response convention:</strong> the response contains <code>accountId</code> — use it on <strong>Get Company Account By Id</strong>, <strong>Update Company Account</strong>, or as the <code>accountId</code> filter on <strong>Sub Account Transactions</strong>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"1d174965-50e8-4483-a977-da78939e3beb","name":"Created (shape derived from handler — not live-verified)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@gmail.com\",\n    \"mobileNumber\": \"+27821234567\",\n    \"kycRequest\": {\n        // NOTE: These requirements are dynamic based on the identity type of the customer - see 7. Get KYC REQUEST TYPES. If your account is whitelisted, see below\n        \"kycRequestTypeId\": \"7338beda-3aaf-44c2-b47b-ac1cba7b523a\",\n        \"kycRequestData\": [\n            {\n                \"fieldName\": \"dateOfBirth\",\n                \"data\": \"19971107\"\n            },\n            {\n                \"fieldName\": \"idNumber\",\n                \"data\": \"0123456789012\"\n            },\n            {\n                \"fieldName\": \"address\",\n                \"data\": \"TestStreet\"\n            },\n            {\n                \"fieldName\": \"cityOfResidence\",\n                \"data\": \"Pretoria\"\n            },\n            {\n                \"fieldName\": \"districtOfResidence\",\n                \"data\": \"Garsfontein\"\n            },\n            {\n                \"fieldName\": \"postalCode\",\n                \"data\": \"0157\"\n            },\n            {\n                \"fieldName\": \"countryOfResidence\",\n                \"data\": \"ZA\"\n            },\n            {\n                \"fieldName\": \"nationality\",\n                \"data\": \"ZA\"\n            },\n            {\n                \"fieldName\": \"identityDocument\",\n                \"selectorOption\": \"South African ID Document\",\n                \"data\": \"file converted to base 64\"\n            },\n            {\n                \"fieldName\": \"signature\",\n                \"data\": \"file converted to base 64\"\n            },\n            {\n                \"fieldName\": \"sourceOfFundsDocument\",\n                \"selectorOption\": \"Angel Investments\",\n                \"data\": \"file converted to base 64\"\n            },\n            {\n                \"fieldName\": \"sourceOfFundsDocument\",\n                \"selectorOption\": \"Bank statement\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/exchange/v1/company/accounts","description":"Create a sub-account under the calling company. KYC requirements are dynamic — call **Get KYC request types** first to discover the correct `kycRequestTypeId` and the fields to include in `kycRequestData`.\n\nIf your account is whitelisted, use **Create Sub Account (For Whitelisted Account)** instead and supply a `thirdPartyVerificationUrl`."},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"accountId\": \"ea405045-1581-40c5-9c69-3b36ea18ecbb\",\n  \"status\": \"PENDING_COMPLIANCE_REVIEW\",\n  \"customAccountId\": \"CUST-001\",\n  \"createdAt\": \"2026-05-20T11:55:00.000Z\"\n}"}],"_postman_id":"2c056dc9-7de3-4eab-8282-88e86c9dcd1f"},{"name":"Create Sub Account (For Whitelisted Account)","id":"2727c5cc-8e3c-40d4-ac9c-f20131303d3b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@gmail.com\",\n    \"mobileNumber\": \"+278212345678\",\n    \"thirdPartyVerificationUrl\": \"https://persona.com/128312312321321322\",\n    \"identityType\": \"individual\",\n    \"idNumber\": \"8308912312313\",\n    \"physicalAddress\": \"1 Crypto Road, Cape Town, 8001, South Africa\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/company/accounts","description":"<p>Create a sub-account using a third-party KYC provider URL instead of an inline KYC bundle. Requires the company to be whitelisted for the chosen provider.</p>\n<p><strong>Required fields</strong></p>\n<ul>\n<li><code>firstName</code>, <code>lastName</code>, <code>email</code>, <code>mobileNumber</code></li>\n<li><code>thirdPartyVerificationUrl</code> — link to the completed external verification.</li>\n<li><code>identityType</code> — typically <code>individual</code>.</li>\n<li><code>idNumber</code>, <code>physicalAddress</code>.</li>\n</ul>\n<hr />\n<p><strong>Response convention:</strong> the response contains <code>accountId</code> — use it on <strong>Get Company Account By Id</strong> or as the <code>accountId</code> filter on sub-account endpoints.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"db8945be-8f75-412d-82e8-0f06506ab136","name":"Created (shape derived from handler — not live-verified)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@gmail.com\",\n    \"mobileNumber\": \"+278212345678\",\n    \"thirdPartyVerificationUrl\": \"https://persona.com/128312312321321322\",\n    \"identityType\": \"individual\",\n    \"idNumber\": \"8308912312313\",\n    \"physicalAddress\": \"1 Crypto Road, Cape Town, 8001, South Africa\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/company/accounts","description":"Create a sub-account using a third-party KYC provider URL instead of an inline KYC bundle. Requires the company to be whitelisted for the chosen provider.\n\n**Required fields**\n- `firstName`, `lastName`, `email`, `mobileNumber`\n- `thirdPartyVerificationUrl` — link to the completed external verification.\n- `identityType` — typically `individual`.\n- `idNumber`, `physicalAddress`."},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"accountId\": \"ea405045-1581-40c5-9c69-3b36ea18ecbb\",\n  \"status\": \"ACTIVE\",\n  \"thirdPartyVerificationUrl\": \"https://persona.com/inq_128312312321321322\",\n  \"createdAt\": \"2026-05-20T11:56:00.000Z\"\n}"}],"_postman_id":"2727c5cc-8e3c-40d4-ac9c-f20131303d3b"},{"name":"Create Sub Account (For Aggregator Account)","id":"84c3ad42-b189-4e87-9f2b-2c126f7e97cb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@gmail.com\",\n    \"mobileNumber\": \"+278212345678\",\n    \"merchantId\": \"b553cfa3-52ef-41bc-922c-029e54ff2811\",\n    \"thirdPartyVerificationUrl\": \"https://persona.com/128312312321321322\",\n    \"identityType\": \"individual\",\n    \"idNumber\": \"8308912312313\",\n    \"physicalAddress\": \"1 Crypto Road, Cape Town, 8001, South Africa\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/company/accounts","description":"<p>Create a sub-account beneath a merchant owned by the calling aggregator. Same fields as the whitelisted-account variant, with the addition of <code>merchantId</code> to identify the parent merchant.</p>\n<hr />\n<p><strong>Response convention:</strong> the response contains <code>accountId</code> — use it on <strong>Get Company Account By Id</strong> or as the <code>accountId</code> filter on sub-account endpoints.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"04391741-f143-4582-8992-b39b86a0d40d","name":"Created (shape derived from handler — not live-verified)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@gmail.com\",\n    \"mobileNumber\": \"+278212345678\",\n    \"merchantId\": \"b553cfa3-52ef-41bc-922c-029e54ff2811\",\n    \"thirdPartyVerificationUrl\": \"https://persona.com/128312312321321322\",\n    \"identityType\": \"individual\",\n    \"idNumber\": \"8308912312313\",\n    \"physicalAddress\": \"1 Crypto Road, Cape Town, 8001, South Africa\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/company/accounts","description":"Create a sub-account beneath a merchant owned by the calling aggregator. Same fields as the whitelisted-account variant, with the addition of `merchantId` to identify the parent merchant."},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"accountId\": \"ea405045-1581-40c5-9c69-3b36ea18ecbb\",\n  \"merchantId\": \"b553cfa3-52ef-41bc-922c-029e54ff2811\",\n  \"status\": \"ACTIVE\",\n  \"createdAt\": \"2026-05-20T11:57:00.000Z\"\n}"}],"_postman_id":"84c3ad42-b189-4e87-9f2b-2c126f7e97cb"},{"name":"Create Company Beneficiary","id":"ea065df1-d198-4e94-b70a-0351ba198fd3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"scope\": \"string\",\n  \"name\": \"string\",\n  \"id\": \"string\",\n  \"customId\": \"string\",\n  \"uuid\": \"string\",\n  \"identityId\": \"string\",\n  \"sortCode\": \"string\",\n  \"beneficiaryLabel\": \"string\",\n  \"isOwn\": true,\n  \"status\": \"string\",\n  \"state\": \"string\",\n  \"type\": \"string\",\n  \"depositReference\": \"string\",\n  \"isStableCoin\": true,\n  \"wallet\": {\n    \"id\": \"string\",\n    \"name\": \"string\",\n    \"tag\": \"string\",\n    \"address\": \"rZ76aL9vVFoywR9V1f7lD0af1eRl\",\n    \"blockchain\": \"string\",\n    \"currencyCode\": \"CMTt\"\n  },\n  \"identity\": {\n    \"uuid\": \"string\",\n    \"mobileNumber\": \"string\"\n  },\n  \"shortName\": \"string\",\n  \"country\": \"string\",\n  \"bankName\": \"string\",\n  \"currencyCode\": \"string\",\n  \"BIC\": null,\n  \"IBAN\": null,\n  \"reference\": \"string\",\n  \"accountNumber\": \"string\",\n  \"mobilenumber\": \"+15586691530\",\n  \"mobileMoneyNetwork\": \"string\",\n  \"accountType\": {\n    \"name\": \"string\",\n    \"code\": \"string\"\n  },\n  \"branchCode\": \"string\",\n  \"district\": \"string\",\n  \"crptoNetwork\": \"string\",\n  \"crptoNetworkAddress\": \"string\",\n  \"address\": \"string\",\n  \"addressLine2\": \"string\",\n  \"city\": \"string\",\n  \"authorizationToken\": \"string\",\n  \"providerBeneficiaryId\": \"string\",\n  \"thirdPartyBankAccountId\": \"string\",\n  \"circleId\": \"string\",\n  \"bcbId\": \"string\",\n  \"accountStatus\": \"string\",\n  \"beneficiaryPostalCode\": \"string\",\n  \"BeneficiaryType\": \"string\",\n  \"beneficiaryBankType\": \"string\",\n  \"beneficiaryCity\": \"string\",\n  \"beneficiaryCountry\": \"string\",\n  \"beneficiaryAddress\": \"string\",\n  \"beneficiaryAddress1\": \"string\",\n  \"bankAddress2\": \"string\",\n  \"beneficiaryDistrict\": \"string\",\n  \"billingAddress\": \"string\",\n  \"billingName\": \"string\",\n  \"billingCity\": \"string\",\n  \"billingCountryId\": \"string\",\n  \"billingAddressline2\": \"string\",\n  \"billingPostalCode\": \"string\",\n  \"billingDistrict\": \"string\",\n  \"bankCountry\": \"string\",\n  \"destinationAddress\": \"string\",\n  \"tag\": \"string\",\n  \"vaspName\": \"string\",\n  \"vaspUrl\": \"string\",\n  \"vaspId\": \"string\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/company/accounts/beneficiaries","description":"<p>Create a beneficiary at the company level — useful for shared payout destinations that multiple sub-accounts may reference. Supports both bank and crypto wallet scopes; see the <strong>Beneficiaries</strong> folder for the per-scope field requirements.</p>\n<hr />\n<p><strong>Response convention:</strong> the response contains the beneficiary <code>uuid</code> — use it as the <code>beneficiaryId</code> on <strong>Create Transfer to Beneficiary</strong>, or to look up via <strong>Get Beneficiary By Uuid</strong>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts","beneficiaries"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"807a43b7-5528-4ac9-92a7-41dde28524bc","name":"Created (shape derived from POST /v1/beneficiaries)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"scope\": \"string\",\n  \"name\": \"string\",\n  \"id\": \"string\",\n  \"customId\": \"string\",\n  \"uuid\": \"string\",\n  \"identityId\": \"string\",\n  \"sortCode\": \"string\",\n  \"beneficiaryLabel\": \"string\",\n  \"isOwn\": true,\n  \"status\": \"string\",\n  \"state\": \"string\",\n  \"type\": \"string\",\n  \"depositReference\": \"string\",\n  \"isStableCoin\": true,\n  \"wallet\": {\n    \"id\": \"string\",\n    \"name\": \"string\",\n    \"tag\": \"string\",\n    \"address\": \"rZ76aL9vVFoywR9V1f7lD0af1eRl\",\n    \"blockchain\": \"string\",\n    \"currencyCode\": \"CMTt\"\n  },\n  \"identity\": {\n    \"uuid\": \"string\",\n    \"mobileNumber\": \"string\"\n  },\n  \"shortName\": \"string\",\n  \"country\": \"string\",\n  \"bankName\": \"string\",\n  \"currencyCode\": \"string\",\n  \"BIC\": null,\n  \"IBAN\": null,\n  \"reference\": \"string\",\n  \"accountNumber\": \"string\",\n  \"mobilenumber\": \"+15586691530\",\n  \"mobileMoneyNetwork\": \"string\",\n  \"accountType\": {\n    \"name\": \"string\",\n    \"code\": \"string\"\n  },\n  \"branchCode\": \"string\",\n  \"district\": \"string\",\n  \"crptoNetwork\": \"string\",\n  \"crptoNetworkAddress\": \"string\",\n  \"address\": \"string\",\n  \"addressLine2\": \"string\",\n  \"city\": \"string\",\n  \"authorizationToken\": \"string\",\n  \"providerBeneficiaryId\": \"string\",\n  \"thirdPartyBankAccountId\": \"string\",\n  \"circleId\": \"string\",\n  \"bcbId\": \"string\",\n  \"accountStatus\": \"string\",\n  \"beneficiaryPostalCode\": \"string\",\n  \"BeneficiaryType\": \"string\",\n  \"beneficiaryBankType\": \"string\",\n  \"beneficiaryCity\": \"string\",\n  \"beneficiaryCountry\": \"string\",\n  \"beneficiaryAddress\": \"string\",\n  \"beneficiaryAddress1\": \"string\",\n  \"bankAddress2\": \"string\",\n  \"beneficiaryDistrict\": \"string\",\n  \"billingAddress\": \"string\",\n  \"billingName\": \"string\",\n  \"billingCity\": \"string\",\n  \"billingCountryId\": \"string\",\n  \"billingAddressline2\": \"string\",\n  \"billingPostalCode\": \"string\",\n  \"billingDistrict\": \"string\",\n  \"bankCountry\": \"string\",\n  \"destinationAddress\": \"string\",\n  \"tag\": \"string\",\n  \"vaspName\": \"string\",\n  \"vaspUrl\": \"string\",\n  \"vaspId\": \"string\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/company/accounts/beneficiaries","description":"Create a beneficiary at the company level — useful for shared payout destinations that multiple sub-accounts may reference. Supports both bank and crypto wallet scopes; see the **Beneficiaries** folder for the per-scope field requirements."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"uuid\": \"9ba0bbaa-3333-4d2b-8888-4fa36d6ba6b0\",\n  \"scope\": \"bank\",\n  \"name\": \"Acme Payouts\",\n  \"currencyCode\": \"ZAR\",\n  \"status\": \"PENDING\",\n  \"state\": \"PENDING_COMPLIANCE_REVIEW\"\n}"}],"_postman_id":"ea065df1-d198-4e94-b70a-0351ba198fd3"}],"id":"7d46c1ac-fba3-4645-aa9c-7f63f17d1ba4","description":"<p>Manage sub-accounts that belong to a company or merchant. Sub-accounts are the end-user identities that hold balances, place orders, and own beneficiaries. Three creation variants are exposed depending on the parent identity type:</p>\n<ul>\n<li><strong>Standard</strong> — requires a full inline <code>kycRequest</code> payload.</li>\n<li><strong>Whitelisted</strong> — uses a <code>thirdPartyVerificationUrl</code> from a pre-approved KYC provider (e.g. Persona).</li>\n<li><strong>Aggregator</strong> — same as whitelisted but additionally scoped under a <code>merchantId</code>.</li>\n</ul>\n","_postman_id":"7d46c1ac-fba3-4645-aa9c-7f63f17d1ba4","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}}],"id":"4cd9190b-6f8a-419f-9df1-f04fb4122d27","description":"<p>Endpoints for company (aggregator and corporate) accounts to manage their merchants and sub-accounts. Hierarchy is <strong>Company → Merchant → Sub-account</strong>:</p>\n<ul>\n<li>A <strong>merchant</strong> is a customer of the company (typically a business with its own end-users).</li>\n<li>A <strong>sub-account</strong> is an individual or entity that transacts under a merchant or directly under the company.</li>\n</ul>\n<p>All endpoints require an authenticated session belonging to a company-level identity (<code>aggregator</code>, <code>corporate</code>, or <code>admin</code> role).</p>\n","_postman_id":"4cd9190b-6f8a-419f-9df1-f04fb4122d27","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Beneficiaries","item":[{"name":"Get Beneficiaries","id":"c5b74290-81d5-44d6-83dc-ed21189fc542","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"<p>List all beneficiaries saved by the authenticated identity, across every scope (bank, internal, external).</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","beneficiaries"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"f8c20785-6ddc-4730-8283-d4c6a8339931","name":"Success","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"List all beneficiaries saved by the authenticated identity, across every scope (bank, internal, external)."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"totalItems\": 72,\n    \"itemCount\": 10,\n    \"numberOfPages\": 8,\n    \"limit\": 10,\n    \"pageNumber\": 1\n  },\n  \"values\": [\n    {\n      \"uuid\": \"4bc42c4e-dd55-40fc-825b-1b18f527deed\",\n      \"scope\": \"bank\",\n      \"name\": \"John Smith Bank Account\",\n      \"currencyCode\": \"ZAR\",\n      \"status\": \"ACTIVE\",\n      \"state\": \"ACTIVE\",\n      \"isOwn\": false,\n      \"bankName\": \"Standard Bank\",\n      \"accountNumber\": \"2000123456789\",\n      \"branchCode\": \"650001\",\n      \"reference\": \"From John\",\n      \"beneficiaryAddress\": \"50 Sea Point Main Road\",\n      \"identityId\": \"4bc42c4e-dd55-40fc-825b-1b18f527deed\",\n      \"createdAt\": \"2025-02-05T05:37:31.016Z\",\n      \"updatedAt\": \"2025-02-05T05:37:31.016Z\"\n    },\n    {\n      \"uuid\": \"26a71a17-b6f4-4299-ba34-3589f3330bcf\",\n      \"scope\": \"internal\",\n      \"name\": \"Friend's Account\",\n      \"status\": \"ACTIVE\",\n      \"state\": \"ACTIVE\",\n      \"identity\": {\n        \"mobileNumber\": \"+27821234500\"\n      },\n      \"createdAt\": \"2026-01-10T09:00:00.000Z\"\n    }\n  ]\n}"}],"_postman_id":"c5b74290-81d5-44d6-83dc-ed21189fc542"},{"name":"Get Beneficiary By Uuid","id":"3b8f6484-cb1e-4c5c-aa3f-17753020ea67","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/identity/v1/beneficiaries/:uuid","description":"<p>Fetch the full record for a single beneficiary by its UUID, including its KYC status and any linked wallet or bank details.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","beneficiaries",":uuid"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","value":"","key":"uuid"}]}},"response":[{"id":"b60da231-befb-4ef4-9e62-d145c08f5f17","name":"Success (bank scope)","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/identity/v1/beneficiaries/:uuid","protocol":"https","host":["exchange","xago","io"],"path":["identity","v1","beneficiaries",":uuid"],"variable":[{"key":"uuid","value":""}]},"description":"Fetch the full record for a single beneficiary by its UUID, including its KYC status and any linked wallet or bank details."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"uuid\": \"4bc42c4e-dd55-40fc-825b-1b18f527deed\",\n  \"scope\": \"bank\",\n  \"name\": \"John Smith Bank Account\",\n  \"currencyCode\": \"ZAR\",\n  \"status\": \"ACTIVE\",\n  \"isOwn\": false,\n  \"bankName\": \"Standard Bank\",\n  \"accountNumber\": \"2000123456789\",\n  \"branchCode\": \"650001\",\n  \"reference\": \"From John\",\n  \"beneficiaryAddress\": \"50 Sea Point Main Road\",\n  \"identityId\": \"4bc42c4e-dd55-40fc-825b-1b18f527deed\",\n  \"createdAt\": \"2025-02-05T05:37:31.016Z\",\n  \"updatedAt\": \"2025-02-05T05:37:31.016Z\"\n}"}],"_postman_id":"3b8f6484-cb1e-4c5c-aa3f-17753020ea67"},{"name":"Get Company Beneficiaries","id":"9667b07b-7b65-4155-afd9-9b323baa7574","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"https://exchange.xago.io/exchange/v1/company/accounts/beneficiaries/:beneficiaryId","description":"<p>Fetch a single company-level beneficiary by ID.</p>\n<p><strong>Path params</strong></p>\n<ul>\n<li><code>:beneficiaryId</code> — the beneficiary's UUID.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","accounts","beneficiaries",":beneficiaryId"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","value":"","key":"beneficiaryId"}]}},"response":[{"id":"3a11f0c5-9389-457a-8729-53b78fdaaaca","name":"Success (live-verified — same shape as Get Beneficiary By Uuid)","originalRequest":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"https://exchange.xago.io/exchange/v1/company/accounts/beneficiaries/:beneficiaryId","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","company","accounts","beneficiaries",":beneficiaryId"],"variable":[{"key":"beneficiaryId","value":""}]},"description":"Fetch a single company-level beneficiary by ID.\n\n**Path params**\n- `:beneficiaryId` — the beneficiary's UUID."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"uuid\": \"9ba0bbaa-3333-4d2b-8888-4fa36d6ba6b0\",\n  \"scope\": \"bank\",\n  \"name\": \"Acme Payouts\",\n  \"currencyCode\": \"ZAR\",\n  \"status\": \"ACTIVE\",\n  \"bankName\": \"ABSA\",\n  \"accountNumber\": \"9072730233\"\n}"}],"_postman_id":"9667b07b-7b65-4155-afd9-9b323baa7574"},{"name":"Create Bank Beneficiary","id":"d583f658-a3cb-49a4-aacc-34cf2162fc8a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"John\",\n    \"scope\": \"bank\",\n    \"accountName\": \"John Smith\",\n    \"bankName\": \"ABSA\",\n    \"accountNumber\": \"9072730233\",\n    \"branchCode\": \"65001\",\n    \"reference\": \"John Test Beneficiary\",\n    \"bankCountry\": \"ZA\",\n    \"currencyCode\": \"ZAR\",\n    \"address\": \"16 Real Street\",\n    \"country\": \"ZA\",\n    \"beneficiaryAddress\": \"16 Real street\",\n    \"bankAddress\": \"Sandton\",\n    \"accountType\": \"typeAccountNumber\",\n    \"kycRequest\": {\n        \"requestTypeId\": \"3c8063ee-088f-46ab-ba1b-61a338519b82\",\n        \"kycRequestData\": [\n            //Example fields\n            {\n                \"kycRequestFieldId\": \"cec29b05-5ca4-413b-9735-781b1ae7b172\",\n                \"inputData\": \"John\"\n            },\n            {\n                \"kycRequestFieldId\": \"1046cbd3-ec2b-460b-8c4c-6f6ff7899a77\",\n                \"inputData\": \"+27112333456\"\n            },\n            {\n                \"kycRequestFieldId\": \"e87dd7fc-c0f7-4c94-a1f2-8c171a80255f\",\n                \"inputData\": \"Smith\"\n            },\n            {\n                \"kycRequestFieldId\":\"f4203bf3-347c-4bbd-a3d9-f445613ccd7a\",\n                \"inputData\": \"JohnSmith+bene1@gmail.com\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"<p>Add a fiat bank account as a beneficiary. The destination bank must be reachable by the supplied <code>currencyCode</code> / <code>bankCountry</code>. A KYC request is opened automatically when the destination is not the same legal person (<code>isOwn: false</code>); submit the required documents via the KYC endpoints before the beneficiary becomes payable.</p>\n<hr />\n<p><strong>Response convention:</strong> on success the response is the full beneficiary object — keep <code>uuid</code> from the response. Use it on <strong>Get Beneficiary By Uuid</strong>, on <strong>Delete Beneficiary</strong>, or as the <code>beneficiaryId</code> when calling <strong>Create Transfer to Beneficiary</strong>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","beneficiaries"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"dd60a7b1-3a9e-42b6-883c-1bb6f4b24a98","name":"Created (shape based on external — bank failed locally with stack error)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"John\",\n    \"scope\": \"bank\",\n    \"accountName\": \"John Smith\",\n    \"bankName\": \"ABSA\",\n    \"accountNumber\": \"9072730233\",\n    \"branchCode\": \"65001\",\n    \"reference\": \"John Test Beneficiary\",\n    \"bankCountry\": \"ZA\",\n    \"currencyCode\": \"ZAR\",\n    \"address\": \"16 Real Street\",\n    \"country\": \"ZA\",\n    \"beneficiaryAddress\": \"16 Real street\",\n    \"bankAddress\": \"Sandton\",\n    \"accountType\": \"typeAccountNumber\",\n    \"kycRequest\": {\n        \"requestTypeId\": \"3c8063ee-088f-46ab-ba1b-61a338519b82\",\n        \"kycRequestData\": [\n            //Example fields\n            {\n                \"kycRequestFieldId\": \"cec29b05-5ca4-413b-9735-781b1ae7b172\",\n                \"inputData\": \"John\"\n            },\n            {\n                \"kycRequestFieldId\": \"1046cbd3-ec2b-460b-8c4c-6f6ff7899a77\",\n                \"inputData\": \"+27112333456\"\n            },\n            {\n                \"kycRequestFieldId\": \"e87dd7fc-c0f7-4c94-a1f2-8c171a80255f\",\n                \"inputData\": \"Smith\"\n            },\n            {\n                \"kycRequestFieldId\":\"f4203bf3-347c-4bbd-a3d9-f445613ccd7a\",\n                \"inputData\": \"JohnSmith+bene1@gmail.com\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"Add a fiat bank account as a beneficiary. The destination bank must be reachable by the supplied `currencyCode` / `bankCountry`. A KYC request is opened automatically when the destination is not the same legal person (`isOwn: false`); submit the required documents via the KYC endpoints before the beneficiary becomes payable."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"uuid\": \"9ba0bbaa-3333-4d2b-8888-4fa36d6ba6b0\",\n  \"scope\": \"bank\",\n  \"name\": \"John\",\n  \"currencyCode\": \"ZAR\",\n  \"status\": \"PENDING\",\n  \"state\": \"PENDING_COMPLIANCE_REVIEW\",\n  \"bankName\": \"ABSA\",\n  \"accountNumber\": \"9072730233\",\n  \"branchCode\": \"65001\",\n  \"reference\": \"John Test\",\n  \"bankCountry\": \"ZA\",\n  \"accountType\": \"typeAccountNumber\",\n  \"isOwn\": true\n}"},{"id":"07543309-91f1-4d80-a4d6-d6fd259976bb","name":"Validation error","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"John\",\n    \"scope\": \"bank\",\n    \"accountName\": \"John Smith\",\n    \"bankName\": \"ABSA\",\n    \"accountNumber\": \"9072730233\",\n    \"branchCode\": \"65001\",\n    \"reference\": \"John Test Beneficiary\",\n    \"bankCountry\": \"ZA\",\n    \"currencyCode\": \"ZAR\",\n    \"address\": \"16 Real Street\",\n    \"country\": \"ZA\",\n    \"beneficiaryAddress\": \"16 Real street\",\n    \"bankAddress\": \"Sandton\",\n    \"accountType\": \"typeAccountNumber\",\n    \"kycRequest\": {\n        \"requestTypeId\": \"3c8063ee-088f-46ab-ba1b-61a338519b82\",\n        \"kycRequestData\": [\n            //Example fields\n            {\n                \"kycRequestFieldId\": \"cec29b05-5ca4-413b-9735-781b1ae7b172\",\n                \"inputData\": \"John\"\n            },\n            {\n                \"kycRequestFieldId\": \"1046cbd3-ec2b-460b-8c4c-6f6ff7899a77\",\n                \"inputData\": \"+27112333456\"\n            },\n            {\n                \"kycRequestFieldId\": \"e87dd7fc-c0f7-4c94-a1f2-8c171a80255f\",\n                \"inputData\": \"Smith\"\n            },\n            {\n                \"kycRequestFieldId\":\"f4203bf3-347c-4bbd-a3d9-f445613ccd7a\",\n                \"inputData\": \"JohnSmith+bene1@gmail.com\"\n            }\n        ]\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"Add a fiat bank account as a beneficiary. The destination bank must be reachable by the supplied `currencyCode` / `bankCountry`. A KYC request is opened automatically when the destination is not the same legal person (`isOwn: false`); submit the required documents via the KYC endpoints before the beneficiary becomes payable."},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 422,\n    \"message\": \"Invalid input\"\n  },\n  \"errors\": [\n    \"ValidationError: accountNumber is required\"\n  ]\n}"}],"_postman_id":"d583f658-a3cb-49a4-aacc-34cf2162fc8a"},{"name":"Create Internal Beneficiary","id":"2f246e92-f4c9-4b6d-897c-cbfafc90d151","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Name\",\n    \"scope\": \"internal\",\n    \"identity\": {\n        \"mobileNumber\": \"+27766197594\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"<p>Add another Xago user as a beneficiary, looked up by mobile number. Internal transfers settle instantly and free of charge between Xago wallets.</p>\n<hr />\n<p><strong>Response convention:</strong> on success the response is the full beneficiary object — keep <code>uuid</code> from the response. Use it as the <code>beneficiaryId</code> on <strong>Create Transfer to Beneficiary</strong>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","beneficiaries"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"9b44b2e3-52d1-4bc4-8671-ce5957d236cb","name":"Self-add rejected","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Name\",\n    \"scope\": \"internal\",\n    \"identity\": {\n        \"mobileNumber\": \"+27766197594\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"Add another Xago user as a beneficiary, looked up by mobile number. Internal transfers settle instantly and free of charge between Xago wallets."},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 422,\n    \"message\": \"Invalid input\"\n  },\n  \"errors\": [\n    \"ValidationError: Cannot add yourself as a beneficiary\"\n  ]\n}"},{"id":"9d1e3a72-2b8f-40cc-8bf2-e4d19ea1fe5c","name":"Sub-account rejected","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Name\",\n    \"scope\": \"internal\",\n    \"identity\": {\n        \"mobileNumber\": \"+27766197594\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"Add another Xago user as a beneficiary, looked up by mobile number. Internal transfers settle instantly and free of charge between Xago wallets."},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 422,\n    \"message\": \"Invalid input\"\n  },\n  \"errors\": [\n    \"ValidationError: Cannot add a subAccount as a beneficiary\"\n  ]\n}"},{"id":"092aa5fb-c155-49b6-8594-b7d9132b09bc","name":"Created","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Name\",\n    \"scope\": \"internal\",\n    \"identity\": {\n        \"mobileNumber\": \"+27766197594\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"Add another Xago user as a beneficiary, looked up by mobile number. Internal transfers settle instantly and free of charge between Xago wallets."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"uuid\": \"1aaaaaaa-2222-3333-4444-555555555555\",\n  \"scope\": \"internal\",\n  \"name\": \"Name\",\n  \"status\": \"ACTIVE\",\n  \"state\": \"ACTIVE\",\n  \"identity\": {\n    \"mobileNumber\": \"+27766197594\"\n  },\n  \"createdAt\": \"2026-05-20T15:30:00.000Z\"\n}"}],"_postman_id":"2f246e92-f4c9-4b6d-897c-cbfafc90d151"},{"name":"Create external beneficiary","id":"8ce94d91-896f-4276-87f0-1d87c808447a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"XRP Beneficiary\",\n    \"currencyCode\": \"XRP\",\n    \"scope\": \"external\",\n    \"kycRequest\": {\n        \"isOwn\": true\n    },\n    \"wallet\": {\n        \"address\": \"xxxxxxxxwnSYyrHg8spnxxxxoERz5H3JoA\",\n        \"tag\":2,\n        \"currencyCode\": \"XRP\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"<p>Add an external crypto wallet as a beneficiary. For XRPL destinations, supply both the <code>address</code> and the destination <code>tag</code> (integer). The <code>currencyCode</code> on the beneficiary must match the asset you intend to send.</p>\n<hr />\n<p><strong>Response convention:</strong> on success the response is the full beneficiary object — keep <code>uuid</code> from the response. Use it on <strong>Get Beneficiary By Uuid</strong>, on <strong>Delete Beneficiary</strong>, or as the <code>beneficiaryId</code> when withdrawing crypto via <strong>Create Transfer to Beneficiary</strong>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","beneficiaries"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"0287f8be-6bb3-4c14-9140-cf869b5955dc","name":"Created (live-verified)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"XRP Beneficiary\",\n    \"currencyCode\": \"XRP\",\n    \"scope\": \"external\",\n    \"kycRequest\": {\n        \"isOwn\": true\n    },\n    \"wallet\": {\n        \"address\": \"xxxxxxxxwnSYyrHg8spnxxxxoERz5H3JoA\",\n        \"tag\":2,\n        \"currencyCode\": \"XRP\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"Add an external crypto wallet as a beneficiary. For XRPL destinations, supply both the `address` and the destination `tag` (integer). The `currencyCode` on the beneficiary must match the asset you intend to send."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"currencyCode\": \"XRP\",\n  \"name\": \"Test XRP Self\",\n  \"customId\": null,\n  \"scope\": \"external\",\n  \"uuid\": \"c5907371-3e9f-43d7-8eb4-e0e1971621d5\",\n  \"isOwn\": true,\n  \"identityId\": null,\n  \"state\": \"PENDING_COMPLIANCE_REVIEW\",\n  \"status\": \"PENDING\",\n  \"isUnhosted\": false,\n  \"vaspName\": null,\n  \"vaspUrl\": null,\n  \"vaspId\": null,\n  \"isVaspKnown\": false,\n  \"paymentLinkId\": null,\n  \"sourceType\": null,\n  \"wallet\": {\n    \"address\": \"rN7n7otQDd6FczFgLdSqtcsAUxDkw6fzRH\",\n    \"currencyCode\": \"XRP\",\n    \"tag\": 12345\n  }\n}"}],"_postman_id":"8ce94d91-896f-4276-87f0-1d87c808447a"},{"name":"Create External Beneficiary Stable Coin","id":"a6aea66a-4aa2-47d1-bb7e-175663e794b1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Stable Coin Beneficiary\",\n    \"currencyCode\": \"USD\",\n    \"scope\": \"external\",\n    \"isStableCoin\": true,\n    \"kycRequest\": {\n        \"isOwn\": true //or kycRequestData if not own account\n    },\n    \"wallet\": {\n        \"address\": \"0x224223334556B30c2baab1231123gfgfha\",\n        \"currencyCode\": \"USDC\",\n        \"blockchain\": \"ethereum\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"<p>Add an external stablecoin wallet as a beneficiary. Set <code>isStableCoin: true</code>, supply the fiat <code>currencyCode</code> (e.g. <code>USD</code>) at the top level and the on-chain stablecoin symbol (e.g. <code>USDC</code>) inside <code>wallet.currencyCode</code>, along with the destination <code>blockchain</code>.</p>\n<hr />\n<p><strong>Response convention:</strong> on success the response is the full beneficiary object — keep <code>uuid</code> from the response. Use it as the <code>beneficiaryId</code> when withdrawing stablecoins via <strong>Create Transfer to Beneficiary</strong>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","beneficiaries"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"a2381c67-597e-4dd3-bc2b-b05d46491e78","name":"Created (live-verified)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Stable Coin Beneficiary\",\n    \"currencyCode\": \"USD\",\n    \"scope\": \"external\",\n    \"isStableCoin\": true,\n    \"kycRequest\": {\n        \"isOwn\": true //or kycRequestData if not own account\n    },\n    \"wallet\": {\n        \"address\": \"0x224223334556B30c2baab1231123gfgfha\",\n        \"currencyCode\": \"USDC\",\n        \"blockchain\": \"ethereum\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"Add an external stablecoin wallet as a beneficiary. Set `isStableCoin: true`, supply the fiat `currencyCode` (e.g. `USD`) at the top level and the on-chain stablecoin symbol (e.g. `USDC`) inside `wallet.currencyCode`, along with the destination `blockchain`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"currencyCode\": \"USD\",\n  \"name\": \"Test USDC Self\",\n  \"customId\": null,\n  \"scope\": \"external\",\n  \"uuid\": \"e39c015e-0e47-4614-ae27-8476f697a3c9\",\n  \"isOwn\": true,\n  \"identityId\": null,\n  \"state\": \"PENDING_COMPLIANCE_REVIEW\",\n  \"status\": \"PENDING\",\n  \"isUnhosted\": false,\n  \"vaspName\": null,\n  \"vaspUrl\": null,\n  \"vaspId\": null,\n  \"isVaspKnown\": false,\n  \"paymentLinkId\": null,\n  \"sourceType\": null,\n  \"wallet\": {\n    \"address\": \"0x224223334556B30c2baab1231123abcdef123456\",\n    \"currencyCode\": \"USDC\",\n    \"blockchain\": \"ethereum\"\n  },\n  \"isStableCoin\": true\n}"}],"_postman_id":"a6aea66a-4aa2-47d1-bb7e-175663e794b1"},{"name":"Create Bank Beneficiary (Sub Account Link)","id":"ecd03526-a070-463b-9459-6dfbad209117","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"scope\": \"bank\",\n    \"name\": \"John Smiths bank account\",\n    \"accountName\": \"John Smith\",\n    \"bankName\": \"ABSA\",\n    \"accountNumber\": \"9072730233\",\n    \"branchCode\": \"65001\",\n    \"reference\": \"Crypto trading\",\n    \"bankCountry\": \"ZA\",\n    \"currencyCode\": \"ZAR\",\n    \"address\": \"1 Beach Road, Cape Town, 8000\",\n    \"country\": \"ZA\",\n    \"beneficiaryAddress\": \"16 Breda street\",\n    \"bankAddress\": \"1 Main Road, Sandton, Gauteng, 2000\",\n    \"accountType\": \"typeAccountNumber\",\n    \"kycRequest\": {\n        \n        \"existingIdentityId\": \"fca09152-0680-4373-8a9f-d9d44893a2d7\"\n\n        \n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"<p>Variant of <strong>Create Bank Beneficiary</strong> used to link a bank account to a sub-account from the parent company. Same field set as the standard bank beneficiary call.</p>\n<hr />\n<p><strong>Response convention:</strong> on success the response is the full beneficiary object — keep <code>uuid</code>. Use it as the <code>beneficiaryId</code> on transfers, or pass it into the sub-account link flow.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","beneficiaries"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"8640ceca-904b-4459-a7c4-30b52ecdbb71","name":"Created (shape derived from bank create)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"scope\": \"bank\",\n    \"name\": \"John Smiths bank account\",\n    \"accountName\": \"John Smith\",\n    \"bankName\": \"ABSA\",\n    \"accountNumber\": \"9072730233\",\n    \"branchCode\": \"65001\",\n    \"reference\": \"Crypto trading\",\n    \"bankCountry\": \"ZA\",\n    \"currencyCode\": \"ZAR\",\n    \"address\": \"1 Beach Road, Cape Town, 8000\",\n    \"country\": \"ZA\",\n    \"beneficiaryAddress\": \"16 Breda street\",\n    \"bankAddress\": \"1 Main Road, Sandton, Gauteng, 2000\",\n    \"accountType\": \"typeAccountNumber\",\n    \"kycRequest\": {\n        \n        \"existingIdentityId\": \"fca09152-0680-4373-8a9f-d9d44893a2d7\"\n\n        \n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/identity/v1/beneficiaries","description":"Variant of **Create Bank Beneficiary** used to link a bank account to a sub-account from the parent company. Same field set as the standard bank beneficiary call."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"uuid\": \"9ba0bbaa-3333-4d2b-8888-4fa36d6ba6b0\",\n  \"scope\": \"bank\",\n  \"name\": \"John Smiths bank account\",\n  \"currencyCode\": \"ZAR\",\n  \"status\": \"PENDING\",\n  \"state\": \"PENDING_COMPLIANCE_REVIEW\",\n  \"bankName\": \"ABSA\",\n  \"accountNumber\": \"9072730233\"\n}"}],"_postman_id":"ecd03526-a070-463b-9459-6dfbad209117"},{"name":"Delete Beneficiary","id":"bcc59593-8504-4e98-8b58-80c0e454b488","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"formdata","formdata":[]},"url":"https://exchange.xago.io/identity/v1/beneficiaries/:beneficiaryId","description":"<p>Remove a beneficiary by ID. Pending transactions that reference the beneficiary are not affected.</p>\n<p><strong>Path params</strong></p>\n<ul>\n<li><code>:beneficiaryId</code> — the UUID of the beneficiary to delete.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","beneficiaries",":beneficiaryId"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","value":"","key":"beneficiaryId"}]}},"response":[{"id":"5745d7c1-7864-4d57-9b15-28aaeb75ef3d","name":"Deleted (live-verified)","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"formdata","formdata":[]},"url":{"raw":"https://exchange.xago.io/identity/v1/beneficiaries/:beneficiaryId","protocol":"https","host":["exchange","xago","io"],"path":["identity","v1","beneficiaries",":beneficiaryId"],"variable":[{"key":"beneficiaryId","value":""}]},"description":"Remove a beneficiary by ID. Pending transactions that reference the beneficiary are not affected.\n\n**Path params**\n- `:beneficiaryId` — the UUID of the beneficiary to delete."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"\"\n  }\n}"}],"_postman_id":"bcc59593-8504-4e98-8b58-80c0e454b488"}],"id":"6447ad4d-902e-425a-aa5e-1767badbb508","description":"<p>Endpoints for managing the saved payees (bank accounts, internal accounts, crypto wallets) that the authenticated identity can transfer funds to.</p>\n<p>Beneficiaries are organised by <strong>scope</strong>:</p>\n<ul>\n<li><code>bank</code> — a fiat bank account.</li>\n<li><code>internal</code> — another Xago account, looked up by mobile number.</li>\n<li><code>external</code> — an external crypto wallet (XRPL, EVM chains, etc.). Set <code>isStableCoin: true</code> for stablecoin destinations and include the target <code>blockchain</code>.</li>\n</ul>\n<p>Adding a beneficiary may trigger a KYC request — supply <code>kycRequest.isOwn: true</code> if the destination belongs to the same person, otherwise include the third-party KYC data the policy requires.</p>\n","_postman_id":"6447ad4d-902e-425a-aa5e-1767badbb508","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Transactions","item":[{"name":"Get Transaction History","id":"545a1132-934d-4ade-a37d-c83182dc0cea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"currencyPair\": \"XRP/ZAR\"\n}"},"url":"https://exchange.xago.io/exchange/v1/transactions/history?type=transfer&limit=6&page=1","description":"<p>Return a paged history of transactions for the authenticated identity. Filterable by type (<code>transfer</code>, <code>trade</code>, <code>deposit</code>, <code>withdrawal</code>, <code>conversion</code>) and currency.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>type</code> — transaction category.</li>\n<li><code>limit</code>, <code>page</code> — pagination.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","transactions","history"],"host":["exchange","xago","io"],"query":[{"key":"type","value":"transfer"},{"key":"limit","value":"6"},{"key":"page","value":"1"}],"variable":[]}},"response":[{"id":"ef7e37b4-1fd9-4aac-9836-6ab058051914","name":"Success — covers transfer, trade & conversion records","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"currencyPair\": \"XRP/ZAR\"\n}"},"url":{"raw":"https://exchange.xago.io/exchange/v1/transactions/history?type=transfer&limit=6&page=1","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","transactions","history"],"query":[{"key":"type","value":"transfer"},{"key":"limit","value":"6"},{"key":"page","value":"1"}]},"description":"Return a paged history of transactions for the authenticated identity. Filterable by type (`transfer`, `trade`, `deposit`, `withdrawal`, `conversion`) and currency.\n\n**Query parameters**\n- `type` — transaction category.\n- `limit`, `page` — pagination."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"itemCount\": 3,\n    \"numberOfPages\": 167,\n    \"limit\": 3,\n    \"pageNumber\": 1\n  },\n  \"values\": [\n    {\n      \"batchType\": \"transfer\",\n      \"amount\": 1,\n      \"total\": 1.1,\n      \"usdPrice\": 0.7272,\n      \"zarPrice\": 12.0072,\n      \"currencyCode\": \"CAD\",\n      \"status\": \"SUCCESS\",\n      \"batchId\": \"59bf02d3-9f54-47aa-a8ec-162a76e24db0\",\n      \"identityId\": \"46336530-03a3-11ee-a480-9dd8624f4f0d\",\n      \"beneficiaryId\": \"26a71a17-b6f4-4299-ba34-3589f3330bcf\",\n      \"beneficiaryScope\": \"internal\",\n      \"commission\": 0.1,\n      \"currentBalance\": 998.9,\n      \"reference\": \"\",\n      \"feeCurrencyCode\": \"CAD\",\n      \"isOnChainReceive\": false,\n      \"send\": true,\n      \"receive\": false,\n      \"updatedAt\": \"2026-05-20T15:28:31.953Z\",\n      \"createdAt\": \"2026-05-20T15:28:31.953Z\"\n    },\n    {\n      \"fillId\": \"v5BuB2ePQ9KbP3BeEdqREg-0000000001\",\n      \"batchType\": \"trade\",\n      \"orderType\": \"LIMIT\",\n      \"price\": 20,\n      \"currencyPair\": \"XRP/ZAR\",\n      \"receiveCurrencyCode\": \"ZAR\",\n      \"sendCurrencyCode\": \"XRP\",\n      \"sendAmount\": 0.24975,\n      \"receiveAmount\": 4.995005,\n      \"direction\": \"ask\",\n      \"status\": \"SUCCESS\",\n      \"batchId\": \"d7955a17-87f2-410a-80dd-b675cdcdfb77\",\n      \"identityId\": \"46336530-03a3-11ee-a480-9dd8624f4f0d\",\n      \"orderId\": \"d7955a17-87f2-410a-80dd-b675cdcdfb77\",\n      \"currentBalance\": 0,\n      \"currentBalance2\": 20780,\n      \"sendFee\": 0.000249,\n      \"receiveFee\": 0,\n      \"send\": true,\n      \"receive\": true,\n      \"sendTotal\": 0.249999,\n      \"receiveTotal\": 4.995005,\n      \"updatedAt\": \"2026-05-20T15:28:31.829Z\",\n      \"createdAt\": \"2026-05-20T15:28:31.829Z\"\n    },\n    {\n      \"batchType\": \"conversion\",\n      \"total\": 5,\n      \"usdPrice\": 0,\n      \"zarPrice\": 0,\n      \"receiveCurrencyCode\": \"USDT\",\n      \"sendCurrencyCode\": \"ZAR\",\n      \"sendAmount\": 5,\n      \"receiveAmount\": 0,\n      \"status\": \"PENDING\",\n      \"batchId\": \"0a9c1893-6e8a-48f9-ac1d-60106c7b55ac\",\n      \"identityId\": \"46336530-03a3-11ee-a480-9dd8624f4f0d\",\n      \"commission\": 0,\n      \"currentBalance\": 11579,\n      \"currentBalance2\": 1182,\n      \"send\": true,\n      \"receive\": true,\n      \"updatedAt\": \"2026-05-20T15:28:31.488Z\",\n      \"createdAt\": \"2026-05-20T15:28:31.455Z\"\n    }\n  ]\n}"}],"_postman_id":"545a1132-934d-4ade-a37d-c83182dc0cea"},{"name":"Get Transactions CSV","id":"1de62cc5-8e8a-434a-a654-17b5a4a81d1b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/transactions/csv?status=optional&type=optional&startDate=required&endDate=required&currencyCode=optional","description":"<p>Export transactions as a CSV file over a date range.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>startDate</code>, <code>endDate</code> — required, ISO 8601 dates.</li>\n<li><code>status</code>, <code>type</code>, <code>currencyCode</code> — optional filters.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","transactions","csv"],"host":["exchange","xago","io"],"query":[{"key":"status","value":"optional"},{"key":"type","value":"optional"},{"key":"startDate","value":"required"},{"key":"endDate","value":"required"},{"key":"currencyCode","value":"optional"}],"variable":[]}},"response":[{"id":"a321928f-b5a6-4c9c-937a-156eddad6218","name":"Buffer-wrapped CSV (known bug — should be raw text/csv)","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/exchange/v1/transactions/csv?status=optional&type=optional&startDate=required&endDate=required&currencyCode=optional","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","transactions","csv"],"query":[{"key":"status","value":"optional"},{"key":"type","value":"optional"},{"key":"startDate","value":"required"},{"key":"endDate","value":"required"},{"key":"currencyCode","value":"optional"}]},"description":"Export transactions as a CSV file over a date range.\n\n**Query parameters**\n- `startDate`, `endDate` — required, ISO 8601 dates.\n- `status`, `type`, `currencyCode` — optional filters."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"type\": \"Buffer\",\n  \"data\": [\n    97,\n    100,\n    100,\n    114,\n    101,\n    115,\n    115,\n    44\n  ]\n}"}],"_postman_id":"1de62cc5-8e8a-434a-a654-17b5a4a81d1b"},{"name":"Sub Account Transactions","id":"96075385-7892-46d8-9407-d00e907eced2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/company/transactions?limit=5&page=1&account=1234-123-1234-12345&merchantId=1234-123-1234-12345","description":"<p>Company endpoint — list transactions belonging to a specific sub-account or merchant. Useful for reconciliation across all users in an aggregator hierarchy.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","transactions"],"host":["exchange","xago","io"],"query":[{"key":"limit","value":"5"},{"key":"page","value":"1"},{"key":"account","value":"1234-123-1234-12345"},{"key":"merchantId","value":"1234-123-1234-12345"}],"variable":[]}},"response":[{"id":"de3d2201-01ad-4b28-9b76-02e784c0dbcf","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.api.xago.io/exchange/v1/company/transactions?limit=5&page=1&account=1234-123-1234-12345&merchantId=1234-123-1234-12345","protocol":"https","host":["exchange","api","xago","io"],"path":["exchange","v1","company","transactions"],"query":[{"key":"limit","value":"5"},{"key":"page","value":"1"},{"key":"account","value":"1234-123-1234-12345"},{"key":"merchantId","value":"1234-123-1234-12345"}]},"description":"Company endpoint — list transactions belonging to a specific sub-account or merchant. Useful for reconciliation across all users in an aggregator hierarchy."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"totalItems\": 41,\n    \"itemCount\": 2,\n    \"numberOfPages\": 21,\n    \"limit\": 2,\n    \"pageNumber\": 1\n  },\n  \"data\": [\n    {\n      \"_id\": \"6a05865164c84eb3ca2abe1b\",\n      \"transactionId\": \"bdf32853-2280-4a03-ae67-a40409538365\",\n      \"accountId\": \"5c3b37f9-cb31-410e-8339-e02874135e75\",\n      \"merchantId\": null,\n      \"status\": \"success\",\n      \"currencyCode\": \"CAD\",\n      \"reference\": \"Crypto trading\",\n      \"amount\": 1000,\n      \"originAmount\": 1000,\n      \"isDuplicate\": false,\n      \"duplicateTransactionId\": null,\n      \"isRequested\": false,\n      \"createdAt\": \"2026-05-14T08:22:41.454Z\",\n      \"settledAt\": \"Thu May 14 2026 10:22:51 GMT+0200\"\n    }\n  ]\n}"}],"_postman_id":"96075385-7892-46d8-9407-d00e907eced2"},{"name":"Get Sub Account Transaction By Id","id":"903b2367-56de-42c2-93f8-4106e00775ca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/company/transactions/:transactionId","description":"<p>Fetch a single sub-account transaction by ID, with full state details including any linked trade fills or beneficiary information.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","company","transactions",":transactionId"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","key":"transactionId"}]}},"response":[{"id":"ec1e12b8-9843-47d7-92ff-359846fa431f","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.api.xago.io/exchange/v1/company/transactions/:transactionId","protocol":"https","host":["exchange","api","xago","io"],"path":["exchange","v1","company","transactions",":transactionId"],"variable":[{"key":"transactionId","value":""}]},"description":"Fetch a single sub-account transaction by ID, with full state details including any linked trade fills or beneficiary information."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"success\",\n  \"amount\": 1000,\n  \"originAmount\": 1000,\n  \"isDuplicate\": false,\n  \"duplicateTransactionId\": null,\n  \"isRequested\": false,\n  \"createdAt\": \"2026-05-14T08:22:41.454Z\",\n  \"settledAt\": \"Thu May 14 2026 10:22:51 GMT+0200\",\n  \"accountId\": \"5c3b37f9-cb31-410e-8339-e02874135e75\",\n  \"transactionId\": \"bdf32853-2280-4a03-ae67-a40409538365\"\n}"}],"_postman_id":"903b2367-56de-42c2-93f8-4106e00775ca"},{"name":"Create Transfer to Beneficiary","id":"25dac638-f8d5-46b8-8be3-b7225e35dd1c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"beneficiaryId\": \"9ba0bbaa-xxxx-4d2b-xxxx-4fa36d6ba6b0\",\n    \"amount\": 30,\n    \"currencyCode\": \"USDC\", // must match the beneficiary's currencyCode\n    \"reason\": \"Crypto Trading\", // optional\n    \"reference\": \"Profits from trading\", // optional for bank transfers\n    \"idempotencyKey\": \"1657b7a8-61f9-4872-97c0-994a603d8082\" // optional to prevent duplicate requests\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/transfers","description":"<p>Initiate a transfer from the authenticated wallet to a saved beneficiary.</p>\n<p><strong>Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Required</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>beneficiaryId</code></td>\n<td>yes</td>\n<td>UUID of the beneficiary.</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>yes</td>\n<td>Numeric, in the wallet currency.</td>\n</tr>\n<tr>\n<td><code>currencyCode</code></td>\n<td>yes</td>\n<td>Must match the beneficiary's <code>currencyCode</code>.</td>\n</tr>\n<tr>\n<td><code>reason</code></td>\n<td>no</td>\n<td>Free-text reason shown on statements.</td>\n</tr>\n<tr>\n<td><code>reference</code></td>\n<td>no</td>\n<td>Reference shown on the recipient's statement (bank transfers).</td>\n</tr>\n<tr>\n<td><code>idempotencyKey</code></td>\n<td>no</td>\n<td>Supply a UUID to safely retry without duplicating the transfer.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<p><strong>Response convention:</strong> the response body is a single JSON-encoded UUID — the <code>batchId</code>. Use it to find the transfer record in <strong>Get Transaction History</strong> (match <code>values[].batchId</code>). The transfer settles asynchronously; status moves from <code>PENDING</code> → <code>SUCCESS</code> (or <code>FAILED</code>).</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","transfers"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"94b7765b-e377-4a8d-a64e-6336768220c0","name":"Accepted (live-verified)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"beneficiaryId\": \"9ba0bbaa-xxxx-4d2b-xxxx-4fa36d6ba6b0\",\n    \"amount\": 30,\n    \"currencyCode\": \"USDC\", // must match the beneficiary's currencyCode\n    \"reason\": \"Crypto Trading\", // optional\n    \"reference\": \"Profits from trading\", // optional for bank transfers\n    \"idempotencyKey\": \"1657b7a8-61f9-4872-97c0-994a603d8082\" // optional to prevent duplicate requests\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/transfers","description":"Initiate a transfer from the authenticated wallet to a saved beneficiary.\n\n**Body**\n| Field | Required | Notes |\n|---|---|---|\n| `beneficiaryId` | yes | UUID of the beneficiary. |\n| `amount` | yes | Numeric, in the wallet currency. |\n| `currencyCode` | yes | Must match the beneficiary's `currencyCode`. |\n| `reason` | no | Free-text reason shown on statements. |\n| `reference` | no | Reference shown on the recipient's statement (bank transfers). |\n| `idempotencyKey` | no | Supply a UUID to safely retry without duplicating the transfer. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"\"59bf02d3-9f54-47aa-a8ec-162a76e24db0\""},{"id":"2e5d0e5b-70db-4bfc-9c78-52bf71793558","name":"Insufficient funds","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"beneficiaryId\": \"9ba0bbaa-xxxx-4d2b-xxxx-4fa36d6ba6b0\",\n    \"amount\": 30,\n    \"currencyCode\": \"USDC\", // must match the beneficiary's currencyCode\n    \"reason\": \"Crypto Trading\", // optional\n    \"reference\": \"Profits from trading\", // optional for bank transfers\n    \"idempotencyKey\": \"1657b7a8-61f9-4872-97c0-994a603d8082\" // optional to prevent duplicate requests\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/transfers","description":"Initiate a transfer from the authenticated wallet to a saved beneficiary.\n\n**Body**\n| Field | Required | Notes |\n|---|---|---|\n| `beneficiaryId` | yes | UUID of the beneficiary. |\n| `amount` | yes | Numeric, in the wallet currency. |\n| `currencyCode` | yes | Must match the beneficiary's `currencyCode`. |\n| `reason` | no | Free-text reason shown on statements. |\n| `reference` | no | Reference shown on the recipient's statement (bank transfers). |\n| `idempotencyKey` | no | Supply a UUID to safely retry without duplicating the transfer. |"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"Bad Request\"\n  },\n  \"errors\": [\n    \"Insufficient balance\"\n  ]\n}"}],"_postman_id":"25dac638-f8d5-46b8-8be3-b7225e35dd1c"},{"name":"Declare Travel Rule information for incoming transfer","id":"a62083dc-0fe8-464e-a7db-5ceb39984a85","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"batchId\": \"...\", // The deposit / transfer ID\n    \"vaspId\": \"...\", // required if sending from a VASP - use the list of available VASPS to get the VASP ID (See GET VASPS below)\n    \"vaspName\": \"...\", // required if sending from a VASP\n    \"vaspUrl\": \"...\", // required if sending from a VASP\n    \"isVaspKnown\": true,\n    \"isUnhosted\": false, // true if sending from a private wallet\n    \"isOwn\": false, // True if sending from yourself\n    \"originator\": {\n        \"firstName\": \"John\", // if the sender is not a company\n        \"lastName\": \"Smith\", // if the sender is not a company\n\t\t\t\t\"companyName\": \"Acme Holdings Ltd\", // if the sender is a company\n        \"country\": \"ZA\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/transfers/vasps","description":"<p>Attach travel-rule originator information to an incoming crypto deposit so it can clear compliance checks. Required when receiving from another VASP, an unhosted wallet, or a third party.</p>\n<p>Use <strong>Get Vasps</strong> to look up the <code>vaspId</code> for a known counterparty.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","transfers","vasps"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"7c870631-1a95-4241-8fa6-753e5ee24873","name":"Invalid input","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"batchId\": \"...\", // The deposit / transfer ID\n    \"vaspId\": \"...\", // required if sending from a VASP - use the list of available VASPS to get the VASP ID (See GET VASPS below)\n    \"vaspName\": \"...\", // required if sending from a VASP\n    \"vaspUrl\": \"...\", // required if sending from a VASP\n    \"isVaspKnown\": true,\n    \"isUnhosted\": false, // true if sending from a private wallet\n    \"isOwn\": false, // True if sending from yourself\n    \"originator\": {\n        \"firstName\": \"John\", // if the sender is not a company\n        \"lastName\": \"Smith\", // if the sender is not a company\n\t\t\t\t\"companyName\": \"Acme Holdings Ltd\", // if the sender is a company\n        \"country\": \"ZA\"\n    }\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/transfers/vasps","description":"Attach travel-rule originator information to an incoming crypto deposit so it can clear compliance checks. Required when receiving from another VASP, an unhosted wallet, or a third party.\n\nUse **Get Vasps** to look up the `vaspId` for a known counterparty."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"Invalid input\"\n  }\n}"}],"_postman_id":"a62083dc-0fe8-464e-a7db-5ceb39984a85"}],"id":"bffdcba3-5447-4d05-bc9f-9c5c256e6446","description":"<p>Endpoints for transfers and transaction history. Use these to:</p>\n<ul>\n<li>Move funds out of a Xago wallet to a saved beneficiary (<code>POST /transfers</code>).</li>\n<li>Declare travel-rule information for an incoming deposit (<code>POST /transfers/vasps</code>).</li>\n<li>Read paged transaction history, including a CSV export for accounting.</li>\n<li>Inspect transactions belonging to sub-accounts (company endpoints).</li>\n</ul>\n<p>Transfers are idempotent when an <code>idempotencyKey</code> is supplied — retrying with the same key will not create a duplicate transaction.</p>\n","_postman_id":"bffdcba3-5447-4d05-bc9f-9c5c256e6446","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Conversions","item":[{"name":"Create a currency conversion","id":"8fdc8ed5-de30-4022-a0a8-131a02a717dc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"convertCurrencyPair\": \"XRP/ZAR\",\n    \"amount\": 10,\n    \"estimateCalculation\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/currencyconvert","description":"<p>Convert between any two supported assets in a single call. Set <code>estimateCalculation: true</code> to receive a quote without executing.</p>\n<p><strong>Body</strong></p>\n<ul>\n<li><code>convertCurrencyPair</code> — e.g. <code>XRP/ZAR</code>.</li>\n<li><code>amount</code> — amount of the <em>base</em> currency to convert.</li>\n<li><code>estimateCalculation</code> — <code>true</code> for a quote, <code>false</code>/omit to execute.</li>\n</ul>\n<hr />\n<p><strong>Response convention:</strong> the response body is a single JSON-encoded UUID — the conversion <code>batchId</code>. Use it to find the conversion record in <strong>Get Transaction History</strong> (<code>batchType: \"conversion\"</code>, match on <code>batchId</code>). Status starts <code>PENDING</code> and transitions to <code>SUCCESS</code> when the underlying trade fills.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","currencyconvert"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"a348ab79-faaa-4f54-9769-133ac8bf7c11","name":"Executed (live-verified) — body is the conversion ID as a JSON string","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"convertCurrencyPair\": \"XRP/ZAR\",\n    \"amount\": 10,\n    \"estimateCalculation\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/currencyconvert","description":"Convert between any two supported assets in a single call. Set `estimateCalculation: true` to receive a quote without executing.\n\n**Body**\n- `convertCurrencyPair` — e.g. `XRP/ZAR`.\n- `amount` — amount of the *base* currency to convert.\n- `estimateCalculation` — `true` for a quote, `false`/omit to execute."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"\"0a9c1893-6e8a-48f9-ac1d-60106c7b55ac\""},{"id":"8e91791c-d4ae-4d68-bfb9-2c58d1c97c07","name":"Insufficient liquidity","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"convertCurrencyPair\": \"XRP/ZAR\",\n    \"amount\": 10,\n    \"estimateCalculation\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/currencyconvert","description":"Convert between any two supported assets in a single call. Set `estimateCalculation: true` to receive a quote without executing.\n\n**Body**\n- `convertCurrencyPair` — e.g. `XRP/ZAR`.\n- `amount` — amount of the *base* currency to convert.\n- `estimateCalculation` — `true` for a quote, `false`/omit to execute."},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 422,\n    \"message\": \"Insufficient market liquidity, please try a lesser amount\"\n  },\n  \"errors\": [\n    \"Insufficient market liquidity, please try a lesser amount\"\n  ]\n}"}],"_postman_id":"8fdc8ed5-de30-4022-a0a8-131a02a717dc"}],"id":"626f9e73-4ee6-469e-9dfd-5f25a0303d14","description":"<p>Endpoints for instant currency conversions between any two supported assets in a wallet. Conversions execute at the best available aggregated market price.</p>\n<p>Set <code>estimateCalculation: true</code> to receive a quote without executing the conversion — useful for displaying expected rates to the end user before they confirm.</p>\n","_postman_id":"626f9e73-4ee6-469e-9dfd-5f25a0303d14","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Orders","item":[{"name":"Get orders","id":"f2d7ad04-714e-42c1-81e7-c8b8b27c773f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orders?orderby=-createdAt&currencyPair=XRP/ZAR&status=CANCELLED","description":"<p>List orders placed by the authenticated identity. Supports ordering and filtering.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>orderby</code> — e.g. <code>-createdAt</code> for newest first.</li>\n<li><code>currencyPair</code> — filter to a single pair.</li>\n<li><code>status</code> — <code>OPEN</code>, <code>FILLED</code>, <code>CANCELLED</code>, <code>PARTIAL</code>.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","orders"],"host":["exchange","xago","io"],"query":[{"key":"orderby","value":"-createdAt"},{"key":"currencyPair","value":"XRP/ZAR"},{"key":"status","value":"CANCELLED"}],"variable":[]}},"response":[{"id":"dd6e8809-edfb-42de-af29-95e14cac1fb5","name":"Success","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"https://exchange.xago.io/exchange/v1/orders?orderby=-createdAt&currencyPair=XRP/ZAR&status=CANCELLED","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","orders"],"query":[{"key":"orderby","value":"-createdAt"},{"key":"currencyPair","value":"XRP/ZAR"},{"key":"status","value":"CANCELLED"}]},"description":"List orders placed by the authenticated identity. Supports ordering and filtering.\n\n**Query parameters**\n- `orderby` — e.g. `-createdAt` for newest first.\n- `currencyPair` — filter to a single pair.\n- `status` — `OPEN`, `FILLED`, `CANCELLED`, `PARTIAL`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"orderPrices\": [\n      {\n        \"_id\": \"697dffdfcd76599ae2bb7451\",\n        \"orderType\": \"LIMIT OFFER\",\n        \"priceStamp\": 20\n      },\n      {\n        \"_id\": \"69f08bbcfae43da65a330720\",\n        \"orderType\": \"LIMIT BID\",\n        \"priceStamp\": 19\n      }\n    ],\n    \"totalItems\": 2,\n    \"itemCount\": 2,\n    \"numberOfPages\": 1,\n    \"limit\": 10,\n    \"pageNumber\": 1\n  },\n  \"orders\": [\n    {\n      \"id\": \"e8dbb6f8-7ac9-447d-ac68-f34e948e197a\",\n      \"orderType\": \"Bid - Limit\",\n      \"amount\": 99.900099,\n      \"status\": \"Pending\",\n      \"currencyCode\": \"ZAR\",\n      \"commissionRate\": 0.1,\n      \"createdAt\": \"2026-04-28T10:28:12.599Z\",\n      \"originAmount\": 100,\n      \"remaining\": 99.900099,\n      \"price\": 19,\n      \"fills\": [],\n      \"averageFillPrice\": 0,\n      \"amountFilled\": 0,\n      \"percentage\": 0,\n      \"hasFills\": false\n    }\n  ]\n}"},{"id":"935b0119-5ab4-4b3d-8fa3-3fd19208fe19","name":"Missing currencyPair","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"https://exchange.xago.io/exchange/v1/orders?orderby=-createdAt&currencyPair=XRP/ZAR&status=CANCELLED","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","orders"],"query":[{"key":"orderby","value":"-createdAt"},{"key":"currencyPair","value":"XRP/ZAR"},{"key":"status","value":"CANCELLED"}]},"description":"List orders placed by the authenticated identity. Supports ordering and filtering.\n\n**Query parameters**\n- `orderby` — e.g. `-createdAt` for newest first.\n- `currencyPair` — filter to a single pair.\n- `status` — `OPEN`, `FILLED`, `CANCELLED`, `PARTIAL`."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"Bad Request\"\n  }\n}"}],"_postman_id":"f2d7ad04-714e-42c1-81e7-c8b8b27c773f"},{"name":"Get order","id":"e447efd2-666b-4d6f-b253-826edf385802","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orders?orderId=51e44cc8-10af-4a62-8f0e-fb842a3eaa29","description":"<p>Fetch a single order by ID, including its current state and remaining quantity.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>orderId</code> — UUID of the order.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","orders"],"host":["exchange","xago","io"],"query":[{"key":"orderId","value":"51e44cc8-10af-4a62-8f0e-fb842a3eaa29"}],"variable":[]}},"response":[{"id":"a3be9ae8-c5f0-44c8-af5c-102a9bb169b5","name":"Success (live-verified — includes fills array)","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"https://exchange.xago.io/exchange/v1/orders?orderId=51e44cc8-10af-4a62-8f0e-fb842a3eaa29","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","orders"],"query":[{"key":"orderId","value":"51e44cc8-10af-4a62-8f0e-fb842a3eaa29"}]},"description":"Fetch a single order by ID, including its current state and remaining quantity.\n\n**Query parameters**\n- `orderId` — UUID of the order."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"orderId\": \"7db814b6-e12a-4d0a-aace-de00ccb69aab\",\n  \"status\": \"FAILED\",\n  \"currencyPair\": \"XRP/ZAR\",\n  \"currencyCode\": \"ZAR\",\n  \"direction\": \"BID\",\n  \"type\": \"INSTANT\",\n  \"originAmount\": 1,\n  \"amount\": 0.999,\n  \"remaining\": 0.94905,\n  \"price\": \"34.334542011024123432\",\n  \"averageFillPrice\": 20,\n  \"totalFee\": 0.000999,\n  \"feeCurrency\": \"ZAR\",\n  \"fills\": [\n    {\n      \"price\": 20,\n      \"timestamp\": 1779290800213,\n      \"amount\": 0.04995,\n      \"currencyCode\": \"ZAR\",\n      \"fee\": 0.000999,\n      \"total\": 0.999001,\n      \"id\": \"v5BuB2ePQ9KbP3BeEdqREg-0000000000\"\n    }\n  ]\n}"},{"id":"a99317e7-5df2-4d19-8352-664ab5795eee","name":"Cancelled order","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"https://exchange.xago.io/exchange/v1/orders?orderId=51e44cc8-10af-4a62-8f0e-fb842a3eaa29","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","orders"],"query":[{"key":"orderId","value":"51e44cc8-10af-4a62-8f0e-fb842a3eaa29"}]},"description":"Fetch a single order by ID, including its current state and remaining quantity.\n\n**Query parameters**\n- `orderId` — UUID of the order."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"orderId\": \"ba696f0a-5d2e-4482-a257-25777d12f6de\",\n  \"status\": \"CANCELLED\",\n  \"currencyPair\": \"XRP/ZAR\",\n  \"currencyCode\": \"ZAR\",\n  \"direction\": \"BID\",\n  \"type\": \"LIMIT\",\n  \"originAmount\": 1,\n  \"amount\": 0.999,\n  \"remaining\": 0.999,\n  \"price\": \"1\",\n  \"averageFillPrice\": 0,\n  \"totalFee\": 0,\n  \"feeCurrency\": \"ZAR\",\n  \"fills\": []\n}"}],"_postman_id":"e447efd2-666b-4d6f-b253-826edf385802"},{"name":"Get order fills","id":"799a471c-3d78-4808-90fa-ee2f4d9ec374","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/orders/fills/:orderId","description":"<p>Return every fill that has been booked against the given order. Useful for reconciling partially filled limit orders.</p>\n<p><strong>Path params</strong></p>\n<ul>\n<li><code>:orderId</code> — UUID of the order.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","orders","fills",":orderId"],"host":["exchange","xago","io"],"query":[],"variable":[{"type":"any","value":"","key":"orderId"}]}},"response":[{"id":"c4ebe4ca-f663-48b9-b4b4-dd5eddfad4ac","name":"Endpoint unavailable","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/exchange/v1/orders/fills/:orderId","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","orders","fills",":orderId"],"variable":[{"key":"orderId","value":""}]},"description":"Return every fill that has been booked against the given order. Useful for reconciling partially filled limit orders.\n\n**Path params**\n- `:orderId` — UUID of the order."},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": \"ResourceNotFound\",\n  \"message\": \"Route not registered (schema file missing). Order fills are also returned inside the single-order GET response under `fills[]`.\"\n}"}],"_postman_id":"799a471c-3d78-4808-90fa-ee2f4d9ec374"},{"name":"Create Order INSTANT","id":"a945f42c-bd55-409d-aa6e-ad270ba5246b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"INSTANT\",\n    \"direction\": \"ask\",\n    \"amount\":10,\n    \"currencyPair\": \"XRP/ZAR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orders","description":"<p>Place an instant (market) order. Fills immediately at the best available aggregated price.</p>\n<p><strong>Body</strong></p>\n<ul>\n<li><code>type</code> — <code>INSTANT</code>.</li>\n<li><code>direction</code> — <code>ask</code> (sell base) or <code>bid</code> (buy base).</li>\n<li><code>amount</code> — base-currency amount.</li>\n<li><code>currencyPair</code> — e.g. <code>XRP/ZAR</code>.</li>\n</ul>\n<hr />\n<p><strong>Response convention:</strong> the response body is a single JSON-encoded UUID — the <code>orderId</code>. Use it on <strong>Get order</strong> (<code>GET /v1/orders?currencyPair=…&amp;orderId=&lt;id&gt;</code>) to poll status and fills, or on <strong>Cancel Order</strong> (<code>POST /v1/orders/cancellation?orderId=&lt;id&gt;</code>).</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","orders"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"4a6d0af3-a910-41f7-8d36-410aec8d4ffc","name":"Accepted (live-verified) — body is the orderId as a JSON string","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"INSTANT\",\n    \"direction\": \"ask\",\n    \"amount\":10,\n    \"currencyPair\": \"XRP/ZAR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orders","description":"Place an instant (market) order. Fills immediately at the best available aggregated price.\n\n**Body**\n- `type` — `INSTANT`.\n- `direction` — `ask` (sell base) or `bid` (buy base).\n- `amount` — base-currency amount.\n- `currencyPair` — e.g. `XRP/ZAR`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"\"7db814b6-e12a-4d0a-aace-de00ccb69aab\""},{"id":"daa3a86c-63ae-4a32-b6b9-c2e6b39152ad","name":"Insufficient balance","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"INSTANT\",\n    \"direction\": \"ask\",\n    \"amount\":10,\n    \"currencyPair\": \"XRP/ZAR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orders","description":"Place an instant (market) order. Fills immediately at the best available aggregated price.\n\n**Body**\n- `type` — `INSTANT`.\n- `direction` — `ask` (sell base) or `bid` (buy base).\n- `amount` — base-currency amount.\n- `currencyPair` — e.g. `XRP/ZAR`."},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"The Placed amount is higher than your available balance. Please place less or equal to your available balance.\"\n  },\n  \"errors\": [\n    \"The Placed amount is higher than your available balance. Please place less or equal to your available balance.\"\n  ]\n}"}],"_postman_id":"a945f42c-bd55-409d-aa6e-ad270ba5246b"},{"name":"Create Order LIMIT","id":"6e4f2534-b68d-4cea-98eb-f5423da6b68b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"LIMIT\",\n    \"direction\": \"ask\",\n    \"amount\": 5,\n    \"price\": 2,\n    \"currencyPair\": \"XRP/ZAR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orders","description":"<p>Place a limit order that rests on the order book until matched.</p>\n<p><strong>Body</strong></p>\n<ul>\n<li><code>type</code> — <code>LIMIT</code>.</li>\n<li><code>direction</code> — <code>ask</code> or <code>bid</code>.</li>\n<li><code>amount</code> — base-currency amount.</li>\n<li><code>price</code> — limit price in quote currency.</li>\n<li><code>currencyPair</code> — e.g. <code>XRP/ZAR</code>.</li>\n</ul>\n<hr />\n<p><strong>Response convention:</strong> the response body is a single JSON-encoded UUID — the <code>orderId</code>. Use it on <strong>Get order</strong> to poll fills, or on <strong>Cancel Order</strong> to cancel before fill.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","orders"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"f05fddb2-72d1-48c2-823e-6f2179157669","name":"Accepted (live-verified) — body is the orderId as a JSON string","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"LIMIT\",\n    \"direction\": \"ask\",\n    \"amount\": 5,\n    \"price\": 2,\n    \"currencyPair\": \"XRP/ZAR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orders","description":"Place a limit order that rests on the order book until matched.\n\n**Body**\n- `type` — `LIMIT`.\n- `direction` — `ask` or `bid`.\n- `amount` — base-currency amount.\n- `price` — limit price in quote currency.\n- `currencyPair` — e.g. `XRP/ZAR`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"\"ba696f0a-5d2e-4482-a257-25777d12f6de\""},{"id":"3645b357-15cb-4e23-a76b-f0bcf5b222da","name":"Insufficient balance","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"LIMIT\",\n    \"direction\": \"ask\",\n    \"amount\": 5,\n    \"price\": 2,\n    \"currencyPair\": \"XRP/ZAR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orders","description":"Place a limit order that rests on the order book until matched.\n\n**Body**\n- `type` — `LIMIT`.\n- `direction` — `ask` or `bid`.\n- `amount` — base-currency amount.\n- `price` — limit price in quote currency.\n- `currencyPair` — e.g. `XRP/ZAR`."},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"The Placed amount is higher than your available balance. Please place less or equal to your available balance.\"\n  },\n  \"errors\": [\n    \"The Placed amount is higher than your available balance. Please place less or equal to your available balance.\"\n  ]\n}"}],"_postman_id":"6e4f2534-b68d-4cea-98eb-f5423da6b68b"},{"name":"Create Order PEGGED","id":"e0543726-84c8-4abc-bed4-f5e6057c0303","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"maker\",\n    \"direction\": \"bid\",\n    \"amount\": 45,\n    \"price\": -2.5,\n    \"currencyPair\": \"XRP/ZAR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orders","description":"<p>Place a pegged maker order whose price tracks the top of the book with the given offset.</p>\n<p><strong>Body</strong></p>\n<ul>\n<li><code>type</code> — <code>maker</code>.</li>\n<li><code>direction</code> — <code>ask</code> or <code>bid</code>.</li>\n<li><code>amount</code> — base-currency amount.</li>\n<li><code>price</code> — offset from the top of book (negative = behind the touch, positive = inside the spread).</li>\n<li><code>currencyPair</code> — e.g. <code>XRP/ZAR</code>.</li>\n</ul>\n<hr />\n<p><strong>Response convention:</strong> the response body is a single JSON-encoded UUID — the <code>orderId</code>. Use it on <strong>Get order</strong> to poll fills, or on <strong>Cancel Order</strong> to cancel before fill.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","orders"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"ea3e3c51-671a-409f-bf8d-a162a57643ab","name":"Accepted (live-verified) — body is the orderId as a JSON string","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"type\": \"maker\",\n    \"direction\": \"bid\",\n    \"amount\": 45,\n    \"price\": -2.5,\n    \"currencyPair\": \"XRP/ZAR\"\n}","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orders","description":"Place a pegged maker order whose price tracks the top of the book with the given offset.\n\n**Body**\n- `type` — `maker`.\n- `direction` — `ask` or `bid`.\n- `amount` — base-currency amount.\n- `price` — offset from the top of book (negative = behind the touch, positive = inside the spread).\n- `currencyPair` — e.g. `XRP/ZAR`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"\"bfdb5c46-4109-4364-b233-22154dbd13bc\""}],"_postman_id":"e0543726-84c8-4abc-bed4-f5e6057c0303"},{"name":"Cancel Order","id":"85471fd5-7408-47aa-a0ab-3ba2f6b6c697","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"https://exchange.xago.io/exchange/v1/orders/cancellation?orderId=123456","description":"<p>Cancel a single open order by ID.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>orderId</code> — UUID of the order to cancel.</li>\n</ul>\n<hr />\n<p><strong>Response convention:</strong> the response body echoes the <code>orderId</code> as a JSON-encoded UUID once the cancellation is accepted. Follow up with <strong>Get order</strong> to confirm <code>status: \"CANCELLED\"</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","orders","cancellation"],"host":["exchange","xago","io"],"query":[{"key":"orderId","value":"123456"}],"variable":[]}},"response":[{"id":"eb03d836-815a-4ef7-abf6-bd6e6775710e","name":"Cancelled (live-verified) — body is the orderId as a JSON string","originalRequest":{"method":"POST","header":[],"url":{"raw":"https://exchange.xago.io/exchange/v1/orders/cancellation?orderId=123456","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","orders","cancellation"],"query":[{"key":"orderId","value":"123456"}]},"description":"Cancel a single open order by ID.\n\n**Query parameters**\n- `orderId` — UUID of the order to cancel."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"\"ba696f0a-5d2e-4482-a257-25777d12f6de\""}],"_postman_id":"85471fd5-7408-47aa-a0ab-3ba2f6b6c697"},{"name":"Cancel All orders","id":"e6813399-105b-414d-ae68-2af84817b40b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://exchange.xago.io/exchange/v1/orders","description":"<p>Cancel every open order belonging to the authenticated identity. There is no currency-pair filter — use <strong>Cancel Order</strong> for targeted cancellations.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","orders"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"82a57c7c-845f-4980-a304-7c61e44db4f4","name":"Server error on local stack — verify against production","originalRequest":{"method":"DELETE","header":[],"url":"https://exchange.xago.io/exchange/orders","description":"Cancel every open order belonging to the authenticated identity. There is no currency-pair filter — use **Cancel Order** for targeted cancellations."},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": {\n    \"code\": 0,\n    \"message\": \"Couldn't cancel order\"\n  }\n}"}],"_postman_id":"e6813399-105b-414d-ae68-2af84817b40b"}],"id":"e2edd4db-cc47-4458-afa9-75039cbb8765","description":"<p>Endpoints for placing and managing orders on the Xago trade engine.</p>\n<p>Three order types are supported:</p>\n<ul>\n<li><strong>INSTANT</strong> — fills immediately at the best available market price, like a market order. Specify <code>amount</code> and <code>direction</code> (<code>ask</code> to sell, <code>bid</code> to buy).</li>\n<li><strong>LIMIT</strong> — rests on the order book until matched. Requires <code>price</code> and <code>amount</code>.</li>\n<li><strong>PEGGED</strong> — a maker order whose price is pegged to the top of the book with an offset (positive = inside the spread, negative = behind it).</li>\n</ul>\n<p>A <code>202 Accepted</code> response means the order was received, not that it filled — check fills via <strong>Get order</strong>, <strong>Get order fills</strong>, or the WebSocket private channel.</p>\n","_postman_id":"e2edd4db-cc47-4458-afa9-75039cbb8765","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Order Book","item":[{"name":"Get Order Book","id":"6454cf90-ff89-4bab-9170-806f0e2f4b82","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/orderbook?currencyPair=XRP/ZAR","description":"<p>Return the full L2 order book for the given pair — every resting bid and ask grouped by price level.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>currencyPair</code> — e.g. <code>XRP/ZAR</code>.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["exchange","v1","orderbook"],"host":["exchange","xago","io"],"query":[{"key":"currencyPair","value":"XRP/ZAR"},{"disabled":true,"key":"1000000000","value":""}],"variable":[]}},"response":[{"id":"b4f0e9ad-938f-4020-9258-32ffb4e43120","name":"Success","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"https://exchange.xago.io/exchange/v1/orderbook?currencyPair=XRP/ZAR","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","orderbook"],"query":[{"key":"currencyPair","value":"XRP/ZAR"},{"key":"1000000000","value":"","disabled":true}]},"description":"Return the full L2 order book for the given pair — every resting bid and ask grouped by price level.\n\n**Query parameters**\n- `currencyPair` — e.g. `XRP/ZAR`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"buyOrders\": [\n    {\n      \"price\": 19,\n      \"xrp\": 474.589431,\n      \"total\": 9017.199193,\n      \"commisionRate\": 0.1,\n      \"identity\": \"46336530-03a3-11ee-a480-9dd8624f4f0d\",\n      \"percentage\": null\n    },\n    {\n      \"price\": 15,\n      \"xrp\": 33.300033,\n      \"total\": 499.500499,\n      \"commisionRate\": 0.1,\n      \"identity\": \"46336530-03a3-11ee-a480-9dd8624f4f0d\",\n      \"percentage\": null\n    }\n  ],\n  \"sellOrders\": [\n    {\n      \"price\": 20,\n      \"xrp\": 5.043984,\n      \"total\": 100.87968,\n      \"commisionRate\": 0.1,\n      \"identity\": \"46336530-03a3-11ee-a480-9dd8624f4f0d\",\n      \"percentage\": null\n    }\n  ]\n}"}],"_postman_id":"6454cf90-ff89-4bab-9170-806f0e2f4b82"},{"name":"Get Prices","id":"e3000c08-4ab6-47a1-ac72-89c6d7563a13","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/prices/current","description":"<p>Return the latest mid prices for every active currency pair. Lightweight endpoint suitable for high-frequency polling when WebSocket isn't available.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","prices","current"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"1c140511-c780-4e59-bb71-3da74ba20dc8","name":"Success","originalRequest":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/prices/current","description":"Return the latest mid prices for every active currency pair. Lightweight endpoint suitable for high-frequency polling when WebSocket isn't available."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"buyXRP\": [\n    {\n      \"currency\": \"EUR\",\n      \"price\": \"1.17874\",\n      \"lastTradePrice\": null,\n      \"source\": \"primary\"\n    },\n    {\n      \"currency\": \"ZAR\",\n      \"price\": 22.606267848839998,\n      \"lastTradePrice\": null,\n      \"source\": \"primary\"\n    },\n    {\n      \"currency\": \"USD\",\n      \"price\": \"1.36916\",\n      \"lastTradePrice\": null,\n      \"source\": \"primary\"\n    },\n    {\n      \"currency\": \"XRP\",\n      \"price\": 1,\n      \"source\": \"primary\"\n    }\n  ],\n  \"buyZAR\": [\n    {\n      \"currency\": \"XRP\",\n      \"price\": 0.04423551940048845,\n      \"source\": \"primary\"\n    },\n    {\n      \"currency\": \"ZAR\",\n      \"price\": 1,\n      \"source\": \"default\"\n    },\n    {\n      \"currency\": \"USD\",\n      \"price\": 0.06056550374237276,\n      \"source\": \"calculated\"\n    }\n  ],\n  \"timestamp\": 1779288389776,\n  \"ratesTimestamp\": 1779288389776\n}"}],"_postman_id":"e3000c08-4ab6-47a1-ac72-89c6d7563a13"},{"name":"Get Trade History (all pairs)","id":"28eb9a36-9ac7-4c3d-b6c0-128350734594","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"currencyPair\": \"XRP/ZAR\"\n}"},"url":"https://exchange.xago.io/exchange/v1/tradehistory","description":"<p>Return recent trades printed on the exchange. Without <code>currencyPair</code>, returns trades across every pair; supply the parameter to scope to a single market.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","tradehistory"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"f587a06a-6fab-439c-9cfe-c34e09db45b9","name":"Success","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"currencyPair\": \"XRP/ZAR\"\n}"},"url":"https://exchange.xago.io/exchange/v1/tradehistory","description":"Return recent trades printed on the exchange. Without `currencyPair`, returns trades across every pair; supply the parameter to scope to a single market."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"size\": 6.467231,\n    \"price\": 19,\n    \"time\": 1777372080268,\n    \"colour\": \"GREEN\"\n  },\n  {\n    \"size\": 1.507447,\n    \"price\": 18,\n    \"time\": 1777372080247,\n    \"colour\": \"GREEN\"\n  },\n  {\n    \"size\": 1.311032,\n    \"price\": 18,\n    \"time\": 1777372080211,\n    \"colour\": \"RED\"\n  }\n]"}],"_postman_id":"28eb9a36-9ac7-4c3d-b6c0-128350734594"},{"name":"Get Trade History (filtered by pair)","id":"f83a49dc-c2f7-4a24-8c67-46d6dfcde7f7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"https://exchange.xago.io/exchange/v1/tradehistory?currencyPair=XRP/ZAR","description":"<p>Return recent trades printed on the exchange. Without <code>currencyPair</code>, returns trades across every pair; supply the parameter to scope to a single market.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","tradehistory"],"host":["exchange","xago","io"],"query":[{"key":"currencyPair","value":"XRP/ZAR"}],"variable":[]}},"response":[{"id":"da5689ae-4e9a-456e-916f-9730d5c51e91","name":"Success","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"https://exchange.xago.io/exchange/v1/tradehistory?currencyPair=XRP/ZAR","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","tradehistory"],"query":[{"key":"currencyPair","value":"XRP/ZAR"}]},"description":"Return recent trades printed on the exchange. Without `currencyPair`, returns trades across every pair; supply the parameter to scope to a single market."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"size\": 6.467231,\n    \"price\": 19,\n    \"time\": 1777372080268,\n    \"colour\": \"GREEN\"\n  },\n  {\n    \"size\": 1.507447,\n    \"price\": 18,\n    \"time\": 1777372080247,\n    \"colour\": \"GREEN\"\n  },\n  {\n    \"size\": 1.311032,\n    \"price\": 18,\n    \"time\": 1777372080211,\n    \"colour\": \"RED\"\n  }\n]"}],"_postman_id":"f83a49dc-c2f7-4a24-8c67-46d6dfcde7f7"},{"name":"Get Price Tickers","id":"c2359326-4751-47b7-a647-4c093666b732","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/exchange/v1/prices/ticker?currencyPair=all","description":"<p>Return rolling 24h ticker statistics — open, high, low, last, volume, and 24h change — for every market or a single pair.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>currencyPair</code> — <code>all</code> for every pair, or a specific pair like <code>XRP/ZAR</code>.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["exchange","v1","prices","ticker"],"host":["exchange","xago","io"],"query":[{"key":"currencyPair","value":"all"}],"variable":[]}},"response":[{"id":"4aa472ec-5171-440d-8bdf-73ea3e247fbe","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/exchange/v1/prices/ticker?currencyPair=all","protocol":"https","host":["exchange","xago","io"],"path":["exchange","v1","prices","ticker"],"query":[{"key":"currencyPair","value":"all"}]},"description":"Return rolling 24h ticker statistics — open, high, low, last, volume, and 24h change — for every market or a single pair.\n\n**Query parameters**\n- `currencyPair` — `all` for every pair, or a specific pair like `XRP/ZAR`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"currencyPair\": \"XRP/ZAR\",\n    \"lowestAskPrice\": {\n      \"price\": 20,\n      \"qty\": 5.043984\n    },\n    \"highestBidPrice\": {\n      \"price\": 19,\n      \"qty\": 474.589431\n    },\n    \"peggedPrice\": 22.606268,\n    \"lastFillPrice\": 19,\n    \"timestamp\": 1779288477576\n  },\n  {\n    \"currencyPair\": \"XRP/USD\",\n    \"lowestAskPrice\": {\n      \"price\": null,\n      \"qty\": null\n    },\n    \"highestBidPrice\": {\n      \"price\": null,\n      \"qty\": null\n    },\n    \"peggedPrice\": 1.36916,\n    \"lastFillPrice\": null,\n    \"timestamp\": 1779288477603\n  }\n]"}],"_postman_id":"c2359326-4751-47b7-a647-4c093666b732"}],"id":"9c0db8d4-336b-42e6-8d71-6121a7d12334","description":"<p>Public market-data endpoints — order books, recent trade history, current prices, and rolling 24-hour ticker statistics across all listed pairs. These endpoints do not require authentication for public market data, though authenticated calls receive higher rate limits.</p>\n","_postman_id":"9c0db8d4-336b-42e6-8d71-6121a7d12334","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Vasps","item":[{"name":"Get Vasps","id":"18148ea6-3b15-4d7b-9a49-3d0e38e2d48c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://exchange.xago.io/identity/v1/vasps?name=string&id=string&status=string&url=string&page=7362.589357672571&limit=7362.589357672571","description":"<p>Search the list of recognised VASPs. Use the returned <code>id</code> as the <code>vaspId</code> when declaring travel-rule information on a transfer.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>name</code>, <code>id</code>, <code>status</code>, <code>url</code> — filters.</li>\n<li><code>page</code>, <code>limit</code> — pagination.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}},"urlObject":{"protocol":"https","path":["identity","v1","vasps"],"host":["exchange","xago","io"],"query":[{"key":"name","value":"string"},{"key":"id","value":"string"},{"key":"status","value":"string"},{"key":"url","value":"string"},{"key":"page","value":"7362.589357672571"},{"key":"limit","value":"7362.589357672571"}],"variable":[]}},"response":[{"id":"d6ded4b5-6b0b-4c9f-8dd5-a43c97d67a88","name":"Success","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://exchange.xago.io/identity/v1/vasps?name=string&id=string&status=string&url=string&page=7362.589357672571&limit=7362.589357672571","protocol":"https","host":["exchange","xago","io"],"path":["identity","v1","vasps"],"query":[{"key":"name","value":"string"},{"key":"id","value":"string"},{"key":"status","value":"string"},{"key":"url","value":"string"},{"key":"page","value":"7362.589357672571"},{"key":"limit","value":"7362.589357672571"}]},"description":"Search the list of recognised VASPs. Use the returned `id` as the `vaspId` when declaring travel-rule information on a transfer.\n\n**Query parameters**\n- `name`, `id`, `status`, `url` — filters.\n- `page`, `limit` — pagination."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meta\": {\n    \"totalItems\": 5,\n    \"itemCount\": 5,\n    \"numberOfPages\": null,\n    \"limit\": null,\n    \"page\": 1\n  },\n  \"data\": [\n    {\n      \"name\": \"Cape Crypto\",\n      \"displayName\": \"Cape Crypto\",\n      \"email\": \"travelrule@capecrypto.com\",\n      \"contactEmail\": \"travelrule@capecrypto.com\",\n      \"status\": \"ACTIVE\",\n      \"id\": \"dea08793-c730-46ac-a6c5-dd8ae8101ebe\",\n      \"url\": \"https://capecrypto.com\",\n      \"knownAddresses\": [\n        \"0x053a74e70a5369955cb3ef916a4d77b20801f5ca\",\n        \"0xe23f3a9bbb45b2d0efc08f38cfcd03dcd580dcc6\"\n      ],\n      \"autoApproveKnownDepositAddresses\": false,\n      \"createdAt\": \"2025-04-23T14:30:27.598Z\",\n      \"updatedAt\": \"2026-04-29T12:14:54.982Z\"\n    }\n  ]\n}"}],"_postman_id":"18148ea6-3b15-4d7b-9a49-3d0e38e2d48c"}],"id":"13d9c2c9-7af5-40fe-ac81-107a7dfad380","description":"<p>Look up Virtual Asset Service Providers (VASPs) recognised by Xago. The list is used when declaring travel-rule information on incoming and outgoing crypto transfers — submit the <code>vaspId</code> returned here on <code>POST /transfers/vasps</code> to identify a known counterparty.</p>\n","_postman_id":"13d9c2c9-7af5-40fe-ac81-107a7dfad380","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Currencies","item":[{"name":"Get Currencies","id":"5f4d36c4-00aa-41db-95e2-8f151b284b1d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"  ","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/currencies","description":"<p>Return every currency supported on the platform, including its symbol, name, decimal precision, minimum trade amount, and current trading status. Use the response to populate currency selectors and to validate order/transfer payloads before submission.</p>\n","urlObject":{"protocol":"https","path":["exchange","v1","currencies"],"host":["exchange","xago","io"],"query":[],"variable":[]}},"response":[{"id":"103d148e-5cc7-42e6-8250-847616cc5cba","name":"Success — fiat + crypto entries","originalRequest":{"auth":{"type":"noauth"},"method":"GET","header":[],"body":{"mode":"raw","raw":"  ","options":{"raw":{"language":"json"}}},"url":"https://exchange.xago.io/exchange/v1/currencies","description":"Return every currency supported on the platform, including its symbol, name, decimal precision, minimum trade amount, and current trading status. Use the response to populate currency selectors and to validate order/transfer payloads before submission."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"currencyCode\": \"ZAR\",\n    \"name\": \"Rands\",\n    \"symbol\": \"R\",\n    \"type\": \"fiat\",\n    \"precision\": 2,\n    \"position\": 6,\n    \"iconUrl\": \"https://raw.githubusercontent.com/xago-io/kungfu/main/wallet_zar_v1.png\",\n    \"minWithdrawalAmount\": 10,\n    \"minDepositAmount\": 5,\n    \"minInternalSendAmount\": 5,\n    \"depositEnabled\": true,\n    \"withdrawEnabled\": true,\n    \"marketEnabled\": true,\n    \"marketPort\": 9101,\n    \"enabled\": true,\n    \"code\": \"ZAR\",\n    \"bankingProviders\": [\n      {\n        \"uuid\": \"fc2e8b67-49bb-459d-85d8-ee057d8eb614\",\n        \"name\": \"Capitec (Local)\",\n        \"processorCode\": \"XAGO_OPS\",\n        \"depositAvailable\": true,\n        \"depositFields\": {\n          \"bankName\": \"Capitec Business\",\n          \"accountName\": \"Xago Technologies PTY LTD\",\n          \"accountNumber\": \"1050835450\",\n          \"branchCode\": \"450105\"\n        }\n      }\n    ],\n    \"feeDestinations\": {\n      \"feeAggregator\": \"fees.za\",\n      \"operatingAccount\": \"operations.exchange.xago\"\n    }\n  },\n  {\n    \"currencyCode\": \"USDC\",\n    \"name\": \"USD Coin\",\n    \"symbol\": \"$\",\n    \"type\": \"crypto\",\n    \"precision\": 2,\n    \"position\": 8,\n    \"iconUrl\": \"https://raw.githubusercontent.com/xago-io/kungfu/main/wallet_usd_v1.png\",\n    \"priceProxyCurrencyCode\": \"USD\",\n    \"minWithdrawalAmount\": 10,\n    \"minDepositAmount\": 10,\n    \"minInternalSendAmount\": 1,\n    \"depositEnabled\": true,\n    \"withdrawEnabled\": true,\n    \"marketEnabled\": true,\n    \"marketPort\": 9119,\n    \"enabled\": true,\n    \"bankingProviders\": [],\n    \"blockchains\": [\n      {\n        \"blockchain\": \"ethereum\",\n        \"processorCode\": \"CAPE_CRYPTO\",\n        \"withdrawEnabled\": true,\n        \"depositEnabled\": true\n      }\n    ],\n    \"feeDestinations\": {\n      \"feeAggregator\": \"fees.za\",\n      \"operatingAccount\": \"operations.exchange.xago\"\n    }\n  }\n]"}],"_postman_id":"5f4d36c4-00aa-41db-95e2-8f151b284b1d"}],"id":"bee748fd-4fc4-45a0-9844-9c6a11e94138","description":"<p>Retrieve the list of currencies supported on the platform, including fiat and crypto assets, their decimal precision, minimum trade size, and current trading status.</p>\n","_postman_id":"bee748fd-4fc4-45a0-9844-9c6a11e94138","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}},{"name":"Lists","item":[],"id":"61ded888-bf68-4d86-92ef-16433cc28074","description":"<p>Lists of available options for KYC selectors</p>\n<h3 id=\"source-of-funds\">Source of funds</h3>\n<p>Please see the array of supported source of funds</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>SOURCE_OF_FUNDS = [\n'Angel Investments',\n'Business Income',\n'Client funds',\n'Crowdfunding',\n'Dividends',\n'Foreign Investments',\n'Gifts',\n'Government Benefits',\n'Grants and Scholarships',\n'Inheritance',\n'Insurance Payouts',\n'Investment Income',\n'Legal Settlements',\n'Loans',\n'Partnership or Shareholder Distributions',\n'Personal Savings',\n'Retirement Funds',\n'Royalties',\n'Salary or Wages',\n'Sale of Assets',\n'Shareholder funds',\n'Venture Capital',\n]\n\n</code></pre><h3 id=\"occupations\">Occupations</h3>\n<p>Please see the array of supported occupations</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>OCCUPATIONS = [\n'Account Collector',\n'Accountant',\n'Accounting Clerk',\n'Actor',\n'Actuary',\n'Acupuncturist',\n'Administrative Assistant',\n'Administrative Service and Facility Manager',\n'Adult Literacy Teacher',\n'Advertising Manager',\n'Advertising Sale Agent',\n'Aerospace Engineering and Operation Technician',\n'Aerospace Engineer',\n'Agent and Business Manager of Artist, Performer, and Athlete',\n'Agricultural Engineer',\n'Agricultural Inspector',\n'Agricultural Manager',\n'Agricultural Scientist',\n'Agricultural Technician',\n'Agricultural Worker',\n'Air Conditioning and Heating Mechanic and Installer',\n'Air Traffic Controller',\n'Aircraft Cargo Handling Supervisor',\n'Aircraft Equipment Mechanic and Technician',\n'Aircraft Service Attendant',\n'Airfield Operation Specialist',\n'Airline and Commercial Pilot',\n'Ambulance Dispatcher',\n'Ambulance Driver and Attendant (Except Emergency Medical Technician)',\n'Amusement and Recreation Attendant',\n'Animal Care and Service Worker',\n'Animal Control Worker',\n'Announcer',\n'Anthropologist',\n'Appraiser and Assessor of Property',\n'Arbitrator',\n'Archeologist',\n'Architect',\n'Architectural Manager',\n'Archivist',\n'Art Director',\n'Assembler',\n'Astronomer',\n'Athlete and Sport Competitor',\n'Athletic Trainer',\n'Atmospheric Scientist',\n'Attorney',\n'Avionic Equipment Mechanic and Technician',\n'Audio Technician',\n'Audiologist',\n'Audiovisual Equipment Installer and Repairer',\n'Auditing Clerk',\n'Auditor',\n'Author',\n'Automated Teller Machine (ATM) Repairer',\n'Automotive and Watercraft Service Attendant',\n'Automotive Body and Glass Repairer',\n'Automotive Service Technician and Mechanic',\n'Baggage Porter and Bellhop',\n'Bailiff',\n'Baker',\n'Barber',\n'Bartender',\n'Behavioral Disorder Counselor',\n'Benefit Manager',\n'Bicycle Repairer',\n'Bill Collector',\n'Biochemist and Biophysicist',\n'Bioengineer',\n'Biological Scientist (all other)',\n'Biological Technician',\n'Biomedical Engineer',\n'Blockmason',\n'Boiler Operator',\n'Boilermaker',\n'Bookkeeping Clerk',\n'Brazer',\n'Brickmason',\n'Bridge and Lock Tender',\n'Broadcast Technician',\n'Budget Analyst',\n'Building Cleaner',\n'Building Cleaning Worker (all other)',\n'Building Inspector',\n'Bu Driver',\n'Business Operation Specialist (all other)',\n'Butcher',\n'Buyer',\n'Camera and Photographic Equipment Repairer',\n'Camera Operator',\n'Captioner',\n'Cardiovascular Technologist and Technician',\n'Career Counselor and Advisor',\n'Career and Technical Education Teacher',\n'Cargo and Freight Agent',\n'Carpenter',\n'Carpet Installer',\n'Cartographer',\n'Cashier',\n'Ceiling Tile Installer',\n'Cement Mason',\n'Chauffeur',\n'Chef',\n'Chemical Engineer',\n'Chemical Plant and System Operator',\n'Chemical Technician',\n'Chemist',\n'Childcare Center Director',\n'Childcare Worker',\n'Chiropractor',\n'Choreographer',\n'Civil Engineering Technician',\n'Civil Engineer',\n'Claim Adjuster, Appraiser, Examiner, and Investigator',\n'Clergy',\n'Clerk',\n'Bookkeeping, Accounting, and Auditing Clerk',\n'Counter and Rental Clerk',\n'Financial Clerk',\n'General Office Clerk',\n'Information Clerk',\n'Mail Clerk and Mail Machine Operator (Except Postal Service)',\n'Material Recording Clerk',\n'Clinical Laboratory Technologist and Technician',\n'Coach and Scout',\n'Coating Worker',\n'Commercial Designer',\n'Commercial Diver',\n'Commodity Sale Agent',\n'Communication Equipment Operator (all other)',\n'Community and Social Service Specialist (all other)',\n'Community Association Manager',\n'Community Health Worker',\n'Community Service Manager',\n'Compensation, Benefit, and Job Analysi Specialist',\n'Compensation and Benefit Manager',\n'Compliance Officer',\n'Composer - Music',\n'Computer Control Programmer and Operator',\n'Computer Hardware Engineer',\n'Computer Manager',\n'Computer Network Architect',\n'Computer Occupation (all other)',\n'Computer Programmer',\n'Computer Repairer',\n'Computer Scientist',\n'Computer Software Engineer',\n'Computer Support Specialist',\n'Computer System Analyst',\n'Computer System Administrator',\n'Concierge',\n'Conciliator',\n'Conservation Scientist',\n'Conservation Technician',\n'Construction and Related Worker (all other)',\n'Construction Equipment Operator',\n'Construction Inspector',\n'Construction Laborer and Helper',\n'Construction Manager',\n'Continuou Mining Machine Operator',\n'Control and Valve Installer and Repairer (Except Mechanical Door)',\n'Cook',\n'Correctional Officer',\n'Correctional Treatment Specialist',\n'Cosmetologist',\n'Cost Estimator',\n'Costume Attendant',\n'Counselor (all other)',\n'Counter and Rental Clerk',\n'Courier and Messenger',\n'Court Reporter',\n'Craft Artist',\n'Credit Analyst',\n'Credit Counselor',\n'Crematory Operator',\n'Crossing Guard',\n'Curator',\n'Customer Service Representative',\n'Cutter and Trimmer (Hand)',\n'Dancer',\n'Data Entry Keyer',\n'Data Scientist',\n'Database Administrator',\n'Delivery Truck Driver and Driver/Sale Worker',\n'Demonstrator and Product Promoter',\n'Dental Assistant',\n'Dental Hygienist',\n'Dental Laboratory Technician',\n'Dentist',\n'Derrick Operator (Oil and Ga)',\n'Designer (all other)',\n'Desktop Publisher',\n'Development Manager',\n'Diagnostic Medical Sonographer',\n'Diesel Service Technician and Mechanic',\n'Dietitian',\n'Digital Designer',\n'Director - Music',\n'Director - Film, Theater',\n'Disc Jockey / DJ',\n'Dishwasher',\n'Dispatcher (Police, Fire, and Ambulance)',\n'Dispatcher (Except Police, Fire, and Ambulance)',\n'Doctor',\n'Door-to-Door Sale Worker, New and Street Vendor, and Related Worker',\n'Drafter',\n'Drywall Installer',\n'Earth Driller (Except Oil and Ga)',\n'Economist',\n'Editor',\n'Education Administrator - Postsecondary',\n'Education Administrator - Elementary, Middle, and High School',\n'Education Administrator (all other)',\n'Education, Training, and Library Worker (all other)',\n'Electrical and Electronic Engineering Technician',\n'Electrical and Electronic Engineer',\n'Electrical and Electronic Installer and Repairer',\n'Electrician',\n'Electro-mechanical Technician',\n'Elementary School Principal',\n'Elementary School Teacher',\n'Elevator Installer and Repairer',\n'Embalmer',\n'Emergency Management Director',\n'Emergency Medical Technician (EMT)',\n'Emergency Response Dispatcher',\n'Engineering Manager',\n'Engineering Technician, except Drafter (all other)',\n'Aerospace Engineer',\n'Agricultural Engineer',\n'Biomedical Engineer',\n'Chemical Engineer',\n'Civil Engineer',\n'Computer Hardware Engineer',\n'Computer Software Engineer',\n'Electrical and Electronic Engineer',\n'Environmental Engineer',\n'Flight Engineer',\n'Geological Engineer',\n'Health and Safety Engineer',\n'Industrial Engineer',\n'Manufacturing Engineer',\n'Marine Engineer',\n'Material Engineer',\n'Mechanical Engineer',\n'Mining Engineer',\n'Mining Safety Engineer',\n'Nuclear Engineer',\n'Petroleum Engineer',\n'Sale Engineer',\n'Stationary Engineer',\n'All other Engineer',\n'English a a Second Language (ESL) Teacher',\n'Entertainer and Performer, Sport and Related Worker (all other)',\n'Entertainment Attendant and Related Worker (all other)',\n'Environmental Engineering Technologist and Technician',\n'Environmental Science and Protection Technician',\n'Environmental Scientist and Specialist',\n'Epidemiologist',\n'Escalator Installer and Repairer',\n'Etcher and Engraver',\n'Exercise Physiologist',\n'Explosive Worker, Ordnance Handling Expert, and Blaster',\n'Extraction Worker Helper',\n'Extraction Worker (all other)',\n'Fabric and Apparel Patternmaker',\n'Fabricator',\n'Family Therapist',\n'Farm Labor Contractor',\n'Farmer',\n'Fashion Designer',\n'Fence Erector',\n'Film Editor',\n'Financial Analyst',\n'Financial Clerk',\n'Financial Clerk (all other)',\n'Financial Examiner',\n'Financial Manager',\n'Financial Service Sale Agent',\n'Fine Artist',\n'Fire Inspector and Investigator',\n'Firefighter',\n'First-Line Supervisor of Construction Trade and Extraction Worker',\n'First-Line Supervisor of Correctional Officer',\n'First-Line Supervisor of Farming, Fishing, and Forestry Worker',\n'First-Line Supervisor of Fire Fighting and Prevention Worker',\n'First-Line Supervisor of Food Preparation and Serving Worker',\n'First-Line Supervisor of Housekeeping and Janitorial Worker',\n'First-Line Supervisor of Landscaping, Lawn Service, and Groundskeeping Worker',\n'First-Line Supervisor of Mechanic, Installer, and Repairer',\n'First-Line Supervisor of Nonretail Sale Worker',\n'First-Line Supervisor of Office and Administrative Support Worker',\n'First-Line Supervisor of Personal Service Worker',\n'First-Line Supervisor of Police Officer and Detective',\n'First-Line Supervisor of Production and Operating Worker',\n'First-Line Supervisor of Protective Service Worker (all other)',\n'First-Line Supervisor of Retail Sale Worker',\n'First-Line Supervisor of Transportation and Material-Moving Machine and Vehicle Operator',\n'Fishing Worker',\n'Fitness Trainer and Instructor',\n'Flight Attendant',\n'Floor Layer, Sander and Finisher',\n'Flooring Installer',\n'Floral Designer',\n'Food and Beverage Serving and Related Worker',\n'Food Preparation Worker',\n'Food Processing Equipment Worker',\n'Food Science Technician',\n'Food Scientist',\n'Food Preparation and Serving Related Worker (all over)',\n'Food Service Manager',\n'Forensic Science Technician',\n'Forest and Conservation Technician',\n'Forest and Conservation Worker',\n'Forest Fire Inspector and Prevention Specialist',\n'Forester',\n'Fundraiser',\n'Fundraising Manager',\n'Funeral Attendant',\n'Funeral Service Worker',\n'G.E.D. Teacher',\n'Gaming Change Person and Booth Cashier',\n'Gambing Service Worker',\n'Gambing Surveillance Officer',\n'Ga Compressor and Ga Pumping Station Operator',\n'Ga Plant Operator',\n'General Maintenance and Repair Worker',\n'Genetic Counselor',\n'Geographer',\n'Geological Technician',\n'Geoscientist',\n'Glazier',\n'Grader and Sorter (Agricultural Product)',\n'Graduate Teaching Assistant',\n'Graphic Designer',\n'Grinding and Polishing Worker (Hand)',\n'Ground Maintenance Worker',\n'Hairstylist',\n'Hand Laborer',\n'Hazardou Material Removal Worker',\n'Head Cook',\n'Health Diagnosing and Treating Practitioner (all other)',\n'Health Educator and Community Health Worker',\n'Health Information Technologist',\n'Health Service Manager',\n'Healthcare Support Worker (all other)',\n'Hearing Officer',\n'Heating and Air Conditioning Mechanic and Installer',\n'Heavy and Tractor-trailer Truck Driver',\n'Heavy Vehicle Service Technician',\n'High School Equivalency Diploma Teacher',\n'High School Principal',\n'High School Teacher',\n'Highway Maintenance Worker',\n'Historian',\n'Home Appliance Repairer',\n'Home Health Aide',\n'Hotel Manager',\n'Housekeeping Cleaner',\n'Human Resource Manager',\n'Human Resource Specialist',\n'Human Service Assistant',\n'Hunting Worker',\n'Hydrologic Technician',\n'Hydrologist',\n'Industrial Designer',\n'Industrial Engineering Technologist and Technician',\n'Industrial Machinery Mechanic and Maintenance Worker',\n'Industrial Production Manager',\n'Information Research Scientist',\n'Information Security Analyst',\n'Information System Manager',\n'Inspector, Tester, Sorter, Sampler, and Weigher',\n'Installation, Maintenance, and Repair Worker Helper',\n'Installation, Maintenance, and Repair Worker (all other)',\n'Instructional Coordinator',\n'Insulation Worker',\n'Insurance Sale Agent',\n'Insurance Underwriter',\n'Interior Designer',\n'Interpreter',\n'Iron Worker',\n'Janitor',\n'Jeweler',\n'Job Analysi Specialist',\n'Journalist',\n'Judge',\n'Kindergarten Teacher',\n'Labor Relation Specialist',\n'Laboratory Animal Caretaker',\n'Landscape Architect',\n'Lawyer',\n'Layout Worker (Metal and Plastic)',\n'Legal Assistant',\n'Legal Support Worker (all other)',\n'Legislator',\n'Librarian and Library Media Specialist',\n'Library Technician and Assistant',\n'Licensed Practical and Licensed Vocational Nurse',\n'Life Scientist (all other)',\n'Life, Physical, and Social Science Technician (all other)',\n'Lifeguard and Other Recreational Protective Service Worker',\n'Lighting Technician',\n'Line Installer and Repairer',\n'Loan Officer',\n'Locker Room, Coatroom, and Dressing Room Attendant',\n'Locksmith and Safe Repairer',\n'Lodging Manager',\n'Logging Worker',\n'Logistician',\n'Adhesive Bonding Machine Operator and Tender',\n'Chemical Equipment Operator and Tender',\n'Cleaning, Washing, and Metal Pickling Equipment Operator and Tender',\n'Cooling and Freezing Equipment Operator and Tender',\n'Crushing, Grinding, and Polishing Machine Setter, Operator, and Tender',\n'Cutting and Slicing Machine Setter, Operator, and Tender',\n'Extruding and Forming Machine Setter, Operator, and Tender (Synthetic and Glass Fiber)',\n'Extruding, Forming, Pressing, and Compacting Machine Setter, Operator, and Tender',\n'Furnace, Kiln, Oven, Drier, and Kettle Operator and Tender',\n'Mixing and Blending Machine Setter, Operator, and Tender',\n'Packaging and Filling Machine Operator and Tender',\n'Paper Good Machine Setter, Operator, and Tender',\n'Photographic Process Worker and Processing Machine Operator',\n'Separating, Filtering, Clarifying, Precipitating, and Still Machine Setter, Operator, and Tender',\n'Sewing Machine Operator',\n'Shoe Machine Operator and Tender',\n'Textile Bleaching and Dyeing Machine Operator and Tender',\n'Textile Cutting Machine Setter, Operator, and Tender',\n'Textile Knitting and Weaving Machine Setter, Operator, and Tender',\n'Textile Winding, Twisting, and Drawing Out Machine Setter, Operator, and Tender',\n'Machinist',\n'Maid',\n'Maintenance and Repair Worker, General',\n'Makeup Artist (Theatrical and Performance)',\n'Management Analyst',\n'Manager (all other)',\n'Manicurist',\n'Manufactured Building and Mobile Home Installer',\n'Manufacturing Sale Representative',\n'Mapping Technician',\n'Marble Setter',\n'Marine Mechanic',\n'Market Research Analyst',\n'Marketing Manager',\n'Marriage and Family Therapist',\n'Mason: Brick, Block, Stone, and Cement',\n'Massage Therapist',\n'Material Mover',\n'Material Moving Worker (all other)',\n'Material Moving Machine Operator',\n'Mathematical Science Occupation (all other)',\n'Material Scientist',\n'Mathematician',\n'Meat, Poultry, and Fish Cutter and Trimmer',\n'Meat Packer',\n'Mechanical Door Repairer',\n'Mechanical Engineering Technologist and Technician',\n'Mechanic - Automotive',\n'Mechanic - Diesel',\n'Mechanic - Heating, Air Conditioning, and Refrigeration',\n'Mechanic - Industrial Machinery',\n'Mechanic - Small Engine',\n'Mediator',\n'Medical Appliance Technician',\n'Medical Assistant',\n'Medical Billing and Coding',\n'Medical Doctor',\n'Medical Equipment Repairer',\n'Medical Laboratory Technologist and Technician',\n'Medical Record Technician',\n'Medical Registrar Technician',\n'Medical Scientist',\n'Medical Service Manager',\n'Medical Transcriptionist',\n'Meeting, Convention, and Event Planner',\n'Mental Health Counselor',\n'Merchandise Displayer and Window Trimmer',\n'Metal Machine Worker',\n'Metal Worker',\n'Metal Worker and Plastic Worker (all other)',\n'Meteorologist',\n'Meter Reader (Utility)',\n'Microbiologist',\n'Middle School Principal',\n'Middle School Teacher',\n'Millwright',\n'Mine Cutting and Channeling Machine Operator',\n'Mining Machine Operator (all other)',\n'Mobile Equipment Service Technician',\n'Model',\n'Model Maker (Wood)',\n'Molder, Shaper, and Caster (Except Metal and Plastic)',\n'Mortician',\n'Motel Manager',\n'Motion Picture Projectionist',\n'Motor Vehicle Operator (all other)',\n'Motorcycle Mechanic',\n'MRI Technologist',\n'Multimedia Artist and Animator',\n'Museum Technician',\n'Music Director and Composer',\n'Musical Instrument Repairer and Tuner',\n'Musician',\n'Nail Technician',\n'Natural Science Manager',\n'Naval Architect',\n'Network Architect',\n'Network System Administrator',\n'New Analyst',\n'Nuclear Medicine Technologist',\n'Nuclear Technician',\n'Nurse',\n'Nurse Anesthetist, Nurse Midwive, and Nurse Practitioner',\n'Nursing Assistant',\n'Nutritionist',\n'Office and Administrative Support Worker (all other)',\n'Office Clerk',\n'Office Machine Operator (Except Computer)',\n'Occupational Health and Safety Specialist',\n'Occupational Health and Safety Technician',\n'Occupational Therapist',\n'Occupational Therapy Assistant and Aide',\n'Operation Research Analyst',\n'Ophthalmic Medical Technician',\n'Optician, Dispensing',\n'Optometrist',\n'Orderly',\n'Orthotist',\n'Painter (Construction and Maintenance)',\n'Painting Worker',\n'Paperhanger',\n'Paralegal',\n'Paramedic',\n'Parking Enforcement Worker',\n'Parking Attendant',\n'Passenger Attendant',\n'Passenger Vehicle Driver',\n'Patternmaker (Wood)',\n'Payroll Clerk',\n'Pedicurist',\n'Personal Care Aide',\n'Personal Care and Service Worker (all other)',\n'Personal Financial Advisor',\n'Pest Control Worker',\n'Petroleum Pump System Operator, Refinery Operator, and Gauger',\n'Petroleum Technician',\n'Pharmacist',\n'Pharmacy Technician',\n'Phlebotomist',\n'Photogrammetrist',\n'Photographer',\n'Physical Scientist (all other)',\n'Physical Therapist Assistant and Aide',\n'Physical Therapist',\n'Physician Assistant',\n'Physician',\n'Physicist',\n'Pipefitter',\n'Pipelayer',\n'Plant and System Operator (all other)',\n'Plasterer and Stucco Mason',\n'Plastic Machine Worker',\n'Plumber',\n'Podiatrist',\n'Police Officer and Detective',\n'Police Dispatcher',\n'Political Scientist',\n'Postal Service Worker',\n'Postmaster and Mail Superintendent',\n'Postsecondary Education Administrator',\n'Postsecondary Teacher',\n'Postsecondary Teacher (all other)',\n'Power Plant Operator, Distributor, and Dispatcher',\n'Practical Nurse, Licensed',\n'Preciou Stone and Metal Worker',\n'Precision Instrument and Equipment Repairer (all other)',\n'Prepress Technician and Worker',\n'Preschool Director',\n'Preschool Teacher',\n'Presser (Textile, Garment, and Related Material)',\n'Print Binding and Finishing Worker',\n'Printing Press Operator',\n'Private Detective and Investigator',\n'Probation Officer',\n'Producer - Film, Theater',\n'Production Manager',\n'Production Worker Helper',\n'Production Worker (all other)',\n'Promotion Manager',\n'Proofreader and Copy Marker',\n'Property Appraiser and Assessor',\n'Property Manager',\n'Prosthetist',\n'Protective Service Worker (all other)',\n'Psychiatric Technician and Aide',\n'Psychologist',\n'Public Safety Telecommunicator',\n'Public Relation Manager',\n'Public Relation Specialist',\n'Pump Operator',\n'Purchasing Agent and Manager',\n'Quality Assurance Analyst',\n'Quality Control Inspector',\n'Quarry Rock Splitter',\n'Radiation Therapist',\n'Radio, Cellular, and Tower Equipment Installer and Repairer',\n'Radiologic Technologist',\n'Rail Transportation Worker (all other)',\n'Rail-Track Laying and Maintenance Equipment Operator',\n'Railroad Occupation',\n'Rancher',\n'Real Estate Appraiser and Assessor',\n'Real Estate Broker and Sale Agent',\n'Real Estate Manager',\n'Receptionist',\n'Recreation Worker',\n'Recreational Therapist',\n'Recreational Vehicle Service Technician',\n'Referee, Umpire, and Other Sport Official',\n'Refractory Material Repairer (Except Brickmason)',\n'Refrigeration Mechanic and Installer',\n'Registered Nurse',\n'Rehabilitation Counselor',\n'Reinforcing Iron and Rebar Worker',\n'Religiou Activity and Education Director',\n'Religiou Worker (all other)',\n'Repair and Maintenance Worker, General',\n'Reporter',\n'Retail Sale Worker',\n'Rigger',\n'Roof Bolter (Mining)',\n'Roofer',\n'Rotary Drill Operator (Oil and Ga)',\n'Roustabout (Oil and Ga)',\n'Sale and Related Worker (all other)',\n'Sale Manager',\n'Sale Representative, Service (all other)',\n'School Counselor and Advisor',\n'School Principal - Elementary, Middle, and High',\n'Science Technician',\n'Secretary',\n'Security Sale Agent',\n'Security and Fire Alarm System Installer',\n'Security Guard',\n'Segmental Paver',\n'Semi Truck Driver',\n'Septic Tank Servicer and Sewer Pipe Cleaner',\n'Service Unit Operator (Oil, Ga, and Mining)',\n'Set and Exhibit Designer',\n'Sewer (Hand)',\n'Shampooer',\n'Sheet Metal Worker',\n'Shipping, Receiving, and Traffic Clerk',\n'Shoe and Leather Worker and Repairer',\n'Signal and Track Switch Repairer',\n'Singer',\n'Ski Patrol and Other Recreational Protective Service Worker',\n'Skincare Specialist',\n'Slaughterer',\n'Small Engine Mechanic',\n'Social Science Research Assistant',\n'Social Scientist and Related Worker (all other)',\n'Social Service Assistant',\n'Social Service Manager',\n'Social Worker',\n'Sociologist',\n'Software Developer',\n'Software Engineer',\n'Solar Photovoltaic Installer',\n'Solderer',\n'Sound Engineering Technician',\n'Special Education Teacher',\n'Special Effect Artist and Animator',\n'Speech-Language Pathologist',\n'Statistical Assistant',\n'Statistician',\n'Steamfitter',\n'Steel Worker',\n'Stone Setter',\n'Stonemason',\n'Substance Abuse Counselor',\n'Subway and Streetcar Operator',\n'Surgeon',\n'Surgical Assistant and Surgical Technologist',\n'Survey Researcher',\n'Surveying Technician',\n'Surveyor',\n'Switchboard Operator (Including Answering Service)',\n'System Analyst',\n'Tailor, Dressmaker, and Custom Sewer',\n'Tank Car, Truck, and Ship Loader',\n'Taper (Drywall)',\n'Tax Examiner and Collector, and Revenue Agent',\n'Tax Preparer',\n'Taxi Driver',\n'Teacher Assistant',\n'Adult Basic and Secondary Education and ESL Teacher',\n'High School Teacher',\n'Kindergarten and Elementary School Teacher',\n'Middle School Teacher',\n'Substitute Teacher',\n'All Other Teacher and Instructor',\n'Technical Writer',\n'Telecommunication Equipment Installer and Repairer (Except Line Installer)',\n'Telemarketer',\n'Telephone Operator',\n'Television, Video, and Motion Picture Camera Operator and Editor',\n'Teller',\n'Terrazzo Worker',\n'Textile Career',\n'Textile, Apparel, and Furnishing Worker (all other)',\n'Therapist (all other)',\n'Tile Setter',\n'Timekeeping Clerk',\n'Tire Builder',\n'Tire Repairer and Changer',\n'Tobacco Processing Worker',\n'Tool and Die Maker',\n'Tool Grinder, Filer, and Sharpener',\n'Top Executive',\n'Tour Guide and Escort',\n'Traffic Technician',\n'Training Manager',\n'Training and Development Specialist',\n'Translator',\n'Transportation Attendant',\n'Transportation Inspector',\n'Transportation Security Screener',\n'Transportation Worker (all other)',\n'Transportation, Storage, and Distribution Manager',\n'Travel Agent',\n'Travel Clerk',\n'Truck Driver - Delivery and Sale Worker',\n'Truck Driver - Heavy and Tractor-trailer',\n'Ultrasound Technician',\n'Umpire, Referee, and Other Sport Official',\n'Upholsterer',\n'Urban and Regional Planner',\n'Usher, Lobby Attendant, and Ticket Taker',\n'Vascular Technologist',\n'Vending, Coin, and Amusement Machine Servicer and Repairer',\n'Veterinarian',\n'Veterinary Assistant',\n'Veterinary Technologist and Technician',\n'Video Editor',\n'Video Technician',\n'Vocational Nurse, Licensed',\n'Waiter or Waitress',\n'Watch Repairer',\n'Water and Wastewater Treatment Plant and System Operator',\n'Water Transportation Occupation',\n'Web Developer',\n'Weigher, Measurer, Checker, and Sampler, Recordkeeping',\n'Welder and Cutter',\n'Wellhead Pumper',\n'Wholesale Sale Representative',\n'Wildlife Biologist',\n'Wind Turbine Technician',\n'Word Processor and Typist',\n'Woodworker',\n'Woodworker (all other)',\n'Writer',\n'X-Ray Technician',\n'Yard Conductor',\n'Yoga Instructor/Teacher',\n'Youth Program Director',\n'Youth Worker',\n'Zookeeper',\n'Zoologist',\n]\n\n</code></pre>","_postman_id":"61ded888-bf68-4d86-92ef-16433cc28074","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]},"isInherited":true,"source":{"_postman_id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","id":"d13ad3e8-9ebd-4a9d-87d5-1c69857a9687","name":"XAGO API Reference docs","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{access_token}}"}]}},"event":[{"listen":"prerequest","script":{"type":"text/javascript","exec":[""],"id":"27b0aa67-57c5-4e84-a933-9f2e1a985884"}},{"listen":"test","script":{"type":"text/javascript","exec":[""],"id":"35f809b6-cb0a-4c0c-bfd6-670833e6ce06"}}]}