Skip to content

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" | jq

Interpret customer-facing status ​

user_statusRelated processing stateBackend action
PENDINGRequest accepted or inspectedPoll at a bounded interval
PROCESSINGApproval, signing, or on-chain executionKeep the withdrawal pending
COMPLETEDOn-chain transfer completedStore tx_hash and completed_at
FAILEDOn-chain processing failedRecord failure and verify balance recovery
REJECTEDProcessing rejectedRecord the reason and perform operational follow-up
CANCELLEDRequest cancelledClose 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" | jq

After 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_id for support diagnostics.
  • Cursor lists discover new records but do not repeat records whose status later changes; poll non-final records by ID.

Next: Build the complete wallet flow.

OOLIN is a digital asset operations infrastructure product by BPMG.