Requests for information (RFIs)

Manage transfer, applicant, and counterparty requests for information through linked submissions.

Handle transfer requests for information (RFIs) when a transfer moves to action_required, then provide the information and documents required for review.

Detect an RFI

Subscribe to both transfer.status_changed and information_request.updated webhook events.

{
  "url": "https://example.com/webhooks/due",
  "events": ["transfer.status_changed", "information_request.updated"],
  "description": "Transfer and information-request updates"
}

A transfer.status_changed event with data.status set to action_required indicates that the transfer requires action. Use data.id as the transfer ID, then retrieve its information requests.

{
  "id": "wh_evt_xxx",
  "type": "transfer.status_changed",
  "data": {
    "id": "tf_xxx",
    "ownerId": "acct_xxx",
    "status": "action_required"
  },
  "occurredAt": "2025-09-22T12:00:00Z",
  "attemptedAt": "2025-09-22T12:00:00Z"
}

The information_request.updated event notifies you when an information request changes. Handle this event to refresh the request in your system and determine whether further action is required.

Retrieve the RFI and its submission

Use either endpoint to find the information request you need to manage.

EndpointUse it when
GET /v1/information_requestsYou need to list all RFIs available to an account. Include Due-Account-Id to filter the list by account.
GET /v1/transfers/{id}/information_requestsYou received a transfer.status_changed event and need the RFI associated with that transfer.

List RFIs for an account:

curl "https://api.due.network/v1/information_requests" \
  -H "Authorization: Bearer <token>" \
  -H "Due-Account-Id: acct_xxx"

Retrieve the RFI associated with a transfer. Replace tf_xxx with data.id from the transfer.status_changed event:

curl "https://api.due.network/v1/transfers/tf_xxx/information_requests" \
  -H "Authorization: Bearer <token>" \
  -H "Due-Account-Id: acct_xxx"

The returned RFI includes a submissionId along with the submission itself. Use this ID to manage the requested information through the standard KYC submission flow.

Subject examples

An RFI subject can be a counterparty, applicant, or transfer. The subject payload and subject.kind field identify the entity for which you must provide information or documents.

{
  "details": {
    "IBAN": "IBAN",
    "accountType": "individual",
    "firstName": "John",
    "lastName": "Snow",
    "schema": "bank_sepa"
  },
  "id": "cpt_zOZ9PhbtKVltttt",
  "info": {
    "firstName": "John",
    "lastName": "Snow",
    "address": {
      "country": "GB",
      "postCode": "AAAAAA",
      "town": "London",
      "street": "Baker Street 221B",
      "state": "GB-LND"
    }
  },
  "kind": "counterparty",
  "ownerId": "acct_DjNq5TmFottttttt",
  "relationship": "client"
}

Complete the linked submission

Manage the submission identified by submissionId in the same way as a KYC submission:

  1. Retrieve the submission and review its current requirements.
  2. Provide every required information field.
  3. Request an upload token and upload each required supporting document.
  4. Complete the submission after you fulfill all requirements.

Use these endpoints with the RFI's submissionId:

ActionEndpoint
Retrieve the submissionGET /v1/kyc/submissions/{submissionId}
Provide informationPOST /v1/kyc/submissions/{submissionId}/info
Request a document upload tokenPOST /v1/kyc/submissions/{submissionId}/documents
Upload a documentPOST /v1/kyc/submissions/documents/{token}
Complete the submissionPOST /v1/kyc/submissions/{submissionId}/complete

Follow Individual KYC process for the request formats and requirement-handling details. The RFI's submission requirements determine the information and documents you must provide.

Track RFI status

Continue to listen for information_request.updated after completing the linked submission. When you receive this event, retrieve the latest RFI before updating its status in your system. The update can indicate a review outcome or that further information is required.

Handle webhook deliveries safely

Verify the webhook signature before processing either event. Store the webhook event ID and make your handler idempotent so retried or duplicate deliveries do not create duplicate work.

When you receive information_request.updated, retrieve the latest RFI before updating your internal status. When you receive a transfer status update, retrieve the transfer's information requests when the transfer is action_required.


Did this page help you?