1. VA Opening
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 · Currencies & limits
      • VA · Payout
      • VA · RFI
      • 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
      • List Primary Virtual Accounts
      • Create Virtual Account
      • Get Virtual Account Detail
      • List Virtual Account
      • List Virtual Account Orders
      • Get Virtual Account Order Detail
      • Refund Virtual Account Order
      • List RFI Sub Virtual Account
      • Get Sub Virtual Account RFI Template Info
      • Sub Virtual Account Submit RFI
      • Add Bank Account
      • List Bank Account
      • List Banks
      • Payout via Virtual Account
      • Send Email Verify Code
    • 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 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
    • 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
    • Mock
      • Mock Virtual account Payin Order
      • Mock wallet deposit transaction
      • 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
    • inquiry supported currency
    • KYC/KYB Sharing
    • inquiry onboard status
    • get price
    • Create order
    • order list
    • inquiry single order
    • get user deposit address
    • get payment instruction
    • sync fund notification
    • daily settlement records
  • 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. VA Opening

BRL VA Opening

Audience: Merchant Open API integrators
Related APIs:
#DocumentMethodPath
1Create Virtual AccountPOST/v1/virtual-account/sub/create
2Get VA DetailGET/v1/virtual-account/sub/get
3Open Virtual Account StatusWebhook—
Opening a BRL (Brazilian Real) VA requires the beneficiary to pass onboarding review before the account can receive funds. The profile is small — a name, a tax identification number and a country — and no documents are uploaded.

1. Flow#

Opening a BRL VA is asynchronous. One request carries both the account request and the beneficiary profile; the account is created only after the profile passes review.
Important — A 200 response means the application was accepted, not that the account exists. No PIX key or QR code is returned at submit time. Do not present receiving details to your end user until the account reaches SUCCESS.
No file upload step exists on the BRL path. Do not call Request File Upload URL when opening a BRL VA, and do not send documents or persons.

2. Request#

The request shape is the one published on Create Virtual Account. Use the two examples named BRL-Woovi STATIC for Individual and BRL-Woovi STATIC for Company as the reference payloads; they are reproduced below.

2.1 Individual#

{
  "primaryAccountId": "10001",
  "accountName": "John Doe",
  "currency": "BRL",
  "accountSubType": "STATIC",
  "userType": "Individual",
  "individualInfo": {
    "firstName": "John",
    "lastName": "Doe",
    "taxIdNumber": "12345678900",
    "residenceCountry": "BR"
  }
}
FieldRule
primaryAccountIdMaster VA the sub account belongs to
accountNameName of the account holder. Names the resulting account in queries and reconciliation
currencyBRL
accountSubTypeSTATIC
userTypeIndividual
individualInfo.firstNameGiven name
individualInfo.lastNameFamily name
individualInfo.taxIdNumberThe beneficiary's CPF
individualInfo.residenceCountryCountry of tax residence, ISO 3166-1 alpha-2 (BR)

2.2 Company#

{
  "primaryAccountId": "10001",
  "currency": "BRL",
  "companyName": "Test Company",
  "accountSubType": "STATIC",
  "userType": "Corporate",
  "companyInfo": {
    "taxIdNumber": "12345678900",
    "incorporatedCountry": "BR"
  }
}
FieldRule
primaryAccountIdMaster VA the sub account belongs to
currencyBRL
companyNameRegistered legal name. Names the resulting account; the company name is not read from companyInfo
accountSubTypeSTATIC
userTypeCorporate
companyInfo.taxIdNumberThe company's CNPJ
companyInfo.incorporatedCountryCountry of tax residence, ISO 3166-1 alpha-2 (BR)

2.3 Response#

{
  "status": 200,
  "msg": "OK",
  "code": null,
  "data": {
    "virtualAccountId": "40988",
    "currency": "BRL",
    "status": "INIT",
    "failReason": null
  },
  "traceId": "5b1e7d3c9a2f4e6b5b1e7d3c9a2f4e6b"
}
Keep virtualAccountId — it is the handle for the status query below.

3. Track the result#

Two channels, use both:
Webhook. Subscribe to Open Virtual Account Status. It is delivered when the account reaches a terminal state. Deduplicate on eventId and treat the event as a prompt to query rather than as the source of truth.
Query. Call Get VA Detail (GET /v1/virtual-account/sub/get) with the virtualAccountId from the create response. Keep a scheduled query as a fallback in case a webhook is delayed or missed.
statusMeaningMerchant action
INITApplication accepted, not yet submitted for reviewWait
PROCESSINGAccount under reviewWait
SUCCESSAccount created and usablePIX key and QR code are available; the account may now receive funds
FAILApplication rejected, or account creation failedRead failReason, correct, submit a new application
At SUCCESS the account carries pixKeyType, pixKey, qrCode and qrCodeImage. These are absent at every earlier status.
Review turnaround is measured in business days, not seconds. Do not block a user-facing request on the outcome, and do not instruct anyone to remit funds before SUCCESS.

4. Differences from VND opening#

BRLVND
Profile size4 fields (individual) / 2 fields plus companyName (company)12 fields (individual) / company profile, documents and persons (company)
DocumentsNoneRequired for a company application, referenced by fileId
File upload stepNot usedRequired before a company application
People behind the companyNot collectedpersons[], exactly one legal representative
Receiving details at SUCCESSPIX key and QR codeBank account details
Both currencies share the same endpoint, the same envelope, the same four statuses, and the same rule that a 200 is an accepted application rather than a usable account.
Previous
VND VA Opening
Next
Wallet · Transfer
Built with