Virtual accounts
Issue account numbers that collect payments into your Payinto account.
A virtual account is a bank account number that settles into one of your Payinto accounts. There are two types.
| Static | Dynamic | |
|---|---|---|
| Best for | Repeat payments from one customer | One expected payment |
| Lifetime | Long-lived | 15 minutes to 24 hours |
| Linked customer | Required | None |
| Expected amount | None | Required |
| Module | static_virtual_accounts | dynamic_virtual_accounts |
Funds settle to your main account unless you send settlement_account_id.
Static virtual accounts
Create the customer first. A merchant_reference is required.
curl https://api.payinto.co/api/v1/business/virtual-accounts/static \
--header "Authorization: Bearer $PAYINTO_SECRET_KEY" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data '{
"customer_id": "0196431a-2f10-7c55-9b20-3d7f6a1e4c11",
"merchant_reference": "customer-10001-va"
}'Dynamic virtual accounts
Send the expected amount and how to treat a different amount with amount_control. See the collections guide for a full example.
| Field | Rules |
|---|---|
amount | Required, in the lowest currency unit |
amount_control | Required: Fixed, UnderPayment, or OverPayment |
valid_for | Optional, from 900 to 86400 seconds |
merchant_reference | Required, up to 64 characters |
metadata | Optional, string values of up to 255 characters |
Read payments
| Endpoint | Returns |
|---|---|
GET /virtual-accounts | All your virtual accounts |
GET /virtual-accounts/{id} | One virtual account |
GET /virtual-accounts/{id}/transactions | Payments to one virtual account, with status, from_date, and to_date filters |
GET /virtual-accounts/transactions/{id} | One payment, by ID |
GET /virtual-accounts/transactions/reference/{reference} | One payment, by Payinto reference |
Lookups for a record that doesn't exist return 400.
Account statuses
A virtual account's status is active, suspended, disabled, completed, or expired.