1. Files
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
        POST
  • Webhooks
    • Webhooks Overview
    • KYB notifications
    • Event catalogue
    • Resend Fail Webhook
      POST
    • 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. Files

Request File Upload URL

Developing
POST
/v1/files/upload-url
Purpose:
General-purpose file upload entry. File bytes never pass through the Open API: you request a short-lived pre-signed URL, PUT the file straight to object storage, and then reference the stored file by fileId in whichever business API accepts a file reference.
How to use:
1.
POST /v1/files/upload-url describing the file you are about to upload. You get back a fileId and a one-shot uploadUrl.
2.
Send the raw file body to the returned uploadUrl with HTTP PUT. The signature is already in the query string — do not send your Open API credentials or any Authorization header.
3.
Finish the PUT before expiresAt (10 minutes from issue). An expired URL cannot be renewed — request a new one and use the new fileId.
4.
Pass fileId to the business API that consumes the file. Example scenario: a VND virtual account onboarding document is uploaded with documentType=VA_ONBOARDING and currency=VND, then referenced in Create Virtual Account (see Guides / Virtual Account / VND Virtual Account Onboarding — Integration Guide).
Notes:
Request one URL per file. uploadUrl and fileId are one-to-one.
A 200 here only means the URL was issued. The file does not exist until your PUT returns 200; a fileId whose object was never uploaded is rejected by the consuming business API, not by this endpoint.
Accepted file types are pdf, jpg, jpeg, png, heic; a single file must be 10 KB – 10 MB. The consuming business API may apply further limits of its own.
fileType and fileSize are declared values. The real type and size are read from the stored object when the file is consumed, and a mismatch is rejected there.
Each fileId is bound to the merchant account that requested it and cannot be referenced by another merchant.

Request

Authorization
API Key
Add parameter in header
API-KEY
Example:
API-KEY: ********************
API Key
Add parameter in header
API-SIGNATURE
Example:
API-SIGNATURE: ********************
API Key
Add parameter in header
API-TIMESTAMP
Example:
API-TIMESTAMP: ********************
or
Body Params application/jsonRequired

Example
{
    "documentType": "VA_ONBOARDING",
    "fileType": "pdf",
    "fileSize": 284517,
    "currency": "VND"
}

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 --location '/v1/files/upload-url' \
--header 'API-KEY: <api-key>' \
--header 'API-SIGNATURE: <api-key>' \
--header 'API-TIMESTAMP: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
    "documentType": "VA_ONBOARDING",
    "fileType": "pdf",
    "fileSize": 284517,
    "currency": "VND"
}'

Responses

🟢200OK
application/json
Success or business error envelope; check status and data.
Bodyapplication/json

Examples
{
    "status": 200,
    "msg": "OK",
    "code": null,
    "data": {
        "fileId": "0f1c9a2e-5b34-4f0e-9a7a-1c2d3e4f5a6b",
        "uploadUrl": "https://s3.ap-southeast-1.amazonaws.com/bpn-files/files/10023/20260915/0f1c9a2e-5b34-4f0e-9a7a-1c2d3e4f5a6b.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260915T070244Z&X-Amz-Expires=600&X-Amz-Signature=3a1f...",
        "expiresAt": "2026-09-15T07:12:44Z"
    },
    "traceId": "8f0a5b8c4e1f4d0e8f0a5b8c4e1f4d0e"
}
Previous
Request Pay Session
Next
Webhooks Overview
Built with