binance_get_all_withdrawals
Fetch all crypto withdrawals from your Binance account since 2017, including fees, using resumable pagination to cover multi-year history for audits.
Instructions
Every crypto withdrawal since since — the 90-day cap walked for you.
Same walk as binance_get_all_deposits (89-day windows newest-first, offset
paging by 1000 inside each, dedupe by Binance id), against
GET /sapi/v1/capital/withdraw/history. Reading only — this server can never
submit a withdrawal.
⚠️ Each call costs UID weight 18000 of the 180000/min per-account budget, and
the endpoint separately allows only 10 requests per second. That is why
max_calls defaults to 10 — one full minute of UID budget — instead of the 60
the deposit walk uses. A full 2017→today sweep needs ~35 windows, so expect to
resume across several calls; the cursor makes that exact and gap-free.
since defaults to 2017-07-01, Binance's launch: no API reports an account's
creation date (apiRestrictions.createTime is the API KEY's date).
When to Use:
"Show me every withdrawal I have ever made", including the fees they cost.
Auditing money going OUT, for tax or reconciliation.
When NOT to Use:
For one recent window —
binance_get_withdraw_historyis one call.For deposits — use
binance_get_all_deposits.To MAKE a withdrawal — impossible by design.
Returns:
Rows sorted newest-first with per-coin totals (count, summed amount, summed
transactionFee). Markdown displays at most 50 rows; response_format="json"
returns {count, truncated, no_progress, since, until, resume_before, calls_made, totals, items} with the full set. truncated is true exactly when the walk did not
reach since; no_progress is true when it did not finish even the first window,
and then resume_before is null on purpose — see Pagination.
Pagination:
If the walk stops before since — which with max_calls=10 is the normal case for
a multi-year sweep — it returns the rows it has PLUS resume_before, the boundary
of the next UNFETCHED range. Call again with the same since and that
resume_before; repeat until truncated is false. If not even the first window
completed, resume_before is null and no_progress is true: raise max_calls and
re-run the same range, since resuming at until would repeat the identical calls.
Examples: params = {} params = {"since": "2024-01-01", "coin": "BTC"} params = {"since": "2017-07-01", "resume_before": 1717200000000, "max_calls": 10}
Error Handling: An over-wide-window error is tolerated (the window is halved and retried). Auth (-2015), rate limits (429/418) and envelope failures stop the walk immediately and are reported alongside the rows already collected and the resume cursor.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |