Apply for a virtual account
The customer's profile of the purpose the bank requires (profile_purpose from GET /virtual-account-banks) must be approved. A customer can have only one application that is not rejected per bank.
The application is returned as submitting and then submitted to the bank; status changes (under_review, opened, rejected and so on) are sent with the virtual_account.status_changed webhook. Once opened, accounts holds the deposit instructions per currency; customer payments are credited to the merchant's cash account when received.
merchantApiKeymerchantTimestampmerchantNoncemerchantSignatureX-API-KEY<token>Merchant API key (starts with upk_, also accepts api-key); signing headers are also required
X-Timestamp<token>Unix timestamp in seconds, within 300 seconds of server time
X-Nonce<token>Unique per request; cannot be reused with the same credential during the timestamp validity window
X-Signature<token>Hex HMAC-SHA256 signature (either letter case) of the method, full path, timestamp, nonce and body digest
customerId*stringCustomer ID (starts with cus_)
application/json- body
bank_id*stringBank ID from GET /virtual-account-banks
currencies*array<string>Currencies the account receives; must be supported by the bank
1 <= itemsApplication created
application/json- response
id*stringVirtual bank account ID (starts with vba_)
customer_id*stringbank_id*stringBank ID, same as id in GET /virtual-account-banks
bank_name*stringcurrencies*array<string>Currencies applied for
status*VirtualAccountStatussubmitting: created, waiting to be submitted to the banksubmit_uncertain: submission result uncertain, being checked by UPPunder_review: in review at the bankopened: opened (final)rejected: rejected (final); you can apply again
"submitting""submit_uncertain""under_review""opened""rejected"reject_reason*|Reason when rejected
accounts*array<>Deposit instructions per currency once opened; empty before that
opened_at*|date-timecreated_at*stringdate-timeupdated_at*stringdate-timecurl -X POST 'https://sandbox.getupp.net/api/v1/customers/string/virtual-accounts' \ -H 'Content-Type: application/json' \ -d '{ "bank_id": "sgb", "currencies": [ "USD", "EUR" ]}'{ "id": "string", "customer_id": "string", "bank_id": "string", "bank_name": "string", "currencies": [ "string" ], "status": "submitting", "reject_reason": "string", "accounts": [ { "currency": "string", "deposit_instrument_id": "string", "details": { "account_name": "string", "account_address": "string", "account_number": "string", "iban": "string", "bank_name": "string", "bank_country": "string", "bank_address": "string", "swift_code": "string", "intermediary_bank_name": "string", "intermediary_swift_code": "string", "intermediary_bank_address": "string", "routing": [ { "type": "string", "code_type": "string", "code": "string" } ] } } ], "opened_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z"}