Quick Start Guide
This guide is the shortest path from provisioned sandbox access to a working Account API integration.
Before you start
You need:
- sandbox base URL;
- OAuth
client_id,client_secret, andWITHDRAWALscope; - partner egress IPs or CIDR ranges allowlisted by Axiym;
- at least one accessible account with
ACTIVEstatus and enough balance; - an HTTPS webhook receiver for withdrawal events.
See Access Setup if access has not been provisioned yet.
Step 1: Authenticate
Request an access token with OAuth 2.0 client credentials.
POST /oauth/token HTTP/1.1
Content-Type: application/x-www-form-urlencodedSend the access token as a bearer token on protected API requests:
Authorization: Bearer <access_token>See Authentication for the full token request.
Step 2: Configure webhooks
Register a webhook subscription early so your system receives withdrawal events without polling.
Use POST /webhooks/subscriptions to register your HTTPS receiver.
See Webhook Registration and Management and Verifying Webhook Signatures.
Step 3: List accounts
Call GET /accounts to see the accounts your integration can access.
GET /accounts HTTP/1.1
Authorization: Bearer <access_token>Use GET /accounts/{accountId} to retrieve a single account and inspect its
balance, currency, and status.
Store the accountId. Withdrawal amounts are interpreted in the source
account currency.
Step 4: Register or select a whitelisted own account
Call GET /whitelisted-own-accounts to see destinations Axiym has approved for withdrawal.
GET /whitelisted-own-accounts HTTP/1.1
Authorization: Bearer <access_token>If the required destination is not yet registered, use
POST /whitelisted-own-accounts/bank for a bank account or
POST /whitelisted-own-accounts/wallet for a wallet address. See the
API Reference for the request fields.
Only create withdrawals to whitelisted own accounts with status ACTIVE. A
newly registered destination may require approval before it becomes active.
Step 5: Create a withdrawal
Create a withdrawal from an accessible source account. The destination is
addressed by destinationId, the identifier of one of your registered
whitelisted own accounts.
POST /withdrawals HTTP/1.1
Authorization: Bearer <access_token>
Idempotency-Key: wd-2026-0614-01-create
Content-Type: application/json
{
"sourceAccountId": "8f1d4a2c-3b5e-4c7a-9d1f-2a6b8c0e4d3a",
"amount": "500.00",
"destinationId": "e2c8a4f6-7b1d-4e3a-9c5f-8a0b2d4e6f1c",
"purpose": "Treasury sweep",
"externalReference": "wd-2026-0614-01"
}The referenced whitelisted own account must be ACTIVE and in the source
account's currency. An unknown destination is rejected.
Creation submits the withdrawal for execution; there is no separate
confirmation step. Store the withdrawalId from the response.
{
"withdrawalId": "9b4e2a1c-6d3f-4a8e-bc7d-1f2a3b4c5d6e",
"status": "PENDING",
"sourceAccount": {
"accountId": "8f1d4a2c-3b5e-4c7a-9d1f-2a6b8c0e4d3a",
"currency": "USDT",
"paymentRails": "TRON"
},
"amount": "500.00",
"feeAmount": "5.00",
"currency": "USDT",
"destination": {
"destinationId": "e2c8a4f6-7b1d-4e3a-9c5f-8a0b2d4e6f1c",
"status": "ACTIVE",
"currency": "USDT",
"walletAddress": "TNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeL",
"network": "TRON",
"createdAt": "2026-06-12T14:05:00Z"
},
"code": "AXI00000418",
"purpose": "Treasury sweep",
"externalReference": "wd-2026-0614-01",
"createdAt": "2026-06-14T20:06:50Z"
}The response embeds the resolved whitelisted own account in full and carries the
system-assigned payment code shown on the payment.
Step 6: Track the withdrawal
Track the withdrawal with GET /withdrawals/{withdrawalId} and webhook events.
Withdrawal statuses:
| Status | Meaning |
|---|---|
PENDING | Created and awaiting execution. |
HELD | Temporarily on hold; no action needed from you. |
COMPLETED | Completed successfully. |
CANCELED | Canceled before completion. See reasonCode. |
REJECTED | Rejected and not completed. See reasonCode. |
Once a wallet withdrawal is COMPLETED, it carries transactionHash — the
transaction hash on the network. Bank withdrawals are identified by code in
the receiving bank statement.
Step 7: Reconcile activity
Use account balances, withdrawal records, and webhook events to reconcile
movement on the account. account.credited / account.debited events carry
each posted movement, including credits that do not originate from this API.
When the withdrawal is COMPLETED, retrieve the source account again with
GET /accounts/{accountId} and confirm the updated balance. The account is
debited for amount; feeAmount is the fee charged within that movement.
For period reconciliation, call GET /accounts/{accountId}/statement: it
returns opening/closing balances, period totals, and the posted movements
with a running balance.
Next
Use the API Reference for exact endpoint contracts and Events for webhook payload schemas.