Skip to main content
This walks through the most common integration: giving a customer a dedicated virtual account number, then getting notified the moment they pay into it.
1

Get your API keys

Grab your X-Api-Key and X-Api-Secret from the API Keys page in your merchant dashboard. See Authentication for how they’re used.
2

Set your webhook URL

Go to Webhook Settings in your dashboard and set the URL we should call when a payment comes in, plus note your webhook secret — you’ll use it to verify signatures. See Webhooks for the full payload and verification example.
3

Create a virtual account

Pick a reference yourself — your own order ID or customer ID. You’ll use it (not our internal ID) to look this transaction up later.
The response includes a dedicated account number your customer can transfer into:
4

Show the customer the account number

Display account_number and bank_name to your customer, or the returned details however fits your flow. Any amount they send lands in your wallet.
5

Get notified when they pay

We POST to your webhook URL the moment the transfer clears — no polling required. Verify the X-Webhook-Signature header before trusting the payload; the full example is in Webhooks.
For a virtual account payment like this one, reference is actually the payer’s bank transfer narration — not something you or we generate, and not guaranteed unique. transaction_id is ABCMPay’s own internal ID for the transaction, always unique — use that (not reference) to match the webhook back to your own records. See why the two are different for the full breakdown by endpoint.

Where to next

Virtual Accounts

Full endpoint reference: create, fetch, list.

Collect Payments

Prefer a one-time payment link instead of a dedicated account? Start here.

Payouts

Send money back out to a bank account.

Webhooks

Full payload reference, signature verification, and replay protection.