Customer Profile Callbacks (Regular CP)
StraitsX sends a cpVerificationStatusUpdated callback to your registered URL when a Regular Customer Profile verification status changes.
Both Regular CP and CP+ verification callbacks fire on the same
cpVerificationStatusUpdatedwebhook. The payload structure differs based on the profile's tier. This page covers Regular CP (Tier 1) only. For CP+ payloads, see Customer Profile+ Callbacks.
When this callback fires
| Scenario | Description |
|---|---|
| Verified | Customer profile has been successfully verified. |
| Rejected | Customer profile has been rejected. Check isRetryable and verificationRejectionSummary. |
Status values
| Status | Description |
|---|---|
pending | Customer profile submitted, verification in progress. |
verified | Customer profile successfully verified. |
rejected | Customer profile rejected. |
Payload structure
{
"data": {
"id": "customer_profile_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "customer_profile",
"attributes": {
"customerName": "Jane Doe",
"registrationType": "personal",
"registrationId": "S1234567A",
"verificationStatus": "verified",
"dateOfBirth": "1990-01-15",
"gender": "FEMALE",
"nationality": "SG",
"email": "[email protected]",
"address": {
"street": "123 Orchard Road",
"city": "Singapore",
"country": "SG",
"postalCode": "238888"
},
"registrationIdCountry": "SG",
"registrationIdType": "identity_card",
"createdAt": "2026-05-14T08:16:53Z",
"updatedAt": "2026-05-14T08:17:55Z"
}
}
}{
"data": {
"id": "customer_profile_8bcef957-74a5-4c07-bcaa-0b377c02ca13",
"type": "customer_profile",
"attributes": {
"customerName": "Xfers Pte. Ltd.",
"tradingName": "Xfers",
"registrationType": "business",
"registrationIdType": "business_reg_no",
"registrationIdCountry": "SG",
"registrationId": "201411660R",
"address": {
"street": "10 Albert Street",
"city": "Singapore",
"postalCode": "000000",
"state": "Singapore",
"country": "SG"
},
"placeOfBiz": "10 Albert Street, 000000 Singapore",
"placeOfBizCountry": "SG",
"countryOfIncorporation": "SG",
"dateOfIncorporation": "2020-11-14",
"verificationStatus": "verified",
"createdAt": "2025-06-13T04:24:39Z",
"updatedAt": "2025-06-13T04:30:12Z"
}
}
}{
"data": {
"id": "customer_profile_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "customer_profile",
"attributes": {
"customerName": "Jane Doe",
"isRetryable": true,
"verificationRejectionSummary": "Rejected due to StraitsX policy",
"registrationType": "personal",
"registrationId": "S1234567A",
"verificationStatus": "rejected",
"dateOfBirth": "1990-01-15",
"gender": "FEMALE",
"nationality": "SG",
"email": "[email protected]",
"address": {
"street": "123 Orchard Road",
"city": "Singapore",
"country": "SG",
"postalCode": "238888"
},
"registrationIdCountry": "SG",
"registrationIdType": "identity_card",
"createdAt": "2026-05-14T08:16:53Z",
"updatedAt": "2026-05-14T08:20:00Z",
"riskRating": {
"status": "rejected",
"rejection_reason": ["Rejected due to StraitsX policy"]
}
}
}
}Field reference - Regular CP fields
| Field | Scope | Type | Description |
|---|---|---|---|
data.id | Common fields | String | Unique customer profile ID. |
data.type | Common fields | String | Always customer_profile. |
data.attributes.customerName | Common fields | String | Customer's full name (personal) or company name (business). |
data.attributes.merchantRef | Common fields | String | Merchant's own reference ID. Only present if provided during creation. |
data.attributes.registrationType | Common fields | String | personal or business. |
data.attributes.registrationId | Common fields | String | Registration/identity number (e.g., NRIC, UEN). |
data.attributes.registrationIdType | Common fields | String | Type of ID (e.g., identity_card, passport, business_reg_no). |
data.attributes.registrationIdCountry | Common fields | String | Country that issued the registration ID (ISO alpha-2). |
data.attributes.verificationStatus | Common fields | String | pending, verified, or rejected. |
data.attributes.address | Common fields | Object | Customer address with street, city, state, country, postalCode. |
data.attributes.createdAt | Common fields | String | ISO 8601 timestamp when the profile was created. |
data.attributes.updatedAt | Common fields | String | ISO 8601 timestamp when the profile was last updated. |
data.attributes.dateOfBirth | Personal only | String | Date of birth (YYYY-MM-DD). |
data.attributes.gender | Personal only | String | Gender (e.g., MALE, FEMALE). |
data.attributes.nationality | Personal only | String | ISO alpha-2 country code. |
data.attributes.email | Personal only | String | Customer email address. |
data.attributes.phoneNo | Personal only | String | Customer phone number. Only present if provided. |
data.attributes.tradingName | Business only | String | Business trading name (if different from registered name). |
data.attributes.placeOfBiz | Business only | String | Place of business. |
data.attributes.placeOfBizCountry | Business only | String | Country of business operations (ISO alpha-2). |
data.attributes.countryOfIncorporation | Business only | String | Country of incorporation (ISO alpha-2). |
data.attributes.dateOfIncorporation | Business only | String | Date of incorporation (YYYY-MM-DD). |
Field reference - Rejection-specific fields
These fields are only present when verificationStatus is rejected.
| Field | Type | Description |
|---|---|---|
data.attributes.isRetryable | Boolean | Whether the profile can be resubmitted with corrections. |
data.attributes.verificationRejectionSummary | String | Human-readable summary of why the profile was rejected. |
data.attributes.riskRating | Object | Risk rating details. See below. |
riskRating object
riskRating object| Field | Type | Description |
|---|---|---|
status | String | Always "rejected" in rejection callbacks. |
rejection_reason | Array of strings | List of rejection reasons. Note: uses snake_case (not camelCase). |
rejections | Array of objects | (Optional) Detailed rejection entries. May not always be present. |
rejections[] items (when present)
rejections[] items (when present)| Field | Type | Description |
|---|---|---|
code | String | Rejection code. |
reason | String | Short rejection reason label. |
message | String | Human-readable explanation. |
Updated 2 months ago
Did this page help you?

