RFI Callback
StraitsX sends a cpRfiStatusUpdated callback to your registered URL when a Request for Information (RFI) status changes during customer profile onboarding.
RFIs are questions that StraitsX compliance requires your customer to answer before verification can proceed.
When this callback fires
| Scenario | Description |
|---|---|
| RFI sent | Compliance has sent questions that the customer must answer. |
| Question status changed | A question's status changes (e.g., accepted, rejected). |
| RFI completed | All questions have been answered and accepted. |
Payload structure
{
"data": {
"id": "rfi_request_0b3k17mmb63gcx55",
"type": "rfiRequest",
"attributes": {
"customerProfileId": "customer_profile_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"activeRfiRequest": {
"createdAt": "2026-05-14T03:11:13Z",
"status": "sent",
"rfiQuestions": [
{
"id": 1001,
"question": "Please provide an indication of your estimated total wealth",
"optional": false,
"replyType": "CHECKBOX",
"questionStatus": "pending",
"requiresAction": true,
"checkboxOptions": [
"<S$100,000",
"S$100,000 - S$250,000",
"S$250,001 - S$500,000",
"S$500,000 - S$1,000,000",
">S$1,000,000"
]
},
{
"id": 1002,
"question": "Please declare your source(s) of wealth",
"optional": false,
"replyType": "TEXT",
"questionStatus": "pending",
"requiresAction": true
},
{
"id": 1003,
"question": "Please upload relevant supporting documents to substantiate your source(s) of wealth",
"optional": false,
"replyType": "DOC",
"questionStatus": "pending",
"requiresAction": true
}
]
},
"rfiProgressSummary": {
"expiryDate": "2026-05-28T16:59:59Z",
"daysUntilExpiry": 14,
"daysExpired": 0,
"completionPercentage": 0,
"totalQuestions": 3,
"acceptedQuestions": 0,
"pendingQuestions": 3,
"rejectedQuestions": 0
}
}
}
}Field reference
Top-level fields
| Field | Type | Description |
|---|---|---|
data.id | String | RFI request ID. |
data.type | String | Always rfiRequest. |
data.attributes.customerProfileId | String | Customer profile this RFI belongs to. |
data.attributes.activeRfiRequest | Object | Current active RFI details, including status and questions. |
data.attributes.rfiProgressSummary | Object | Summary of the customer's progress in completing the RFI. |
activeRfiRequest object
activeRfiRequest object| Field | Type | Description |
|---|---|---|
status | String | Overall RFI status (e.g., sent). |
createdAt | String | ISO 8601 timestamp when the RFI was created. |
rfiQuestions | Array of objects | List of questions the customer must answer. |
rfiQuestions[] items
rfiQuestions[] items| Field | Scope | Type | Description |
|---|---|---|---|
id | Common fields | Integer | Question ID. |
question | Common fields | String | Question text to display to the customer. |
optional | Common fields | Boolean | Whether the question is optional. |
replyType | Common fields | String | Expected reply format: TEXT, DOC, or CHECKBOX. |
questionStatus | Common fields | String | Question status (e.g., pending, accepted, rejected). |
requiresAction | Common fields | Boolean | Whether the customer needs to take action on this question. |
userReply | Common fields | String | Customer's submitted reply. Omitted if not yet replied. |
checkboxOptions | CHECKBOX only | Array of strings | Available options to select from. Only present when replyType is CHECKBOX. |
rejectionReason | Rejected only | String | Reason the answer was rejected. Only present when questionStatus is rejected. |
rfiProgressSummary object
rfiProgressSummary object| Field | Type | Description |
|---|---|---|
expiryDate | String | ISO 8601 deadline for RFI completion. |
daysUntilExpiry | Integer | Days remaining before expiry. |
daysExpired | Integer | Days past expiry (0 if not expired). |
completionPercentage | Integer | Percentage of questions accepted (0–100). |
totalQuestions | Integer | Total number of questions. |
acceptedQuestions | Integer | Questions accepted by compliance. |
pendingQuestions | Integer | Questions awaiting response or review. |
rejectedQuestions | Integer | Questions rejected (customer needs to resubmit). |
Updated 2 months ago
Did this page help you?

