BPN OpenAPI
  1. Account Management
BPN OpenAPI
  • Getting Started
    • Introduction to BPN
    • Key Concepts & Terminology
    • Architecture Overview
  • Onboarding & Prerequisites
    • Product Demo
    • Sandbox & Test Environment
    • Signature Authentication Mechanism
  • Use Case
    • Transfer
    • Vault
    • On/Off Ramp
    • Compliance (Travel Rule Information Submission)
    • Fiat Collection(BRL PIX for example)
  • API Reference
    • Account Management
      • Inquiry Master VA Balance
        GET
      • Create Virtaul Account
        POST
      • Get Virtual Account Detail
        GET
      • List Virtual Account
        GET
      • Send Email Verify Code
        POST
      • Query bank info by account number
        POST
      • Payout via Virtual Account
        POST
      • Refund Virtual Account Order
        POST
      • Get Virtual Account Order Detail
        GET
      • List Virtual Account Orders
        GET
      • Submit Invoice
        POST
      • Get Invoice list Status
        GET
      • List Banks
        GET
      • Add Bank Account
        POST
      • List Bank Account
        GET
      • List RFI Sub Virtual Account
        GET
      • Get Sub Virtual Account RFI Template Info
        GET
      • Sub Virtual Account Submit RFI
        POST
    • Wallet
      • List Wallets
      • List Sub Account
      • Create Sub Account
      • Wallet Internal Transfer
      • Get Asset Balance
      • Get Deposit Address
      • Add Deposit Sender
      • Add Withdraw Whitelist
      • Delete Withdraw Whiltelist
      • Request Withdraw
      • Query Transaction History
    • FX
      • Inquery FX Rate
    • BPN Transactions
      • Get Stablecoin Quote
      • Create Stable Order
      • Get Order (Single) Detail
      • List Orders(Batch)
    • Reconciliation
      • Get Reconciliation Order List By Page
    • Crypto Payment Link
      • Create Payment Link
      • List Payment links
      • Get Curreny Network Config
    • Mock
      • Mock Virtual account Payin Order
  • Webhooks & Events
    • 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
  • Appendix
    • Enum
    • Virtual Account(VA) Support List & KYB requirement
  • Release Notes & Changelog
    • Version History
  • Schemas
    • walletBalance
    • walletAddress
    • transactionRecord
  1. Account Management

Add Bank Account

POST
/v1/account/add-account
Use this endpoint to maintain a fiat account that will be used as either a payer (debit/outgoing) account or a beneficiary (credit/incoming) account.
Important: this API is for fiat rails only (e.g., PIX, local bank, SEPA, SWIFT). It is not for crypto addresses or on-chain wallets.

What it’s for#

Transfer flow
• Add your payer account so we can validate ownership and accept funds from you.
• Add your beneficiary account so we can off-ramp and deliver the converted fiat to the right destination.
Sell flow
• Add your beneficiary account to receive the fiat proceeds after the sale.
Please note: The beneficiary account for these two flows can be the same, meaning you only need to maintain one account to use it in multiple places.

Scope & variability#

We support multiple payment networks and corridors (e.g., PIX/BR, SEPA/EU, SWIFT/global, and other local rails). The required fields change dynamically by networkType and country:
• Example:
BRL(PIX)
USD(SWIFT)
EUR(SEPA)
CNPJ or CPF: A unique identifier for users or merchants in Brazil.
PIX Key: Used for receiving and making payments, supporting information such as email, phone number, or CNPJ.
Account Holder Name: Client KYB/KYC name.

Validation & compliance#

1.
BPN verifies:
2.
Ownership / name match (payer side) to reduce third-party risk.
3.
Format & network consistency (e.g., IBAN structure, bank code validity, currency–country alignment).
4.
Eligibility of the rail for incoming/outgoing payments on the specified corridor.
5.
Depending on corridor, we may require additional data to support Travel Rule / payer information capture and internal compliance checks.

Rules & best practices#

1.
You can store multiple payer and beneficiary accounts per merchant.
2.
Use accountType to indicate whether you are adding a PAYER or BENEFICIARY account.
3.
Use networkType (e.g., PIX, SEPA, SWIFT, LOCAL) and country / currency to select the rail; the API will enforce the correct field set for accountInfo.
4.
Add accounts before you request a transfer/sell; downstream transactions reference accountId only.
5.
For payer accounts, ensure the legal name and document ID match your onboarding/KYB/KYC records; mismatches may be rejected.

Typical flow#

1
First Step
Merchant calls Add Account to register payer/beneficiary details for a given rail.
2
Second Step
BPN validates the data and returns a unique accountId with status.
3
Third Step
Merchant reuses accountId when calling Transfer Estimation / Confirm Transfer (payer & beneficiary) or Sell (beneficiary).

Request

Body Params application/json

Examples
{
    "networkType": "PIX",
    "accountType": "payer",
    "country": "BR",
    "currency": "BRL",
    "externalAccountId": "EX1231",
    "accountInfo": {
        "accountHolderName": "Test Account111",
        "pixKey": "XXXXXXXX",
        "cpfOrCnpj": "1234567890998111",
        "bankCode": "001",
    }
}

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 --request POST '/v1/account/add-account' \
--header 'Content-Type: application/json' \
--data-raw '{
    "networkType": "PIX",
    "accountType": "payer",
    "country": "BR",
    "currency": "BRL",
    "externalAccountId": "EX1231",
    "accountInfo": {
        "accountHolderName": "Test Account111",
        "pixKey": "XXXXXXXX",
        "cpfOrCnpj": "1234567890998111",
        "bankCode": "001",
    }
}'

Responses

🟢200OK
application/json
Body

Example
{
    "status": 200,
    "data": {
        "accountId": "13",
        "externalAccountId": "EX1231",
        "bindStatus": "ad aliqua"
    },
    "traceId": "35"
}
Previous
List Banks
Next
List Bank Account
Built with