How to Troubleshoot When Binance API Cannot Find Deposit Records?
When the API does not return deposit records, the problem is rarely a coding mistake. More often, it stems from inherent limitations in Binance deposit data access and query scope. When troubleshooting, set aside "code issues" first and rule out problems step by step across three dimensions: data type, time range, and API version.
The world's largest cryptocurrency exchange by trading volume,leading in security and liquidity.
New user benefit: Enjoy 20% off trading fees upon registration!
Step 1: Confirm Whether You Are Looking for "On-chain Deposits" or "Fiat Deposits"
Binance's API provides completely different endpoints for these two deposit types. Many missing-record problems start right here.
On-chain deposits (crypto deposits):
Use the
/sapi/v1/capital/deposit/hisrecendpoint to query.This is the most commonly used deposit query endpoint, supporting filtering by coin, network, status, and txId.
Fiat deposits (buying crypto directly with credit card or bank transfer):
Use the
/sapi/v1/fiat/ordersendpoint to query fiat deposit and withdrawal history.Binance's API does not return fiat deposit records by default – you must call this separate endpoint.
Many third-party tax tools (such as Koinly, CoinLedger) explicitly state that Binance's API does not return fiat deposit history, leading to missing data during import.
What counts as done: First confirm which deposit type you need, then call the corresponding endpoint.
Step 2: Check Whether the Time Range Exceeds API Limits
Binance's API imposes strict time limits on deposit history queries – this is one of the most overlooked points.
Key limits:
The query period cannot exceed 90 days.
The interval between
startTimeandendTimemust be less than 90 days.If
startTimeis not passed, the API only returns data from the last 90 days by default.
If you try to fetch deposits older than 3 months by calling fetch_deposits without a time parameter, you will not get them. Third-party libraries such as CCXT have the same limitation – some developers report that even when using the since parameter, the iteration can break due to a 3-month gap without deposits, leaving the history incomplete.
Solution: Query data in chunks of no more than 90 days each, using pagination to iterate segment by segment from oldest to newest, rather than attempting to fetch everything at once.
What counts as done: Confirm that the requested time interval does not exceed 90 days and implement a segmented query loop.
Step 3: Ensure the API Key Has "Read" Permission
API key permission settings directly affect the scope of data you can retrieve.
Deposit history falls under the
USER_DATApermission scope. The API key must have the read-only permission enabled to query this data.Some developers have observed that the same endpoint returns different amounts of data with different users' API keys – some can see the full history, while others can only see data created after the API key was generated.
How to check:
Log in to the Binance website and go to the API Management page.
Check the permission settings for the relevant API key and make sure "Read" permission is enabled.
If permissions are insufficient, regenerate an API key with full read access.
What counts as done: Confirm the API key has USER_DATA read permission.
Step 4: Verify the API Version – Old Endpoints May Have Been Discontinued
Binance retired the WAPI endpoints in 2021. All requests must be migrated to SAPI endpoints. If you are still using old WAPI endpoints to query deposit records, you will get nothing.
How to check:
Make sure the request URL contains
/sapi/v1/or/sapi/v2/, not/wapi/.On-chain deposits:
/sapi/v1/capital/deposit/hisrecSub-account deposits:
/sapi/v1/capital/deposit/subHisrec
What counts as done: Confirm the request URL uses a SAPI endpoint path.
Step 5: Verify with the Transaction Hash (txId)
If you still cannot find the deposit after following the above steps, use the txId to look up that specific deposit directly.
How to do it:
Pass the
txIdparameter in the deposit history endpoint.If the txId is confirmed on-chain but still not returned by the API, the deposit may have been made via a fiat channel (see Step 1).
If the txId can be found but the status shows
pending(status=0) orcredited but cannot withdraw(status=6), it means the deposit has not yet completed. Wait patiently for the confirmation.
What counts as done: Locate the specific record via txId and confirm the deposit status.
Common Failure Causes Summary
| Cause | Symptom | Solution |
|---|---|---|
| Querying on-chain endpoint for a fiat deposit | No records returned | Switch to /sapi/v1/fiat/orders |
| Query interval exceeds 90 days | Only returns data from the last 3 months | Query in chunks of ≤90 days |
| API key lacks read permission | Returns an empty array | Regenerate a key with USER_DATA permission |
| Using discontinued WAPI endpoint | Request error or no data | Migrate to SAPI endpoint |
| Deposit confirmation not yet complete | Status is pending or 6 | Wait for on-chain confirmations to complete |
The world's largest cryptocurrency exchange by trading volume,leading in security and liquidity.
New user benefit: Enjoy 20% off trading fees upon registration!
Risk Reminders
An empty API result does not mean your funds are lost – first check the Deposit History in the Binance App to confirm whether the deposit arrived. If the record appears in the App but not via the API, the problem is with the API call, not the safety of your funds.
Starting January 15, 2026, Binance updated the signature parameter ordering rule. If your requests do not follow the new ordering, they will be rejected with a
-1022 INVALID_SIGNATUREerror. You need to check whether your signature logic has been adapted.
First confirm the deposit type (on-chain vs fiat), then check whether the time range exceeds 90 days, and finally verify your API key permissions. These three steps will identify most issues. If you still cannot find the record, check the Deposit History in the Binance App to confirm the funds have arrived, and then use the corresponding txId to make a direct API request via Postman to rule out any code logic issues.
