1. Virtual Account
BPN OpenAPI
  • Get started
    • Introduction to BPN
    • Introduction to API
    • Architecture Overview
    • Authentication
    • Environments
    • Response envelope
    • Idempotency
  • Guides
    • Virtual Account
      • Virtual Account Overview
      • VA · Payin
      • VA · Statuses
      • VA · Payout
      • VA · RFI
      • VA · Currencies & limits
      • VA Opening
        • VND VA Opening
        • BRL VA Opening
    • Wallet
      • Wallet · Transfer
      • Wallet · Assets & limits
      • Wallet · Deposit whitelist
      • Wallet · PaymentLink
      • Wallet Overview
      • Wallet · Deposit
      • Wallet · Statuses
      • Wallet · Withdraw
    • Convert
      • Convert Overview
      • Convert · Quote & submit
      • Convert · Business types
      • Convert · Pairs & limits
      • Convert · Statuses
  • API Reference
    • Virtual Account
      • Virtual Account field notes
      • Inquiry Master VA Balance
        GET
      • List Primary Virtual Accounts
        GET
      • Create Virtual Account
        POST
      • Get Virtual Account Detail
        GET
      • List Virtual Account
        GET
      • List Virtual Account Orders
        GET
      • Get Virtual Account Order Detail
        GET
      • Refund Virtual Account Order
        POST
      • List RFI Sub Virtual Account
        GET
      • Get Sub Virtual Account RFI Template Info
        GET
      • Sub Virtual Account Submit RFI
        POST
      • Add Bank Account
        POST
      • List Bank Account
        GET
      • List Banks
        GET
      • Payout via Virtual Account
        POST
      • Send Email Verify Code
        POST
    • Wallet
      • Wallet field notes
      • Deposit Whitelist
        • Get Deposit Whitelist Options
        • Register Deposit Source Address
        • List Deposit Source Addresses
        • Get Deposit Source Address
        • Disable Deposit Source Address
        • Submit Payer Details for a Received Deposit
        • Save Sub-wallet Payer Profile
        • Update Sub-wallet Payer Profile
        • Get Sub-wallet Payer Profile
        • Get Deposit Whitelist Case
      • Get Asset Balance
      • Get Deposit Address
      • Add Deposit Sender
      • Add Withdraw Whitelist
      • Delete Withdraw Whiltelist
      • Request Withdraw
      • Query Wallet Internal Transfer Detail
      • List Wallet Internal Transfer order
      • Wallet Internal Transfer
      • Create Sub Account
      • Query Transaction History
      • List Wallets
      • List Sub Account
      • Get Transaction Detail
      • List Wallet Transactions
      • Get Wallet Transaction Detail
    • Payment Link
      • Abnormal fund
        • Abnormal funds
        • Matchable Payment links
        • Link Order(Abnormal fund)
        • Submit to platform
      • Create Payment Link
      • List Payment links
      • Get Curreny Network Config
      • Prepay Whitelist for One-Time Payment Link
      • Prepay Whitelist for Permanent Payment Link
    • Convert
      • Convert field notes
      • Inquery FX Rate
      • Get Stablecoin Quote
      • Create Stable Order
      • Get Order (Single) Detail
      • List Orders(Batch)
    • KYB
      • Share KYB/KYC Info For Sub User
      • Get KYB Sub User Status
    • Reconciliation
      • Get Reconciliation Order List By Page
    • External Provider
      • FE: Create stablecoin collection sub-account link
      • FE: Deposit Travel Rule
      • External Provider · Deposit whitelist
      • Create stablecoin collection sub-account link
      • Get sub wallet account
      • List sub wallet accounts
      • Change sub wallet status
      • Query stablecoin collection order list
      • Query stablecoin collection order status
      • Get quote
      • Accept stablecoin collection order
      • Reject stablecoin collection order
      • Query USD balance
      • USD Payout (withdrawal)
      • Query USD Payout order status
      • Query USD Payout order list
      • Create deposit Travel Rule link
      • Create deposit Travel Rule detail link
    • Mock
      • Mock Virtual account Payin Order
      • Mock wallet deposit transaction
      • Mock Payment Link deposit
      • Mock Payin Order Refund
      • Mock Payout Order Update Status
    • Pay Session
      • Request Pay Session
    • Files
      • Request File Upload URL
  • Webhooks
    • Webhooks Overview
    • KYB notifications
    • Event catalogue
    • Resend Fail Webhook
    • Open Virtual Account Status
    • Virtual Account Payment Status
    • Virtual Account Invoice update
    • Transaction Status Notification
    • KYB Status Notification
    • Deposit Sender Detail Required
    • Abnormal Fund Notification
    • WALLET_TRANSFER_ORDER_UPDATED
    • Sub Virtual Account RFI Required
    • Sub Wallet Update
    • wallet address whitelist Update
    • Crypto Deposit Order Notification
    • Collect Order Updated
    • Usd Payout Order Updated
    • onboard result
    • partner order status
    • PaymentLink Notification
    • Deposit Whitelist Notification
  • Partner Flow
    • Share KYB/KYC and open account directly
    • Get KYB/KYC submit + open account status
    • List Banks
    • Check Account
    • Add Account
    • Get Stablecoin Quote
    • Create Stable Order
    • Get Order (Single) Detail
    • List Orders(Batch)
    • Submit hash
    • Order Status Notification (STABLE_ORDER_UPDATED)
  • Appendix
    • Enums quick reference
    • Enum
    • Virtual Account(VA) Support List & KYB requirement
  • Release Notes & Changelog
  • Errors
    • Error codes catalogue
  • Change Log
    • 2026-09-21 Virtual Account independent refund orders
    • Wallet deposit source-address whitelist
  1. Virtual Account

Sub Virtual Account Submit RFI

POST
/v1/virtual-account/sub/submit-rfi

Submit Sub VA RFI#

POST /v1/virtual-account/sub/submit-rfi
Submit RFI materials, or apply for a monthly limit increase after the current RFI review is complete.

Normal submit#

Use when rfiStatus is AWAITING_SUBMISSION, or when resubmitting a normal RFI (RESUBMIT_REQUIRED). Do not send limitIncrease.
1.
Reload Get Sub Virtual Account RFI Template Info for this virtualAccountId.
2.
One answerList row per answerable question: bizType + questionId + answer or base64Files / file.
3.
Skip every SUB TITLE id (RFI_TIER1_Section_Company_Identity, RFI_TIER1_Section_Business_Transaction, RFI_TIER1_Section_Address_Financial_Tax).
4.
On success (data = true), wait for the same RFI webhook or re-list. rfiStatus moves SUBMITTED → APPROVED / REJECTED / RESUBMIT_REQUIRED.
Request example normal-submit is the answerable rows of the AVENIA BRL Individual template. Example normal-submit-business uses the Business ids (registration, UBO identity, B2B trade documents, company address, additional information). Take ids from the template response for the current account — do not hard-code them.

Limit-increase submit#

A limit increase is allowed only when the current RFI review is complete: rfiStatus = APPROVED. Before that, limitIncrease = true is rejected.
FieldRule
limitIncreaseFirst increase: true only when rfiStatus = APPROVED. Omit it on a normal submit.
requestedMonthlyLimitPositive amount. Required for a limit-increase call. Not a template question.
requestedMonthlyLimitCurrencyOptional. Empty defaults to USD.
answerListSame answerable question ids as a normal submit. Reload the template. Do not send SUB TITLE rows.
Request example limit-increase is the full Individual body plus the limit fields (requestedMonthlyLimit = 50000, currency USD).
If a limit-increase review is already 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.
base64Files entries are raw Base64. PDF samples start with JVBERi0xLjQK. NF-e / NFS-e XML starts with PD94bWwg. A ZIP of those XML files starts with UEsDBB. One array entry is one file. See the question table below for which documents each id expects. Reload question ids from the template API. Do not hard-code them.

Critical fields#

FieldRequiredRule
accountIdYesWebhook data.virtualAccountId or list accountId
answerList[].bizTypeYesTemplate bizType
answerList[].questionIdYesTemplate questions[].id (exact). Skip SUB TITLE
answerList[].base64Files / fileFILE questionsAt least one: fresh Base64 and/or an existing file key
answerList[].answerTEXT questionsRequired when the template marks the question required. A row may carry answer or a file; either one is enough when the question is not a required file
answerList or customAnswerListAt least oneMust not both be empty
limitIncreaseLimit increase onlySee above. Omit it on a normal submit
requestedMonthlyLimitWhen this call is a limit increasePositive amount
requestedMonthlyLimitCurrencyNoDefaults to USD

What to put in each file#

base64Files values are raw Base64 with no data: prefix. Truncated samples below use a real file header so the type is visible:
PDF: JVBERi0xLjQKJcfs...
NF-e / NFS-e XML: PD94bWwgdmVyc2lvbj0iMS4wIj8+... (<?xml version="1.0"?>)
XML packed in ZIP: UEsDBBQAAAAI...
Send one array entry per file. The template 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 is the monthly limit band per tax id. Every VA Pix key under that tax id shares one limit. It is not an RFI question id.
LevelRequested monthly limit
Level 1Default after a normal submit is approved: company USD 100,000, individual USD 10,000.
Level 2Above the default, up to USD 500,000.
Level 3Above USD 500,000, up to USD 1,000,000.
Level 4Above USD 1,000,000.
Question (Individual id / Business id)When it appliesFiles to upload
Website / store URL RFI_TIER1_Business_Website_App_Or_Store_UrlEvery 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_IncorporationEvery 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_ProofEvery 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_DocumentsEvery 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_ProofBuyer 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_InvoicesPlatform 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_DocumentsWebsite 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_InvoicesRequested 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_ProofRequested 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_AddressRequested 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_SheetRequested 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_ReturnIndividual merchant, requested limit above USD 10,000Latest personal income tax return.
Additional information RFI_TIER1_Individual_Additional_Information / RFI_TIER1_Business_Additional_InformationOptionalFree text. Do not put the requested amount here. Send it as requestedMonthlyLimit.
Skip every SUB TITLE id.
Default monthly limit after Level 1 (per tax id): company USD 100,000, individual USD 10,000. Several VA Pix keys under the same tax id share that one limit.

Request

Body Params application/jsonRequired

Examples
{
    "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."
        }
    ]
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location '/v1/virtual-account/sub/submit-rfi' \
--header 'Content-Type: application/json' \
--data '{
    "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."
        }
    ]
}'

Responses

🟢200OK
application/json
Bodyapplication/json

Example
{
    "status": 200,
    "code": null,
    "msg": "OK",
    "data": true,
    "traceId": "39d760f9a1814c4896a774bcf79da528",
    "success": true,
    "message": "OK"
}
Previous
Get Sub Virtual Account RFI Template Info
Next
Add Bank Account
Built with