Pave Bank
Sandbox

Simulate RFI

Simulate the full RFI lifecycle in the sandbox environment.

The sandbox environment provides a complete set of endpoints to simulate the Request for Information (RFI) lifecycle: creating RFIs, responding as a customer, and resolving them as staff.

In production, RFIs are raised by Pave Bank's compliance team. In sandbox, the API client creates and manages RFIs to test the handling logic. See the RFI Guide for the production workflow.


Sandbox Workflow Overview

The sandbox RFI flow mirrors production but provides control over both sides; the compliance team (staff) and the customer.

  1. Create an RFI - Simulate Pave Bank raising an RFI against a transaction or account
  2. Fetch the RFI - Retrieve it using the production Get RFI or List RFIs endpoints
  3. Respond as a customer - Submit responses using the production Respond to RFI endpoint
  4. Optionally add staff responses - Simulate staff feedback or document requests
  5. Resolve each question - Approve, reject, or close individual questions
  6. Resolve the RFI - Close the entire RFI once all questions are resolved

RFI Statuses

Both RFIs and their questions share the same set of statuses. Understanding these is key to testing the full lifecycle.

StatusDescriptionFinal Status?
action_requiredWaiting for customer to respondNo
pending_reviewCustomer has responded, waiting for staff reviewNo
approvedStaff has approved the response(s)Yes
rejectedStaff has rejected the response(s)Yes
closedManually closed without a decisionYes
timeoutNo response received within the allowed period (30 days from last update)Yes

How Statuses Change

Question-level transitions:

action_required → (customer responds) → pending_review
pending_review  → (staff responds)    → action_required  (back-and-forth)
pending_review  → (staff action)      → approved / rejected / closed

RFI-level transitions:

The RFI status is automatically derived from its questions:

  • If any question is action_required → RFI is action_required
  • If all questions are pending_review or final → RFI is pending_review
  • RFI reaches a final state (approved, rejected, closed) only via an explicit RFI Action

An action cannot be performed on the entire RFI until all of its questions are in a final status (approved, rejected, or closed). Resolve each question first using the RFI Question Action endpoint.


Step-by-Step: Full Sandbox Test

Step 1: Create an RFI

Use Create RFI to simulate Pave Bank raising an RFI with one or more questions. All Question Types available in production are supported in sandbox.

POST /v1/sandbox/rfis
{
    "type": "transaction",
    "related_id": "transaction_xyz123",
    "description": "Compliance verification required",
    "questions": [
        {
            "question_type": "transaction.purpose",
            "question_data": {
                "question_text": "What is the purpose of this transaction?"
            }
        }
    ]
}

The RFI and all its questions start in action_required status.

Step 2: Fetch the RFI

Use the production endpoints to retrieve the RFI.

GET /v1/rfis

Note: The rfi_id and question_id from the response are required for subsequent steps.

Step 3: Respond as a Customer

Use the production Respond to RFI endpoint to submit a customer response.

POST /v1/rfis/{rfiID}/questions/{questionID}/responses
{
    "question_type": "transaction.purpose",
    "transaction.purpose": {
        "response_text": "Payment for consulting services rendered in Q4."
    }
}

After a customer response, the question status moves to pending_review.

Step 4: (Optional) Add a Staff Response

Use Create Admin Response to simulate staff requesting clarification.

POST /v1/sandbox/rfis/{rfiID}/questions/{questionID}/admin-responses
{
    "response_text": "Please also provide the invoice or contract reference.",
    "document_ids": []
}

After a staff response, the question status returns to action_required, prompting the customer to respond again.

Step 5: Resolve Each Question

Once the customer response is satisfactory, use Question Action to approve, reject, or close it.

POST /v1/sandbox/rfis/{rfiID}/questions/{questionID}/action
{
    "action": "approve",
    "rfi_response_ids": ["<RFI_RESPONSE_ID>"]
}

The question moves to the corresponding final status (approved, rejected, or closed).

Step 6: Resolve the RFI

Once all questions are in a final status, use RFI Action to close the entire RFI.

POST /v1/sandbox/rfis/{rfiID}/action
{
    "action": "approve"
}

The RFI is now in its final state.

On this page