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 cpVerificationStatusUpdated webhook. 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

ScenarioDescription
VerifiedCustomer profile has been successfully verified.
RejectedCustomer profile has been rejected. Check isRetryable and verificationRejectionSummary.

Status values

StatusDescription
pendingCustomer profile submitted, verification in progress.
verifiedCustomer profile successfully verified.
rejectedCustomer 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

FieldScopeTypeDescription
data.idCommon fieldsStringUnique customer profile ID.
data.typeCommon fieldsStringAlways customer_profile.
data.attributes.customerNameCommon fieldsStringCustomer's full name (personal) or company name (business).
data.attributes.merchantRefCommon fieldsStringMerchant's own reference ID. Only present if provided during creation.
data.attributes.registrationTypeCommon fieldsStringpersonal or business.
data.attributes.registrationIdCommon fieldsStringRegistration/identity number (e.g., NRIC, UEN).
data.attributes.registrationIdTypeCommon fieldsStringType of ID (e.g., identity_card, passport, business_reg_no).
data.attributes.registrationIdCountryCommon fieldsStringCountry that issued the registration ID (ISO alpha-2).
data.attributes.verificationStatusCommon fieldsStringpending, verified, or rejected.
data.attributes.addressCommon fieldsObjectCustomer address with street, city, state, country, postalCode.
data.attributes.createdAtCommon fieldsStringISO 8601 timestamp when the profile was created.
data.attributes.updatedAtCommon fieldsStringISO 8601 timestamp when the profile was last updated.
data.attributes.dateOfBirthPersonal onlyStringDate of birth (YYYY-MM-DD).
data.attributes.genderPersonal onlyStringGender (e.g., MALE, FEMALE).
data.attributes.nationalityPersonal onlyStringISO alpha-2 country code.
data.attributes.emailPersonal onlyStringCustomer email address.
data.attributes.phoneNoPersonal onlyStringCustomer phone number. Only present if provided.
data.attributes.tradingNameBusiness onlyStringBusiness trading name (if different from registered name).
data.attributes.placeOfBizBusiness onlyStringPlace of business.
data.attributes.placeOfBizCountryBusiness onlyStringCountry of business operations (ISO alpha-2).
data.attributes.countryOfIncorporationBusiness onlyStringCountry of incorporation (ISO alpha-2).
data.attributes.dateOfIncorporationBusiness onlyStringDate of incorporation (YYYY-MM-DD).

Field reference - Rejection-specific fields

These fields are only present when verificationStatus is rejected.

FieldTypeDescription
data.attributes.isRetryableBooleanWhether the profile can be resubmitted with corrections.
data.attributes.verificationRejectionSummaryStringHuman-readable summary of why the profile was rejected.
data.attributes.riskRatingObjectRisk rating details. See below.

riskRating object

FieldTypeDescription
statusStringAlways "rejected" in rejection callbacks.
rejection_reasonArray of stringsList of rejection reasons.
Note: uses snake_case (not camelCase).
rejectionsArray of objects(Optional) Detailed rejection entries. May not always be present.

rejections[] items (when present)

FieldTypeDescription
codeStringRejection code.
reasonStringShort rejection reason label.
messageStringHuman-readable explanation.

Did this page help you?