Skip to main content

Overview

An RFI is opened by our compliance team after a review, either against a user’s KYC/KYB or against a single transfer. The request is emailed to your compliance contact, not to the end user. It carries a HIFI-hosted link you can answer on directly, so the default path needs no integration work. The endpoints below exist for clients who would rather gather the evidence inside their own product and reply programmatically.

Knowing an RFI Is Open

There are three ways to find out, and they answer slightly different questions.
A user can sit at RFI_PENDING with rfi still null. Our compliance team flags the case first and composes the request afterwards, so the status changes before there is anything to answer. Once the request is issued and emailed, rfi is populated.

Rounds

Each RFI has one open round at a time, numbered from 1. A round carries its own questions, its own deadline, and its own link. If the reply does not settle the question, our compliance team asks again, which closes the current round and opens the next one with a fresh link. A round accepts one submission. Answering twice, or answering after the deadline, returns an error rather than replacing the reply.

Request Items

The items array on the current round is what is being asked for, in the order it should be shown. Each item is answered by its id.

Example: Answer an RFI

1

Find the open request

List the requests raised against your users, filtering by status.Request
Response
You can stop here. Open the link and answer on the HIFI-hosted page, with no further calls. The same link was emailed to your compliance contact when the request was issued.
2

Upload any documents

Upload each file via POST /v2/files and keep the file_ ID from the response.
3

Submit the reply

Answer every required item in one call. Each entry carries exactly one of fileId or answerText, and repeating a requestItemId attaches several files to the same item.Request
Response
4

Track the outcome

The request sits at submitted while our compliance team reviews it. It then moves to resolved and a KYC.RFI.CLOSED webhook is sent, or a new round opens if they need more. A request left unanswered past its deadline moves to expired.

Statuses

These are the RFI’s own statuses. The user’s KYC status is separate: it reads RFI_PENDING while an onboarding request is open, and moves on once the request is resolved.

Getting Help

  • 📧 Email: support@hifi.com
  • 💬 Slack: Message us in our shared Slack channel