Per-payment records
Every bank transfer to a VA creates its own transaction entry with status, amount, and timing.
Full fee breakdown
Each record shows vendor fee, platform margin, and net amount received — ready for accounting.
Query by VA number
Retrieve all transactions for a specific VA number directly, without filtering by account.
Relationship with Virtual Account
A Virtual Account is the parent — the unique payment instrument with a VA number. Every time a customer pays into it, a VA Transaction child record is created.Example: VA
One Virtual Account → multiple independent transaction records over time.
8890-1234-5678 (Permanent VA for Customer A)| Transaction | Amount | Date |
|---|---|---|
| #1 | IDR 500,000 | Jan 1 |
| #2 | IDR 750,000 | Jan 15 |
| #3 | IDR 300,000 | Feb 1 |
Transaction lifecycle
Payment received
Customer transfers funds to the VA number via ATM, mobile banking, or internet banking. The bank sends a payment notification to Singapay.
Processing
Singapay validates the payment amount, checks for duplicates, and verifies all payment details.
Transaction status
| Status | Description |
|---|---|
unpaid | Payment notification received, pending validation. |
paid | Payment validated and reconciled by Singapay. |
settled | Funds transferred to your account. |
Important notes
Query by VA number
Query by VA number
Beyond listing all transactions for an account, you can query transactions directly by VA number using the dedicated endpoint — useful when you have the VA number from a customer inquiry but not the internal ULID.
Status tracking
Status tracking
Monitor each transaction through its full lifecycle:
unpaid → paid → settled. Use webhook notifications to get real-time updates instead of polling.Fee breakdown per transaction
Fee breakdown per transaction
Every transaction record includes the vendor fee, platform margin, and net amount received — broken down clearly for accounting and reconciliation purposes.
Webhook notifications
Webhook notifications
Configure webhooks to receive real-time
va-transaction events the moment a payment is confirmed — no need to poll the API. See the Webhook documentation for setup details.Filtering and search
Filtering and search
Query transactions by
transaction_id, va_number, status, amount range, settlement status, or timestamp ranges (post_timestamp, processed_timestamp, settle_at). Default sort is newest first.Data retention
Data retention
Transaction records are retained for 1 year. Data older than 1 year is archived and may not be accessible via the API.
Available endpoints
List VA Transactions
Paginated list of all VA transactions for an account with full filter support.
Get VA Transaction Detail
Retrieve a single transaction by its business
transaction_id.List by VA Number
All transactions for a specific VA number, bypassing account-level filtering.
All endpoints require authentication. See Authentication.
