Parent: Overview
Updated: 2026-10-27
SUB_VIRTUAL_ACCOUNT_RFI_REQUIRED.| # | Document | Method / Event | Path |
|---|---|---|---|
| 1 | Sub Virtual Account RFI Required | Webhook | SUB_VIRTUAL_ACCOUNT_RFI_REQUIRED |
| 2 | List RFI Sub Virtual Account | GET | /v1/virtual-account/sub/rfi-list |
| 3 | Get Sub Virtual Account RFI Template Info | GET | /v1/virtual-account/sub/rfi-template |
| 4 | Sub Virtual Account Submit RFI | POST | /v1/virtual-account/sub/submit-rfi |
rfiStatus for the latest outcomeSUB_VIRTUAL_ACCOUNT_RFI_REQUIREDGET /v1/virtual-account/sub/rfi-templatePOST /v1/virtual-account/sub/submit-rfiGET /v1/virtual-account/sub/rfi-list / GET /v1/virtual-account/sub/get until rfiStatus / account or order status updatesRESUBMIT / RFI incomplete.VirtualAccountStatus.VirtualAccountRFIStatus.SUB_VIRTUAL_ACCOUNT_RFI_REQUIREDeventId.data.rfiStatus (see table below).virtualAccountId + bizTypeList, then submit RFI.| Field | Why it matters | How to use |
|---|---|---|
eventId | Idempotency | Ignore duplicate deliveries with the same id |
eventType | Event filter | Must be SUB_VIRTUAL_ACCOUNT_RFI_REQUIRED |
data.virtualAccountId | Identifies the Sub VA | Template: virtualAccountId; Submit: accountId |
data.awaitingRfiTypeList | Which tiers need materials | Template: bizTypeList (1:1) |
data.rfiStatus | Lifecycle / review result | Branch merchant logic; review results reuse this webhook |
data.rfiFeedback | Reject / resubmit reason | Present when rfiStatus is REJECTED or RESUBMIT_REQUIRED; show to end users / ops |
referenceId | Envelope reference | Usually VA id; prefer data.virtualAccountId for API calls |
{
"eventId": "36190155-28a2-42f9-a55a-1359654b7384",
"eventType": "SUB_VIRTUAL_ACCOUNT_RFI_REQUIRED",
"referenceId": "538",
"status": "SUCCESS",
"timestamp": 1764235978954,
"data": {
"virtualAccountId": "3100",
"externalAccountId": "",
"accountName": "ALBrooks",
"currency": "MXN",
"status": "SUCCESS",
"awaitingRfiTypeList": [
"SUB_ACCOUNT_RFI_TIER_1"
],
"rfiStatus": "AWAITING_SUBMISSION"
}
}rfiStatus valuesrfiStatus | Meaning | Merchant action |
|---|---|---|
AWAITING_SUBMISSION | Materials required | Fetch template → submit RFI |
EARLY_WARNING | Early warning; materials may be submitted early | Optional early submit |
RESET | Previously triggered; monthly reset; still submittable | May submit again |
RESUBMIT_REQUIRED | Compliance requested resubmission | Fetch template → resubmit |
SUBMITTED | Materials received; under review | Wait for next webhook |
APPROVED | RFI review complete | Normal RFI is done. A monthly limit increase may now be submitted with limitIncrease = true |
REJECTED | Review rejected | Follow compliance guidance |
GET /v1/virtual-account/sub/rfi-listrfiStatus (e.g. AWAITING_SUBMISSION) and/or currency.accountId → template virtualAccountId / submit accountIdawaitingRfiTypeList → template bizTypeList| Parameter | Required | Note |
|---|---|---|
rfiStatus | No | Common filter: AWAITING_SUBMISSION, RESUBMIT_REQUIRED, SUBMITTED, APPROVED, REJECTED, … |
currency | No | ISO 4217 (e.g. MXN) |
accountBusinessType | No | Defaults to Normal on the request model |
parentAccountId | No | Optional parent (primary) account id |
data[])| Field | Why it matters | How to use |
|---|---|---|
accountId | Sub VA id | Same as webhook virtualAccountId; pass to template + submit |
rfiStatus | Account-level RFI status | Branch list / polling logic |
awaitingRfiTypeList | Tiers still needing materials | Template bizTypeList |
rfiFeedback | Reject / resubmit reason | Non-null when rfiStatus is REJECTED / RESUBMIT_REQUIRED |
rfiInfo.rfiTierList[] | Per-tier status + answers | Resubmit / display previously submitted answerList |
This list API is a pull complement to the webhook push. Prefer the webhook for real-time updates; use list for catch-up, reconciliation, and UI listing.
GET /v1/virtual-account/sub/rfi-templaterfiStatus (e.g. AWAITING_SUBMISSION, RESUBMIT_REQUIRED).data[], iterate questions[] and prepare submit answers:questions[].id → submit questionIdbizType → submit bizTypetype = FILE → prepare base64Files / file; text-like → prepare answerrequired = true| Parameter | Required | Map from webhook | Note |
|---|---|---|---|
bizTypeList | Yes | data.awaitingRfiTypeList | Wrong/missing → empty or incomplete checklist |
virtualAccountId | Recommended | data.virtualAccountId | Needed to resolve channel-specific template |
currency | Optional | data.currency | ISO 4217 |
data[]) — fields you must carry to submit| Field | How to use on submit |
|---|---|
bizType | answerList[].bizType |
questions[].id | answerList[].questionId (exact match) |
questions[].type | FILE → files; TEXT → answer |
questions[].required | Must provide content when true |
avenia-brl-individual and avenia-brl-business on Get Sub Virtual Account RFI Template Info.SUB TITLE question id when you submit (RFI_TIER1_Section_Company_Identity, RFI_TIER1_Section_Business_Transaction, RFI_TIER1_Section_Address_Financial_Tax). requestedMonthlyLimit is not a template question.Do not hard-code question ids from samples — always load them from this API for the current virtualAccountId/ channel.
POST /v1/virtual-account/sub/submit-rfivirtualAccountId or list accountId) and the template checklist.answerList: one row per answerable question (bizType + questionId + answer / base64Files). Skip SUB TITLE rows.POST the body; on success (data = true), wait for the same RFI webhook (or re-list).rfiStatus (SUBMITTED → APPROVED / REJECTED / RESUBMIT_REQUIRED).RESUBMIT_REQUIRED, reload the template and call this API again.rfiStatus = APPROVED).| Field | Required | Value / rule |
|---|---|---|
accountId | Yes | Webhook data.virtualAccountId or list accountId |
answerList[].bizType | Yes | Template bizType / webhook awaiting tier |
answerList[].questionId | Yes | Template questions[].id (exact). Skip SUB TITLE |
answerList[].base64Files / file | For FILE questions | Provide at least one: fresh Base64 upload and/or existing file key |
answerList[].answer | For TEXT questions | Required when the template marks the question required. A row may carry answer or file; either one with a value is enough when the question is not a required file |
answerList or customAnswerList | At least one | Must not both be empty |
limitIncrease | Only for limit increase | First increase: true only when rfiStatus = APPROVED (RFI review complete). Omit it on a normal submit |
requestedMonthlyLimit | When this call is a limit increase | Positive amount. Not a template question |
requestedMonthlyLimitCurrency | No | Defaults to USD |
rfiStatus is AWAITING_SUBMISSION (or a normal resubmit). Do not send limitIncrease. This keeps the Level 1 default limit (company USD 100,000, individual USD 10,000 per tax id) once review is approved.normal-submit). Business uses different ids for registration, UBO identity, trade documents, company address, and additional information (request example normal-submit-business). Take the ids from the template response. Skip SUB TITLE rows.JVBERi0xLjQKJcfs... is a PDF. PD94bWwgdmVyc2lvbj0iMS4wIj8+... is an XML invoice. UEsDBBQAAAAI... is a ZIP of those XML files. Several entries mean several files (one per month, one per UBO, or an invoice plus its BL/AWB).{
"accountId": "3100",
"answerList": [
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Business_Website_App_Or_Store_Url",
"answer": "https://shop.example.com"
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Company_Registration_Documents",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Individual_Identity_Document",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Articles_of_Association_Ownership_Documents",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Individual_Business_Proof",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Marketplace_Service_Fee_Invoices",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Website_Or_App_Business_Documents",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Nfe_Nfte_Supporting_Invoices",
"base64Files": [
"PD94bWwgdmVyc2lvbj0iMS4wIj8+..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Individual_Address_Proof",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_UBO_Proof_of_Address",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Financial_Statements_Balance_Sheet",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Personal_Income_Tax_Return",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Individual_Additional_Information",
"answer": "Documents for the default monthly limit."
}
]
}{
"accountId": "3100",
"answerList": [
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Business_Website_App_Or_Store_Url",
"answer": "https://shop.example.com"
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Business_Certificate_of_Incorporation",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Business_UBO_Proof",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Articles_of_Association_Ownership_Documents",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Business_Transaction_Proof",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Marketplace_Service_Fee_Invoices",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Website_Or_App_Business_Documents",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Nfe_Nfte_Supporting_Invoices",
"base64Files": [
"PD94bWwgdmVyc2lvbj0iMS4wIj8+...",
"UEsDBBQAAAAI..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Business_Address_Proof",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_UBO_Proof_of_Address",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Financial_Statements_Balance_Sheet",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Personal_Income_Tax_Return",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Business_Additional_Information",
"answer": "Documents for the default monthly limit."
}
]
}base64Files values are raw Base64 with no data: prefix. Truncated samples below use a real file header so the type is visible:JVBERi0xLjQKJcfs...PD94bWwgdmVyc2lvbj0iMS4wIj8+... (<?xml version="1.0"?>)UEsDBBQAAAAI...required flag decides whether the row must be present. Question ids still come from Get Sub Virtual Account RFI Template Info for this account. Use the table below for which file each question expects.| Level | Requested monthly limit |
|---|---|
| Level 1 | Default after a normal submit is approved: company USD 100,000, individual USD 10,000. |
| Level 2 | Above the default, up to USD 500,000. |
| Level 3 | Above USD 500,000, up to USD 1,000,000. |
| Level 4 | Above USD 1,000,000. |
| Question (Individual id / Business id) | When it applies | Files to upload |
|---|---|---|
Website / store URL RFI_TIER1_Business_Website_App_Or_Store_Url | Every submit. The store, website, or app URL. | TEXT. The store, website, or app URL. |
Company registration RFI_TIER1_Company_Registration_Documents / RFI_TIER1_Business_Certificate_of_Incorporation | Every submit. Required for the default monthly limit: company USD 100,000, individual USD 10,000 per tax id. | Brazil: Contrato Social. Mainland China: Business License. Hong Kong: Certificate of Incorporation. Send each document as its own PDF. |
Legal representative and UBO identity RFI_TIER1_Individual_Identity_Document / RFI_TIER1_Business_UBO_Proof | Every submit. Required for the default monthly limit: company USD 100,000, individual USD 10,000 per tax id. | A valid ID for the legal representative and for every UBO (passport, ID card, driver's license, residence permit, RG, RNM/RNE, or CIN). One file per person. |
Ownership RFI_TIER1_Articles_of_Association_Ownership_Documents | Every submit. Required for the default monthly limit: company USD 100,000, individual USD 10,000 per tax id. | Documents that show the current shareholders. Mainland China: Articles of Association or shareholder register. Hong Kong: latest Annual Return or NNC1. Brazil: Contrato Social. |
B2B trade documents RFI_TIER1_Individual_Business_Proof / RFI_TIER1_Business_Transaction_Proof | Buyer invoices and matching BL/AWB at the default monthly limit (company USD 100,000 / individual USD 10,000), and again when the requested limit is above that default. | The last 3 commercial invoices that show the buyer name, each with its matching bill of lading or air waybill (BL / AWB). A Brazil-established merchant may send NF-e instead. The sample sends 3 invoice PDFs and 3 BL/AWB PDFs. |
Marketplace service-fee invoices RFI_TIER1_Marketplace_Service_Fee_Invoices | Platform service-fee invoices for the default monthly limit: company USD 100,000, individual USD 10,000 per tax id. | Platform service-fee invoices issued to the merchant for the last 3 months. The sample sends one PDF per month. |
Website or app documents RFI_TIER1_Website_Or_App_Business_Documents | Website or app ownership and sales reports for the default monthly limit: company USD 100,000, individual USD 10,000 per tax id. | Website or app ownership proof, plus sales reports for the last 3 months covering every payment channel. |
NF-e / NFS-e RFI_TIER1_Nfe_Nfte_Supporting_Invoices | Requested limit above the default: up to USD 500,000 (Level 2), up to USD 1,000,000 (Level 3), or above USD 1,000,000 (Level 4). | Invoices the merchant issued in the last 3 months. Originals only: NF-e or NFS-e XML, the same XML in a ZIP, or a PDF that shows the access key. Marketplace: NF-e for the merchant's own sales. Own website or app: NF-e for goods, NFS-e for services and digital content. A merchant on their own website or app with no Brazilian entity does not issue these and must apply Level 4 instead. B2B in Brazil: NF-e. Up to USD 500,000 (Level 2) needs invoices totaling at least 20% of the requested limit. Up to USD 1,000,000 (Level 3) needs at least 40%. Above USD 1,000,000 (Level 4) needs at least USD 400,000 of invoices. Each invoice counts once. |
Company address RFI_TIER1_Individual_Address_Proof / RFI_TIER1_Business_Address_Proof | Requested limit above USD 1,000,000 (Level 4). Also required when an individual merchant asks for more than USD 10,000. | Brazil: a utility bill, bank statement, or government letter in the company name from the last 3 months. A CNPJ registration card is not accepted. Hong Kong: a valid Business Registration Certificate. Mainland China: Business License. |
UBO address RFI_TIER1_UBO_Proof_of_Address | Requested monthly limit above USD 1,000,000 (Level 4). | Mainland China UBO: both sides of the resident identity card (two files). Other UBOs: a utility bill or bank statement in the UBO's name from the last 3 months. An individual merchant sends their own address proof. |
Financial statements RFI_TIER1_Financial_Statements_Balance_Sheet | Requested monthly limit above USD 1,000,000 (Level 4). | Latest financial statements or balance sheet. A limit above USD 1,000,000 is set from the capacity these documents show. A merchant selling on their own website or app outside Brazil uses this, plus address proof, instead of NF-e. |
Personal income tax RFI_TIER1_Personal_Income_Tax_Return | Individual merchant, requested limit above USD 10,000 | Latest personal income tax return. |
Additional information RFI_TIER1_Individual_Additional_Information / RFI_TIER1_Business_Additional_Information | Optional | Free text. Do not put the requested amount here. Send it as requestedMonthlyLimit. |
SUB TITLE id.rfiStatus = APPROVED. Before that, limitIncrease = true is rejected.requestedMonthlyLimit (positive) and requestedMonthlyLimitCurrency (optional, default USD). answerList uses the same answerable question ids as a normal submit. Put the extra invoices, and for a higher level the address proof, financial statements, and personal tax return, in the questions in the table above.limit-increase):{
"accountId": "3100",
"limitIncrease": true,
"requestedMonthlyLimit": 400000,
"requestedMonthlyLimitCurrency": "USD",
"answerList": [
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Business_Website_App_Or_Store_Url",
"answer": "https://shop.example.com"
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Company_Registration_Documents",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Individual_Identity_Document",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Articles_of_Association_Ownership_Documents",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Individual_Business_Proof",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Marketplace_Service_Fee_Invoices",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Website_Or_App_Business_Documents",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Nfe_Nfte_Supporting_Invoices",
"base64Files": [
"PD94bWwgdmVyc2lvbj0iMS4wIj8+...",
"PD94bWwgdmVyc2lvbj0iMS4wIj8+...",
"PD94bWwgdmVyc2lvbj0iMS4wIj8+...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Individual_Address_Proof",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_UBO_Proof_of_Address",
"base64Files": [
"JVBERi0xLjQKJcfs...",
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Financial_Statements_Balance_Sheet",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Personal_Income_Tax_Return",
"base64Files": [
"JVBERi0xLjQKJcfs..."
]
},
{
"bizType": "SUB_ACCOUNT_RFI_TIER_1",
"questionId": "RFI_TIER1_Individual_Additional_Information",
"answer": "Requesting USD 400,000. Self-issued invoices from the last 3 months total at least USD 80,000."
}
]
}RESUBMIT_REQUIRED or SUBMITTED, limitIncrease may be omitted. requestedMonthlyLimit must still be a positive amount. Do not send limitIncrease = true on a normal submit while rfiStatus is not yet APPROVED.rfiStatus = APPROVED on the webhook or on List RFI Sub Virtual Account. A first increase sent earlier is rejected.| Level | Monthly limit per tax id | Documents on top of Level 1 |
|---|---|---|
| Level 1 | Company USD 100,000. Individual USD 10,000. | Base company, identity, and ownership files, plus the profile proof (marketplace invoices, website or app reports, or the last 3 B2B invoices with BL/AWB). Approval keeps this default. |
| Level 2 | Up to USD 500,000 | Invoices the merchant issued in the last 3 months, totaling at least 20% of the requested limit. Example: USD 400,000 requested needs at least USD 80,000 of invoices. |
| Level 3 | Up to USD 1,000,000 | Same invoices, totaling at least 40% of the requested limit. Example: USD 1,000,000 requested needs at least USD 400,000 of invoices. |
| Level 4 | Above USD 1,000,000 | Full Level 3 pack (at least USD 400,000 of invoices), plus company and UBO address proof and financial statements or a balance sheet. The limit follows the capacity those statements show. |
GET /v1/virtual-account/sub/rfi-template. Build answerList from that response. Skip SUB TITLE.POST /v1/virtual-account/sub/submit-rfi with limitIncrease = true, requestedMonthlyLimit, and the files for that level.SUB_VIRTUAL_ACCOUNT_RFI_REQUIRED. SUBMITTED means the pack is in review. APPROVED means the review finished (the limit may stay, rise, or be cut, including to USD 0). RESUBMIT_REQUIRED means reload the template and submit again. On that follow-up you may omit limitIncrease.data)true means the submission is accepted. Later review status comes from webhook Sub Virtual Account RFI Required via data.rfiStatus — do not treat this boolean as the final compliance result.eventType = SUB_VIRTUAL_ACCOUNT_RFI_REQUIRED.eventId for idempotency; read data.virtualAccountId, awaitingRfiTypeList, and rfiStatus.GET /v1/virtual-account/sub/rfi-template with bizTypeList = awaitingRfiTypeList and virtualAccountId = virtualAccountId.answerList from template questions (bizType + questionId + answer / base64Files).POST /v1/virtual-account/sub/submit-rfi with accountId = virtualAccountId.SUB TITLE question ids. Send limitIncrease = true only when rfiStatus = APPROVED; include a positive requestedMonthlyLimit (currency defaults to USD).data.rfiStatus.