Customers

Get customer requirements

Changed on

Preview 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.

get/v2/customers/requirements

Request

  • Base URL: https://api.cdp.coinbase.com/platform
  • URL: https://api.cdp.coinbase.com/platform/v2/customers/requirements
  • Auth: HTTP bearer

Query parameters

customerType'individual' required

The type of the customer. Required on create; accepted but ignored on update.

Example:individual

The type of the hypothetical customer.

capabilitiesCapabilityName[] required

The capabilities the hypothetical customer would request. Repeat the parameter to specify multiple capabilities, for example capabilities=custodyCrypto&capabilities=transferCrypto.

[
  "custodyCrypto"
]
countryCodestring

An ISO 3166-1 alpha-2 country code.

Example:US

The hypothetical customer's country of residence. At least one of countryCode or citizenship is required. When both are present, countryCode takes precedence.

citizenshipstring

An ISO 3166-1 alpha-2 country code.

Example:US

The hypothetical customer's citizenship. At least one of countryCode or citizenship is required.

Response

Successfully previewed requirements.

RequirementsMap required

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_types enum value to the response property for the response status

    • warning

      added the new incompatible_event_types enum value to the response property for the response status

    • warning

      added the new incompatible_event_types enum value to the response property for the response status

    • warning

      added the new incompatible_event_types enum value to the response property for the response status

    • warning

      added the new incompatible_event_types enum value to the response property for the response status

    • warning

      added the new invalid_webhook_headers enum value to the response property for the response status

    • warning

      added the new invalid_webhook_headers enum value to the response property for the response status

    • warning

      added the new invalid_webhook_headers enum value to the response property for the response status

    • warning

      added the new invalid_webhook_headers enum value to the response property for the response status

    • warning

      added the new invalid_webhook_headers enum value to the response property for the response status

    • warning

      added the new invalid_webhook_url enum value to the response property for the response status

    • warning

      added the new invalid_webhook_url enum value to the response property for the response status

    • warning

      added the new invalid_webhook_url enum value to the response property for the response status

    • warning

      added the new invalid_webhook_url enum value to the response property for the response status

    • warning

      added the new invalid_webhook_url enum value to the response property for the response status

    • warning

      added the new mandate_action_pending enum value to the response property for the response status

    • warning

      added the new mandate_action_pending enum value to the response property for the response status

    • warning

      added the new mandate_action_pending enum value to the response property for the response status

    • warning

      added the new mandate_action_pending enum value to the response property for the response status

    • warning

      added the new mandate_action_pending enum value to the response property for the response status

    • warning

      added the new mandate_canceled enum value to the response property for the response status

    • warning

      added the new mandate_canceled enum value to the response property for the response status

    • warning

      added the new mandate_canceled enum value to the response property for the response status

    • warning

      added the new mandate_canceled enum value to the response property for the response status

    • warning

      added the new mandate_canceled enum value to the response property for the response status

    • warning

      added the new mandate_expired enum value to the response property for the response status

    • warning

      added the new mandate_expired enum value to the response property for the response status

    • warning

      added the new mandate_expired enum value to the response property for the response status

    • warning

      added the new mandate_expired enum value to the response property for the response status

    • warning

      added the new mandate_expired enum value to the response property for the response status

    • warning

      added the new mandate_invalid_status enum value to the response property for the response status

    • warning

      added the new mandate_invalid_status enum value to the response property for the response status

    • warning

      added the new mandate_invalid_status enum value to the response property for the response status

    • warning

      added the new mandate_invalid_status enum value to the response property for the response status

    • warning

      added the new mandate_invalid_status enum value to the response property for the response status

    • warning

      added the new mandate_policy_violation enum value to the response property for the response status

    • warning

      added the new mandate_policy_violation enum value to the response property for the response status

    • warning

      added the new mandate_policy_violation enum value to the response property for the response status

    • warning

      added the new mandate_policy_violation enum value to the response property for the response status

    • warning

      added the new mandate_policy_violation enum value to the response property for the response status

    • warning

      added the new mandate_revoked enum value to the response property for the response status

    • warning

      added the new mandate_revoked enum value to the response property for the response status

    • warning

      added the new mandate_revoked enum value to the response property for the response status

    • warning

      added the new mandate_revoked enum value to the response property for the response status

    • warning

      added the new mandate_revoked enum value to the response property for the response status

    • warning

      added the new subscription_limit_exceeded enum value to the response property for the response status

    • warning

      added the new subscription_limit_exceeded enum value to the response property for the response status

    • warning

      added the new subscription_limit_exceeded enum value to the response property for the response status

    • warning

      added the new subscription_limit_exceeded enum value to the response property for the response status

    • warning

      added the new subscription_limit_exceeded enum value to the response property for the response status

    • info

      endpoint added