Limits Upgrade is only available for Guest Checkout (Headless Onramp) users. Authenticated Coinbase users have separate limit management through their Coinbase account.
Default and upgraded limits
Once approved, the upgrade is permanent. Users never need to re-verify.
Integration flow
1. Check limits and upgrade eligibility
Call POST /v2/onramp/limits before or during the onramp flow to retrieve the user’s current limits and determine whether an upgrade is available.GUEST_CHECKOUT_APPLE_PAY and GUEST_CHECKOUT_GOOGLE_PAY are supported and yield identical limits.
Response — upgrade available:
limitUpgradeOptions is absent from the response, the user does not yet meet the eligibility criteria. This is not an error — limits is always present and accurate.
Upgrade status values
limitUpgradeOptions is a single-element array. Check limitUpgradeOptions[0].status to determine what to do next:
2. Submit identity fields
When status isunrequested or resubmit, collect the required fields and submit them to POST /v2/onramp/limits/upgrade. The endpoint returns HTTP 202 immediately — processing is asynchronous.
/limits — the status immediately advances to pending.
Field validation
Validate client-side before submitting to avoid unnecessary round trips. The API rejects invalid dates (e.g., February 30) and non-numeric SSN values.
3. Poll until terminal status
Poll POST /v2/onramp/limits after the 202 response untillimitUpgradeOptions[0].status reaches a terminal state.
- Start polling immediately after receiving the 202 response
- Poll every 1–2 seconds — verification typically completes within ~3 seconds
- Set a timeout (e.g., 30 seconds) and show a “still processing” message if it expires
- Stop polling once status is
active,inactive, orresubmit
Resubmission and rate limits
If status returns toresubmit, Coinbase reviewed the submission and couldn’t verify the information. fields is re-populated — collect the corrected fields and call /limits/upgrade again. The flow is identical to the initial submission.
Users are limited to 5 upgrade submissions over a rolling 5-day window. A submission only counts when it enters Coinbase’s verification pipeline — meaning the status transitions to pending. Input validation errors, transient failures, and other non-verification errors do not count against this limit.
Calling /limits/upgrade when status is already pending or active is safe — the endpoint returns 202 and nothing changes.
UI recommendations
For the
inactive status, do not expose the underlying reason and do not show the upgrade prompt again.
Input field guidance:
- SSN: Use a masked input (
****). Validate exactly 4 numeric digits client-side. - Date of birth: Use a date picker or separate day/month/year fields. Validate that the date is a real calendar date.
Error reference
POST /v2/onramp/limits errors
POST /v2/onramp/limits/upgrade errors
Error response shape:
correlationId when contacting Coinbase support.
Sandbox testing
Use phone numbers prefixed with+0 to test all scenarios without real verification. Only the last digit determines the scenario.
POST /v2/onramp/limits sandbox responses
POST /v2/onramp/limits/upgrade sandbox responses
In sandbox,
ssnLast4 and dateOfBirth values are not validated — pass any well-formed values.
POST /v2/onramp/limits
Full API reference for checking user limits.
POST /v2/onramp/limits/upgrade
Full API reference for submitting an upgrade request.