Correct the personal data of a cardholder that has not been approved yet and — when it is in `submission_failed` — resubmit it in one call. Use this when the provider rejected the submission because of the data itself (a mistyped ID number, a phone already used by another cardholder, a non-ASCII address). The `description` field of the cardholder carries the reason. Only the fields present in the body are changed; everything else is kept. The values are written to the linked user's `meta` — the source of truth the submission rebuilds from — so a later `POST /v1/users/{id}/cardholder` sees the same corrected data. Allowed while the cardholder is in `submission_failed`, `reject`, `rejected_by_admin` or `pending_review`. An approved cardholder (`pass_audit`) or one under review at the provider cannot be edited. For `submission_failed` the submission workflow is started again right away (same as `POST /v1/cardholders/{id}/retry`) and the response comes back with status `wait_audit`; the provider's decision arrives through the usual cardholder webhook. In the other statuses the data is stored and the cardholder keeps its status — submit it with `POST /v1/cardholders/{id}/submit` once it is reviewed. KYC documents are not part of this call: re-upload them with `POST /v1/users/{id}/kyc/documents` (the newest non-rejected document per slot is used) before resubmitting.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id |
path | string |
yes |
Request body
application/json
· CardholderUpdateRequest
· required
| Field | Type | Required | Description |
|---|---|---|---|
accountPurpose |
string |
no | |
address |
string |
no | Letters, digits, hyphens and spaces only (no commas or other punctuation); max 40 chars; 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, HK_HKID or GOVERNMENT_ISSUED_ID_CARD. |
lastName |
string |
no | Same rules as firstName. |
nationality |
string |
no | Country code, see /v1/cardholders/regions. |
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. |
town |
string |
no | City code, see /v1/cardholders/cities. |
Responses
| Status | Body | Description |
|---|---|---|
200 |
CardholderResponse |
Cardholder updated (and resubmitted when it was `submission_failed`). |
400 |
Error |
Invalid or empty body, or the resulting data fails validation. |
404 |
Error |
Cardholder not found. |
409 |
Error |
Cardholder is in a status that cannot be edited, or has no linked user. |
Specification
This page is generated from the OpenAPI specification, which remains the authoritative machine-readable source.