Audience: Merchant Open API integrators
Related APIs:
# Document Method Path 1 Create Virtual Account POST/v1/virtual-account/sub/create2 Get VA Detail GET/v1/virtual-account/sub/get3 Open Virtual Account Status Webhook —
Important — A 200response 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 reachesSUCCESS.
documents or persons.{
"primaryAccountId": "10001",
"accountName": "John Doe",
"currency": "BRL",
"accountSubType": "STATIC",
"userType": "Individual",
"individualInfo": {
"firstName": "John",
"lastName": "Doe",
"taxIdNumber": "12345678900",
"residenceCountry": "BR"
}
}| Field | Rule |
|---|---|
primaryAccountId | Master VA the sub account belongs to |
accountName | Name of the account holder. Names the resulting account in queries and reconciliation |
currency | BRL |
accountSubType | STATIC |
userType | Individual |
individualInfo.firstName | Given name |
individualInfo.lastName | Family name |
individualInfo.taxIdNumber | The beneficiary's CPF |
individualInfo.residenceCountry | Country of tax residence, ISO 3166-1 alpha-2 (BR) |
{
"primaryAccountId": "10001",
"currency": "BRL",
"companyName": "Test Company",
"accountSubType": "STATIC",
"userType": "Corporate",
"companyInfo": {
"taxIdNumber": "12345678900",
"incorporatedCountry": "BR"
}
}| Field | Rule |
|---|---|
primaryAccountId | Master VA the sub account belongs to |
currency | BRL |
companyName | Registered legal name. Names the resulting account; the company name is not read from companyInfo |
accountSubType | STATIC |
userType | Corporate |
companyInfo.taxIdNumber | The company's CNPJ |
companyInfo.incorporatedCountry | Country of tax residence, ISO 3166-1 alpha-2 (BR) |
{
"status": 200,
"msg": "OK",
"code": null,
"data": {
"virtualAccountId": "40988",
"currency": "BRL",
"status": "INIT",
"failReason": null
},
"traceId": "5b1e7d3c9a2f4e6b5b1e7d3c9a2f4e6b"
}virtualAccountId — it is the handle for the status query below.eventId and treat the event as a prompt to query rather than as the source of truth.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.status | Meaning | Merchant action |
|---|---|---|
INIT | Application accepted, not yet submitted for review | Wait |
PROCESSING | Account under review | Wait |
SUCCESS | Account created and usable | PIX key and QR code are available; the account may now receive funds |
FAIL | Application rejected, or account creation failed | Read failReason, correct, submit a new application |
SUCCESS the account carries pixKeyType, pixKey, qrCode and qrCodeImage. These are absent at every earlier status.SUCCESS.| BRL | VND | |
|---|---|---|
| Profile size | 4 fields (individual) / 2 fields plus companyName (company) | 12 fields (individual) / company profile, documents and persons (company) |
| Documents | None | Required for a company application, referenced by fileId |
| File upload step | Not used | Required before a company application |
| People behind the company | Not collected | persons[], exactly one legal representative |
Receiving details at SUCCESS | PIX key and QR code | Bank account details |
200 is an accepted application rather than a usable account.