> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yativo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Compliance RFIs (requests for information)

> List compliance RFIs and reply with answers

When a payment partner needs more information about a customer, payment, or transfer, Yativo records an **RFI** (request for information) on your account. You can list RFIs and reply from your own UI or workflow.

> [!WARNING]
>
> Each reply must include **every** requested item in one API call. A reply is **final** for that open period — you can't send a partial answer or edit it later unless Yativo reopens the RFI (`response_required` becomes `true` and `status` is `action_required` again). Yativo **reviews** every reply before anything is sent upstream.

API responses do not include upstream partner names, external reference ids, or third-party dashboard links.

## Environments

| Environment | Base URL |
| - | - |
| Production | `https://api.yativo.com/api/v1` |
| Sandbox | `https://smtp.yativo.com/api/v1` |

Authenticate with `X-Api-Key` and `X-Api-Secret`. Team members need `team.kyc.view` to read RFIs and `team.kyc.submit` to reply.

## Webhooks

When an RFI is created or its state changes, Yativo posts to your webhook URL:

* `rfi.created` — new RFI
* `rfi.updated` — status change
* `rfi.response_required` — open and waiting on you

See [RFI webhook payloads](https://docs.yativo.com/yativo-fiat/webhooks.md#rfi-events-rficreated-rfiupdated-rfiresponse_required).

***

## List RFIs

```
GET /business/rfis
```

Query: `open_only=1`, `response_required=1`

```bash cURL theme={null}
curl -G 'https://api.yativo.com/api/v1/business/rfis' \
  -H 'X-Api-Key: YOUR_API_KEY' \
  -H 'X-Api-Secret: YOUR_API_SECRET' \
  --data-urlencode 'open_only=1'
```

```json Success theme={null}
{
  "status": "success",
  "data": {
    "current_page": 1,
    "data": [
      {
        "id": 42,
        "status": "action_required",
        "category": "kyc",
        "summary": "Source of Funds",
        "instructions": "Please describe your e-commerce resale activities…",
        "amount": null,
        "currency": null,
        "deadline": "2026-12-04T04:59:59+00:00",
        "requested_items": [
          {
            "id": "2095d3da-2761-4d30-93e6-b46018bf576a",
            "status": "requested",
            "content": "Source of Funds",
            "response_types": ["text", "free_text_explanation", "document_list"]
          }
        ],
        "draft_responses": {},
        "draft_responses_at": null,
        "responses_submitted_at": null,
        "submitted_at": null,
        "is_open": true,
        "response_required": true,
        "related_transaction": null,
        "customer_id": "8127b2aa-30ed-4444-8ec2-cd1cc9bdd860",
        "customer": {
          "customer_id": "8127b2aa-30ed-4444-8ec2-cd1cc9bdd860",
          "customer_name": "Jane Doe",
          "customer_email": "jane@example.com",
          "customer_phone": "+15551234567",
          "customer_type": "individual"
        },
        "created_at": "2026-10-30T09:15:24+00:00",
        "updated_at": "2026-10-30T09:15:24+00:00"
      }
    ]
  }
}
```

### `status` values

| Value | Meaning |
| - | - |
| `action_required` | Yativo is waiting for your reply (`response_required` is `true`) |
| `under_review` | Your reply was received (`responses_submitted_at` is set); Yativo is reviewing — you can't send another reply yet |
| `closed` | No further action |

***

## Show RFI

```
GET /business/rfis/{id}
```

`id` is Yativo's internal RFI id (same as `payload.id` in webhooks). Returns one object with the same shape as a list row.

***

## Reply to RFI

Send **one complete reply** per open period. Include every `requested_items[].id` in the JSON body. The same rules apply to `POST /business/rfis/{id}/responses`.

```
PUT /business/rfis/{id}/draft-responses
```

After a successful reply, `responses_submitted_at` is set, `response_required` becomes `false`, and `status` moves to `under_review`. Further reply calls return `422` until Yativo reopens the RFI for another customer response.

```bash cURL theme={null}
curl -X PUT 'https://api.yativo.com/api/v1/business/rfis/42/draft-responses' \
  -H 'X-Api-Key: YOUR_API_KEY' \
  -H 'X-Api-Secret: YOUR_API_SECRET' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: rfi-reply-001' \
  -d '{
    "responses": {
      "2095d3da-2761-4d30-93e6-b46018bf576a": {
        "text": "E-commerce reseller",
        "free_text_explanation": "I sell consumer electronics on eBay to retail buyers.",
        "document_list": [
          {
            "file": "data:application/pdf;base64,JVBERi0xLjQK…",
            "description": "Bank statement"
          }
        ]
      }
    }
  }'
```

Keys must match `requested_items[].id`. Each item accepts only the field names listed in that item's `response_types`.

| `response_types` | JSON field | Shape |
| - | - | - |
| `text` | `text` | string |
| `free_text_explanation` | `free_text_explanation` | string |
| `date` | `date` | ISO date string |
| `boolean` | `boolean` | boolean |
| `text_list` | `text_list` | string array |
| `address` | `address` | object (`street_line_1`, `country`, …) |
| `document_list` | `document_list` | array of `{ "file": "data:…;base64,…", "description": "…" }` on write (PDF/images only, max 24 MB per file); reads return `file_attached: true` instead of base64 |
| `identifying_information_list` | `identifying_information_list` | array of ID objects |

Within a single reply, each `document_list` entry must be included in that request (you can't upload documents in a follow-up call for the same open period).

The response matches **Show RFI** with `draft_responses` populated, `responses_submitted_at` set, and `draft_responses_at` updated. Document bytes are not echoed on GET — only `file_attached` and `description`.

Returns `422` if any requested item is missing or incomplete, if the RFI is closed, or if you already replied and Yativo hasn't reopened the RFI.

***

## API reference

| Action | Method & path |
| - | - |
| [List RFIs](https://docs.yativo.com/fiat-api-reference/rfis/list.md) | `GET /business/rfis` |
| [Get RFI](https://docs.yativo.com/fiat-api-reference/rfis/get.md) | `GET /business/rfis/{id}` |
| [Reply to RFI](https://docs.yativo.com/fiat-api-reference/rfis/reply-to-rfi.md) | `PUT /business/rfis/{id}/draft-responses` |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.