Base URL
There is no sandbox
Vibepay moves real employer money into real employees’ wallets, and every charge produces a real VAT receipt filed with the Mongolian tax authority. A simulated environment would not exercise the parts most likely to break your integration — the tax pipeline, spend rules, and settlement — so we do not offer one that would give you false confidence. Test against production with small amounts and reverse them. Reversal is complete: the customer’s balance is restored, the VAT receipt is cancelled at the tax authority, and if the charge had already been paid out to you it is netted off your next payout. Nothing is left behind.1
Charge ₮100 against a real pass
A colleague with a Vibepay card is the easiest test subject.
2
Confirm it landed
GET /v1/transactions?limit=1 should show it, and it should appear in your merchant dashboard.3
Reverse it
POST /v1/transactions/{txID}/reverse → 204. Check the balance is restored.4
Come back later and check the receipt
Within a few minutes
vatStatus should read issued and then voided once the reversal has
propagated. That confirms the tax leg of your integration, which is the half most people
forget to check.Rate limits
The API accepts roughly 100 requests per second sustained, with a burst allowance of 200. A429 looks like this:
Idempotency-Key — otherwise the retry is a second, separate payment. See
Idempotency.
In practice a till makes a handful of requests per customer, so a normal POS never approaches this
limit. If you are hitting it, you are almost certainly polling GET /v1/transactions in a tight
loop — poll every 30 seconds or so instead.
Timeouts and retries
Set your HTTP client’s timeout to around 30 seconds. A charge is a database write, not a
long-running job, and anything slower than that is a problem worth surfacing to the cashier.

