Common issues
401 Unauthorized errors
401 Unauthorized errors
Hitting rate limits
Hitting rate limits
Problem: Requests are returning HTTP 429 with
rate_limit_exceeded.What to do:- Implement exponential backoff. The rate limits page has a reference implementation.
- Cache read responses when the data does not need to be real-time.
- Use the largest
pageSizeyour workload can handle when iterating — see Pagination. - If you consistently hit limits in production, reach out via the CDP Discord to discuss a limit increase.
Transfers stuck in `pending` or `processing`
Transfers stuck in `pending` or `processing`
Problem: A transfer was created but never reaches
completed.Things to check:- For quoted transfers, you must call
POST /v2/transfers/{transferId}/executeto commit the quote. Quotes expire if not executed in time. - Verify the source and target account IDs are valid and currently linked to your entity.
- Check the transfer object for any error details on the response — failures surface there before they hit webhooks.
- For inbound deposits requiring travel rule information, submit it via
POST /v2/transfers/{transferId}/travel-rule.
Code works in sandbox but fails in production
Code works in sandbox but fails in production
Problem: A request that succeeds in sandbox returns an error against production.Things to check:
- All credentials, account IDs, deposit destination IDs, and payment method IDs are environment-scoped. None of them carry across.
- Switch every hardcoded sandbox value (API key, base URL, IDs) to a configuration value before promoting.
- Production accounts may have different supported assets, networks, or KYC requirements than your sandbox setup.
- Confirm your production API key has the permissions needed for the endpoint you’re calling.
400 Bad Request / invalid request errors
400 Bad Request / invalid request errors
Problem: Requests are rejected with HTTP 400.Things to check:
- Amounts are sent as strings, not numbers. See Conventions.
- All required fields are present and resource IDs use the right prefix (for example,
account_<uuid>, not a bare UUID). - Optional
metadatais a flat string-to-string map within the documented limits (see Metadata). - The full error response includes an
errorLinkfield pointing at the specific entry in the Errors reference. Start there.
Idempotency key conflicts (422)
Idempotency key conflicts (422)
Problem: A retry returns HTTP 422 with
idempotency_error.What it means: You reused an idempotency key with a different request body. The API rejects this to prevent the second request from being silently merged with the first.What to do: Generate a new UUID v4 for the retry, or send the exact original payload. See Idempotency.Getting help
Discord
Ask questions and get help from the CDP community and team
Errors reference
Full catalog of error types and their meanings
Service status
Check current status of CDP services
CDP Portal
Manage API keys, accounts, and usage