Checks a B2C cardholder's personal data against the rules
POST /v1/users/{id}/cardholder applies, without storing anything or
sending anything to the card provider. Call it when your customer
submits the form, so they can correct a field at once instead of
waiting for a refused cardholder.
The body takes the user meta fields of a B2C cardholder (see
POST /v1/users/{id}/cardholder) and the ssn. The values are
normalized first, as on create: the post code loses its spaces, the
address is transliterated to English letters, the nationality is
upper-cased, a phone code without + is accepted. The country and
town are checked against the live lists (/v1/cardholders/regions,
/v1/cardholders/cities); when those cannot be read, that check is
skipped, townChecked is false, and valid can still be true
although the create, which needs the lists, would then refuse.
The answer is always 200 for a readable body: valid says whether
the values pass the create's checks, and problems lists each refused
field with the reason, one entry per field.
It checks the values only, not the user they are meant for: the body
names no user. So valid: true does not promise the create succeeds.
The create still refuses when the user's KYC is not completed, or when
the email is already held by another cardholder on that card type. It
also works on a cardholder the user already has on that card type
(returns it, or submits it again) instead of creating one, and then
asks for no SSN when one is on file, where this always asks a U.S.
national for one.
Request body
application/json
· CardholderUpdateRequest
· required
| Field | Type | Required | Description |
|---|---|---|---|
accountPurpose |
string |
no | |
address |
string |
no | English letters, digits, hyphens and spaces only (no commas or other punctuation); max 40 chars. Accented Latin and Cyrillic letters are transliterated to ASCII. |
annualSalary |
string |
no | |
birthday |
string |
no | YYYY-MM-DD. |
country |
string |
no | Country code, see /v1/cardholders/regions. |
email |
string |
no | Max 50 chars. |
expectedMonthlyVolume |
string |
no | |
firstName |
string |
no | Latin letters, space, hyphen, apostrophe and period only; max 40 chars. TEST/MOCK/SANDBOX are rejected. |
gender |
string |
no | M or F (B2C). |
idExpiryDate |
string |
no | YYYY-MM-DD. Must not be earlier than idIssueDate. |
idIssueDate |
string |
no | YYYY-MM-DD. Required for B2C. |
idNo |
string |
no | |
idType |
string |
no | PASSPORT, DLN or GOVERNMENT_ISSUED_ID_CARD; PASSPORT only for a Hong Kong national. |
lastName |
string |
no | Same rules as firstName. |
nationality |
string |
no | Two-letter ISO 3166-1 country code (US, GB), see /v1/cardholders/regions. Stored upper-case. |
occupation |
string |
no | Occupation code, see /v1/cardholders/occupations. |
phone |
string |
no | Digits only, 7-15 digits, no country code; must be a mobile number. |
phoneCode |
string |
no | "+" and 1-4 digits, e.g. "+372". |
postCode |
string |
no | Letters and digits only, max 15 chars; spaces are stripped. |
ssn |
string |
no | U.S. Social Security number (nine digits; hyphens and spaces are
ignored), for a B2C cardholder whose nationality is |
town |
string |
no | City code, see /v1/cardholders/cities. |
Responses
| Status | Body | Description |
|---|---|---|
200 |
CardholderValidateResponse |
The verdict. |
400 |
Error |
The body is not a JSON object. |
Specification
This page is generated from the OpenAPI specification, which remains the authoritative machine-readable source.