API Errors
The CDP Payments API uses conventional HTTP response codes to indicate the success or failure of an API request. In general:-
Codes in the
2xxrange indicate success -
Codes in the
4xxrange indicate an error that failed given the information provided (e.g., a required parameter was omitted) -
Codes in the
5xxrange indicate an error on CDP’s backend servers.5xxerrors are not a guarantee of failure; there’s always the chance that the operation may have succeeded in our back-end. Therefore, your application should treat the operation’s status as unknown.
errorType: A machine-readable error codeerrorMessage: A human-readable message providing more detailcorrelationId: A unique identifier for the request that can help with debuggingerrorLink: A link to detailed documentation about the specific error type
HTTP 400
invalid_request
This error occurs when the request is malformed or contains invalid data, including issues with the request body, query parameters, path parameters, or headers. Steps to resolve:- Check all required fields and parameters are present
- Ensure request body (if applicable) follows the correct schema
- Verify all parameter formats match the API specification:
- Query parameters
- Path parameters
- Request headers
- Validate any addresses, IDs, or other formatted strings meet requirements
- Missing required parameters
- Invalid parameter types or formats
- Malformed JSON in request body
- Invalid enum values
request_canceled
This error occurs when the client cancels an in-progress request before it completes. Steps to resolve:- Check client-side timeout configurations
- Review request cancellation logic in your code
- Consider increasing timeout thresholds for long-running operations
- Implement request tracking to identify premature cancellations
timed_out
This error occurs when a request exceeds the maximum allowed processing time. Steps to resolve:- Break down large requests into smaller chunks (if applicable)
- Implement retry logic with exponential backoff
- Use streaming endpoints for large data sets
recipient_allowlist_violation
This error occurs when the user is not allowed to receive funds at this address, according to their coinbase account allowlist. Steps to resolve:- Either disable the allowlist or add the wallet address at https://www.coinbase.com/settings/allowlist
- Wait approximately 2 days for updates to take effect.
recipient_allowlist_pending
This error occurs when the user is not allowed to receive funds at this address, because changes to their coinbase account allowlist are pending. Steps to resolve:- Wait approximately 2 days for updates to take effect.
travel_rules_recipient_violation
This error occurs when the user is not allowed to receive funds at this address, because it violates travel rules. Steps to resolve:- Ensure your desired transfer is not blocked by local travel regulations.
source_account_invalid
This error occurs when the source account specified in the transfer request is invalid or malformed. Steps to resolve:- Verify the account ID format is correct (e.g.,
account_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) - Ensure the account ID belongs to your CDP entity
- Verify the account ID exists by calling
GET /v2/accounts/{accountId}orGET /v2/accounts
- Malformed account ID
- Typo in the account ID
target_account_invalid
This error occurs when the target account specified in the transfer request is invalid or malformed. Steps to resolve:- Verify the account ID format is correct (e.g.,
account_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) - Ensure the account exists and can receive funds
- Verify the account ID exists by calling
GET /v2/accounts/{accountId}orGET /v2/accounts
- Malformed account ID
- Typo in the account ID
source_account_not_found
This error occurs when the source account specified in the transfer does not exist. Steps to resolve:- Verify the account ID exists by calling
GET /v2/accounts/{accountId}orGET /v2/accounts
target_account_not_found
This error occurs when the target account specified in the transfer does not exist. Steps to resolve:- Verify the account ID exists by calling
GET /v2/accounts/{accountId}orGET /v2/accounts
source_asset_not_supported
This error occurs when the asset specified in the transfer source is not supported for this transfer type. Steps to resolve:- Check the list of supported assets for the source account type
- Verify the asset symbol is correctly specified (e.g.,
usdc,usdt)
- Unsupported asset for the transfer route
- Incorrect asset symbol
target_asset_not_supported
This error occurs when the asset specified in the transfer target is not supported for this transfer type. Steps to resolve:- Check the list of supported assets for the target
- Verify the asset symbol is correctly specified (e.g.,
usdc,usdt) - Ensure the target can receive this asset type
- Asset not supported by the target
- Unsupported conversion between source and target assets
target_email_invalid
This error occurs when the email address specified as the transfer target is invalid. Steps to resolve:- Verify the email address format is valid (e.g.,
user@example.com) - Check for typos in the email address
- Ensure the email domain is valid
- Invalid email format
- Missing @ symbol or domain
- Typo in the email address
target_onchain_address_invalid
This error occurs when the onchain address specified as the transfer target is invalid for the specified network. Steps to resolve:- Ensure the network is supported for the transfer type
- Verify the address format matches the target network
- Ensure you haven’t mixed up addresses from different networks
- Network not supported for the transfer type
- Address format doesn’t match network
- Address from a different blockchain network
transfer_amount_invalid
This error occurs when the transfer amount is invalid. Steps to resolve:- Ensure the amount is a positive number and greater than $1 USD equivalent amount
- Verify the amount format is a valid decimal string (e.g.,
"100.50") - Check the number of decimal places for the asset
- Zero or negative amount
- Too many decimal places for the asset
- Amount below minimum threshold ($1 USD equivalent amount)
transfer_asset_not_supported
This error occurs when the asset specified for the transfer is not supported. Steps to resolve:- Check the list of supported assets for transfers
- Verify the asset symbol is correctly specified
- Ensure the asset is supported for the transfer route (source → target)
- Asset not supported for transfers
- Incorrect asset symbol
insufficient_balance
This error occurs when the source account does not have enough funds to complete the transfer including fees. Steps to resolve:- Check the source account balance
- Ensure the balance covers both the transfer amount and any fees
- Consider using
amountType: "source"to transfer the maximum available amount minus fees - Add funds to the source account if needed
- Transfer amount exceeds available balance
- Not accounting for transfer fees
- Pending transactions reducing available balance
metadata_too_many_entries
This error occurs when the transfer metadata contains more entries than allowed. Steps to resolve:- Reduce the number of metadata entries (maximum 10 allowed)
- Consolidate related data into fewer keys
- Store additional data externally and reference it with a single metadata entry
- Maximum entries: 10
metadata_key_too_long
This error occurs when a metadata key exceeds the maximum allowed length. Steps to resolve:- Shorten the metadata key to 40 characters or less
- Use abbreviations or shorter naming conventions
- Consider using a key-value structure where the value contains the longer identifier
- Maximum key length: 40 characters
metadata_value_too_long
This error occurs when a metadata value exceeds the maximum allowed length. Steps to resolve:- Shorten the metadata value to 500 characters or less
- Store longer data externally and reference it with a shorter identifier
- Consider compressing or encoding the data if appropriate
- Maximum value length: 500 characters
travel_rules_field_missing
This error occurs when required travel rule fields are missing from the transfer request. Steps to resolve:- Include the
travelRuleobject in your transfer request - Supply the required missing fields prompted by the error message
- Review the travel rule requirements for your jurisdiction
asset_mismatch
This error occurs when the assets specified in the transfer are incompatible or don’t match expected values. Steps to resolve:- Ensure the
assetfield matches either the source or target asset - Verify that the source and target assets are compatible for conversion (if different)
- Check that the asset symbols are correctly specified
- Transfer asset doesn’t match source or target
- Attempting an unsupported asset conversion
- Typo in asset symbols
HTTP 401
unauthorized
This error occurs when authentication fails. Steps to resolve:- Verify your CDP API credentials:
- Check that your API key is valid
- Check that your Wallet Secret is properly configured
- Validate JWT token:
- Not expired
- Properly signed
- Contains required claims
- Check request headers:
- Authorization header present
- X-Wallet-Auth header included when required
HTTP 403
forbidden
This error occurs when you don’t have permission to access the resource. Steps to resolve:- Verify your permissions to access the resource
- Ensure that you are the owner of the requested resource
HTTP 404
not_found
This error occurs when the resource specified in your request doesn’t exist or you don’t have access to it. Steps to resolve:- Verify the resource ID/address/account exists
- Check your permissions to access the resource
- Ensure you’re using the correct network/environment
- Confirm the resource hasn’t been deleted
- Mistyped addresses
- Accessing resources from the wrong CDP project
- Resource was deleted or hasn’t been created yet
HTTP 409
already_exists
This error occurs when trying to create a resource that already exists. Steps to resolve:- Check if the resource exists before creation
- Use GET endpoints to verify resource state
- Use unique identifiers/names for resources
HTTP 422
idempotency_error
This error occurs when an idempotency key is reused with different parameters. Steps to resolve:- Generate a new UUID v4 for each unique request
- Only reuse idempotency keys for exact request duplicates
- Track used keys within your application
HTTP 429
rate_limit_exceeded
This error occurs when you’ve exceeded the API rate limits. Steps to resolve:- Implement exponential backoff
- Cache responses where possible
- Wait for rate limit window to reset
HTTP 500
internal_server_error
This indicates an unexpected error that occurred on the CDP servers. Important: If you encounter this error, please note that your operation’s status should be treated as unknown by your application, as it could have been a success within the CDP back-end. Steps to resolve:- Retry your request after a short delay
- If persistent, contact CDP support with:
- Your correlation ID
- Timestamp of the error
- Request details
- Consider implementing retry logic with an exponential backoff
HTTP 502
bad_gateway
This error occurs when the CDP API is unable to connect to the backend service. Steps to resolve:- Retry your request after a short delay
- If persistent, contact CDP support with:
- The timestamp of the error
- Request details
- Consider implementing retry logic with an exponential backoff
HTTP 503
service_unavailable
This error occurs when the CDP API is temporarily unable to handle requests due to maintenance or high load. Steps to resolve:- Retry your request after a short delay
- If persistent, contact CDP support with:
- The timestamp of the error
- Request details
- Consider implementing retry logic with an exponential backoff
Network Errors
Network errors occur when there is a problem establishing or maintaining a connection to the CDP API at the network layer. These errors are distinct from API service errors - they indicate that your request never reached the CDP API or was blocked before it could be processed.Understanding Network Errors
When you encounter a network error via the CDP SDK, you’ll receive aNetworkError object with:
statusCode: Always 0 (indicating no HTTP response was received)errorType: Specific type of network errorerrorMessage: Human-readable descriptionnetworkDetails: Additional information including:code: Technical error codemessage: Original error messageretryable: Whether the operation should be retried
Types of Network Errors
1. IP Blocked (network_ip_blocked)
Your IP address has been blocked at the gateway level.
Common causes:
- Geographic restrictions.
- Rate limiting at infrastructure level.
- Security policies or DDoS protection.
- Corporate firewall/proxy restrictions.
- Verify you’re not accessing from a restricted region.
- Check if you’re behind a VPN or proxy that might be blocked.
- Contact CDP support on Discord if you believe this is in error.
- This error is not retryable.
2. Connection Failed (network_connection_failed)
Unable to establish a connection to the CDP API.
Common causes:
- CDP API is temporarily unavailable. Check the CDP Status Page for any ongoing issues.
- Network connectivity issues.
- Firewall blocking outbound HTTPS connections.
- Incorrect API endpoint configuration.
- Check your internet connection.
- Verify firewall settings allow HTTPS traffic to
api.cdp.coinbase.com. - Ensure you’re using the correct API endpoint.
- This error is retryable. Retry the request with exponential backoff.
3. Timeout (network_timeout)
The request took too long and was terminated.
Common causes:
- Network congestion.
- Slow internet connection.
- Increase timeout settings if consistently timing out.
- This error is retryable. Retry the request with exponential backoff.
4. DNS Failure (network_dns_failure)
Unable to resolve the CDP API domain name.
Common causes:
- DNS configuration issues.
- Network connectivity problems.
- DNS server unavailable.
- Incorrect API endpoint URL.
- Check your DNS settings.
- Verify network connectivity with
nslookup api.cdp.coinbase.com. - Try using a different DNS server (e.g., 8.8.8.8).
- Ensure the API URL is correct.
- This error is not retryable until DNS is fixed.
Handling Network Errors in Code
Best Practices
- Implement Retry Logic: For retryable errors, use exponential backoff:
- Log Network Errors: Always log network errors with full details for debugging.
- Monitor Patterns: Track network errors to identify patterns (time of day, specific operations, etc.).
- Have Fallback Strategies: Consider implementing fallback mechanisms for critical operations.
Troubleshooting Checklist
- Verify internet connectivity.
- Check if you’re behind a proxy or VPN.
- Ensure firewall allows HTTPS traffic to
api.cdp.coinbase.com. - Verify you’re not in a restricted geographic region.
- Check DNS resolution:
nslookup api.cdp.coinbase.com. - Test with
curlor similar:curl -I https://api.cdp.coinbase.com/platform. - Check if the issue is consistent or intermittent.
Getting Help
If you continue to experience network errors after following this guide:-
Collect error details including:
- Full error message and type.
- Network details from the error.
- Time and frequency of occurrence.
- Your network configuration (proxy, VPN, region).
- Contact CDP support on Discord with this information.
- Check the CDP Status Page for any ongoing issues.