Skip to main content
A Request for Information (RFI) is raised when compliance needs something more from a customer before verification can complete. It names exactly which documents or fields are missing, expired, or invalid, so you never have to guess what to resend. An RFI puts the customer into ACTION_REQUIRED and holds verification there until you respond. Nothing progresses in the meantime.
An RFI can also be raised after a customer is already APPROVED. In that case the customer status does not change. The only signal is the customer.rfi webhook and the populated request_for_information array.

How an RFI Reaches You

There are two ways to find an open RFI, and both carry the same structure. The customer.status webhook fires alongside customer.rfi when the status actually changes. Treat customer.rfi as the payload that tells you what to do, and customer.status as the state transition.

Reading the RFI Payload

The payload is a list of sections. Each section holds one or more document categories, and each category holds the individual fields with a problem.

Field Status Values

Section Values by Customer Type

An RFI can be scoped to the customer’s own records or to a specific associated party. Sections from the associated party rows above tell you the request concerns a party rather than the business itself.

Example: The customer.rfi Webhook

An individual customer whose passport has expired on the front, is damaged on the back, is missing both dates, and carries a name mismatch:
Every webhook request is signed. Verify the x-fin-signature header before acting on the payload. See Verifying webhooks.

Example: Get Customer Details

The same request is readable at any time on the customer record. request_for_information is an empty array when nothing is outstanding.
For individual customers the same array is returned by GET /v1/customers/:customer-id, with two additional fields per entry: scope, which is CUSTOMER or ASSOCIATED_PARTY, and options, which lists permitted values when data_type is ENUM.

Responding to an RFI

Responding takes two calls: upload the files, then patch the customer with the returned URIs.
1

Upload the replacement files

Post the files to POST /v1/customers/upload as multipart/form-data. Field names are arbitrary and are echoed back as the keys in the response.
Allowed file types are PDF, JPG, JPEG, and PNG. Keep the returned URIs; the next call needs them.
2

Submit the response

Send the requested fields to PATCH /v1/customers/:customer-id. The same endpoint serves individual and business customers, and its body accepts the same fields as the Attach Documents endpoints.
Submit only the fields the RFI listed. Sending data that was not requested returns an error.
3

Watch for the outcome

The customer returns to REVIEWING while compliance reassesses. Listen on customer.status for the result, and on customer.rfi in case a further request is raised.

Individual Customer Response

Answering the proof_of_identity and proof_of_address sections from the webhook example above:

Business Customer Response

Business sections map to top level arrays. An RFI scoped to an associated party is answered inside associated_party_attachments, keyed by associated_party_id:
A successful patch returns the customer ID:
A 400 response means validation failed. The data object names the offending fields. A 404 means the customer ID does not exist.

Common Mistakes