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

ScenarioDescription
RFI sentCompliance has sent questions that the customer must answer.
Question status changedA question's status changes (e.g., accepted, rejected).
RFI completedAll 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

FieldTypeDescription
data.idStringRFI request ID.
data.typeStringAlways rfiRequest.
data.attributes.customerProfileIdStringCustomer profile this RFI belongs to.
data.attributes.activeRfiRequestObjectCurrent active RFI details, including status and questions.
data.attributes.rfiProgressSummaryObjectSummary of the customer's progress in completing the RFI.

activeRfiRequest object

FieldTypeDescription
statusStringOverall RFI status (e.g., sent).
createdAtStringISO 8601 timestamp when the RFI was created.
rfiQuestionsArray of objectsList of questions the customer must answer.

rfiQuestions[] items

FieldScopeTypeDescription
idCommon fieldsIntegerQuestion ID.
questionCommon fieldsStringQuestion text to display to the customer.
optionalCommon fieldsBooleanWhether the question is optional.
replyTypeCommon fieldsStringExpected reply format: TEXT, DOC, or CHECKBOX.
questionStatusCommon fieldsStringQuestion status (e.g., pending, accepted, rejected).
requiresActionCommon fieldsBooleanWhether the customer needs to take action on this question.
userReplyCommon fieldsStringCustomer's submitted reply. Omitted if not yet replied.
checkboxOptionsCHECKBOX onlyArray of stringsAvailable options to select from. Only present when replyType is CHECKBOX.
rejectionReasonRejected onlyStringReason the answer was rejected. Only present when questionStatus is rejected.

rfiProgressSummary object

FieldTypeDescription
expiryDateStringISO 8601 deadline for RFI completion.
daysUntilExpiryIntegerDays remaining before expiry.
daysExpiredIntegerDays past expiry (0 if not expired).
completionPercentageIntegerPercentage of questions accepted (0–100).
totalQuestionsIntegerTotal number of questions.
acceptedQuestionsIntegerQuestions accepted by compliance.
pendingQuestionsIntegerQuestions awaiting response or review.
rejectedQuestionsIntegerQuestions rejected (customer needs to resubmit).

Did this page help you?