Get customer requirements
Changed onPreview the requirements a hypothetical customer of the given customerType and jurisdiction would need to satisfy to enable the requested capabilities, without creating a customer record. Partner onboarding UIs can use this to render the collection flow before any customer state exists.
Today this endpoint only previews the Terms of Service requirement: the response's RequirementsMap will only ever contain a tos key. Other requirement families (PII / CDD inputs) are not yet available through this endpoint; use POST /v2/customers or PUT /v2/customers/{customerId} to discover those via Customer.requirements.
Only customerType: individual customers resident in or citizens of the US are currently supported; every other combination returns 400 invalid_request.
Request
- Base URL: https://api.cdp.coinbase.com/platform
- URL: https://api.cdp.coinbase.com/platform/v2/customers/requirements
- Auth: HTTP bearer
Query parameters
The type of the customer. Required on create; accepted but ignored on update.
The type of the hypothetical customer.
The capabilities the hypothetical customer would request. Repeat the parameter to specify multiple capabilities, for example capabilities=custodyCrypto&capabilities=transferCrypto.
[ "custodyCrypto" ]
An ISO 3166-1 alpha-2 country code.
The hypothetical customer's country of residence. At least one of countryCode or citizenship is required. When both are present, countryCode takes precedence.
An ISO 3166-1 alpha-2 country code.
The hypothetical customer's citizenship. At least one of countryCode or citizenship is required.
Response
Successfully previewed requirements.
Map of requirements to be submitted. Each key is the field name (e.g., "ssnLast4"), with values to describe its state. Requirements are only shown for requested capabilities. When a requirement is verified, it disappears from this map.
For the tos key, each entry in tosVersions[] has its own optional deadline. The requirement-level deadline is an aggregate of those rows: the earliest set deadline among unaccepted versions, not a separate clock. A version with no deadline requires immediate acceptance but keeps the aggregate status due. A future deadline is also due and represents non-blocking grace. The aggregate status is past_due only when at least one unaccepted version has a deadline set in the past. Do not infer status or blocking behavior from omission of the aggregate deadline.
Example response
{
"firstName": {
"status": "due",
"impact": [
"custodyCrypto",
"transferCrypto"
]
},
"fullSsn": {
"status": "rejected",
"impact": [
"custodyCrypto"
]
},
"ssnLast4": {
"status": "pending",
"impact": [
"custodyCrypto"
]
},
"sourceOfFunds": {
"status": "due"
},
"citizenship": {
"status": "due"
},
"tos": {
"status": "due",
"impact": [
"transferFiat"
],
"tosVersions": [
{
"versionId": "us_individual_2026-05-29",
"languages": [
"en"
],
"url": "https://www.coinbase.com/legal/user-agreements-third-party-provider"
}
]
},
"taxAttestation": {
"status": "due",
"impact": [
"transferFiat"
],
"taxForms": [
"us_w9"
]
}
}Changes
- warning
added the new
incompatible_event_typesenum value to theresponse property for the response status - warning
added the new
incompatible_event_typesenum value to theresponse property for the response status - warning
added the new
incompatible_event_typesenum value to theresponse property for the response status - warning
added the new
incompatible_event_typesenum value to theresponse property for the response status - warning
added the new
incompatible_event_typesenum value to theresponse property for the response status - warning
added the new
invalid_webhook_headersenum value to theresponse property for the response status - warning
added the new
invalid_webhook_headersenum value to theresponse property for the response status - warning
added the new
invalid_webhook_headersenum value to theresponse property for the response status - warning
added the new
invalid_webhook_headersenum value to theresponse property for the response status - warning
added the new
invalid_webhook_headersenum value to theresponse property for the response status - warning
added the new
invalid_webhook_urlenum value to theresponse property for the response status - warning
added the new
invalid_webhook_urlenum value to theresponse property for the response status - warning
added the new
invalid_webhook_urlenum value to theresponse property for the response status - warning
added the new
invalid_webhook_urlenum value to theresponse property for the response status - warning
added the new
invalid_webhook_urlenum value to theresponse property for the response status - warning
added the new
mandate_action_pendingenum value to theresponse property for the response status - warning
added the new
mandate_action_pendingenum value to theresponse property for the response status - warning
added the new
mandate_action_pendingenum value to theresponse property for the response status - warning
added the new
mandate_action_pendingenum value to theresponse property for the response status - warning
added the new
mandate_action_pendingenum value to theresponse property for the response status - warning
added the new
mandate_canceledenum value to theresponse property for the response status - warning
added the new
mandate_canceledenum value to theresponse property for the response status - warning
added the new
mandate_canceledenum value to theresponse property for the response status - warning
added the new
mandate_canceledenum value to theresponse property for the response status - warning
added the new
mandate_canceledenum value to theresponse property for the response status - warning
added the new
mandate_expiredenum value to theresponse property for the response status - warning
added the new
mandate_expiredenum value to theresponse property for the response status - warning
added the new
mandate_expiredenum value to theresponse property for the response status - warning
added the new
mandate_expiredenum value to theresponse property for the response status - warning
added the new
mandate_expiredenum value to theresponse property for the response status - warning
added the new
mandate_invalid_statusenum value to theresponse property for the response status - warning
added the new
mandate_invalid_statusenum value to theresponse property for the response status - warning
added the new
mandate_invalid_statusenum value to theresponse property for the response status - warning
added the new
mandate_invalid_statusenum value to theresponse property for the response status - warning
added the new
mandate_invalid_statusenum value to theresponse property for the response status - warning
added the new
mandate_policy_violationenum value to theresponse property for the response status - warning
added the new
mandate_policy_violationenum value to theresponse property for the response status - warning
added the new
mandate_policy_violationenum value to theresponse property for the response status - warning
added the new
mandate_policy_violationenum value to theresponse property for the response status - warning
added the new
mandate_policy_violationenum value to theresponse property for the response status - warning
added the new
mandate_revokedenum value to theresponse property for the response status - warning
added the new
mandate_revokedenum value to theresponse property for the response status - warning
added the new
mandate_revokedenum value to theresponse property for the response status - warning
added the new
mandate_revokedenum value to theresponse property for the response status - warning
added the new
mandate_revokedenum value to theresponse property for the response status - warning
added the new
subscription_limit_exceededenum value to theresponse property for the response status - warning
added the new
subscription_limit_exceededenum value to theresponse property for the response status - warning
added the new
subscription_limit_exceededenum value to theresponse property for the response status - warning
added the new
subscription_limit_exceededenum value to theresponse property for the response status - warning
added the new
subscription_limit_exceededenum value to theresponse property for the response status
- warning
- info
endpoint added
- info