English
Track Withdrawal Status
Creating a withdrawal starts an asynchronous workflow. OOLIN validates the request, processes the on-chain transfer, and reflects the final result in the Wallet API. Your backend creates the withdrawal and retrieves its result through the detail endpoint.
Retrieve the withdrawal
bash
wallet_request GET "/withdrawals/$WITHDRAWAL_ID" | jq
wallet_request GET "/withdrawals?account_id=$ACCOUNT_ID&after_id=0&limit=100" | jqInterpret customer-facing status
user_status | Related processing state | Backend action |
|---|---|---|
PENDING | Request accepted or inspected | Poll at a bounded interval |
PROCESSING | Approval, signing, or on-chain execution | Keep the withdrawal pending |
COMPLETED | On-chain transfer completed | Store tx_hash and completed_at |
FAILED | On-chain processing failed | Record failure and verify balance recovery |
REJECTED | Processing rejected | Record the reason and perform operational follow-up |
CANCELLED | Request cancelled | Close the request and verify balance |
Final success requires all of the following:
user_status: "COMPLETED"status: "COMPLETED"- a valid
tx_hash
Never treat an intermediate PROCESSING state as success.
Verify the final balance
bash
wallet_request GET "/accounts/$ACCOUNT_ID/balances/$ASSET_TYPE_ID" | jqAfter completion, the finalized debit appears in the ledger as WITHDRAW / DEBIT. After a failed, rejected, or cancelled withdrawal, verify that the reserved amount and fee have returned to available balance. Do not adjust the customer balance independently.
Polling rules
- Use a bounded interval with backoff rather than a tight loop.
- Stop after a final customer status.
- Persist every observed state transition and
request_idfor support diagnostics. - Cursor lists discover new records but do not repeat records whose status later changes; poll non-final records by ID.