Quickstart

This guide takes you from an API key to a fully reconciled payment. Everything here works with a test-mode key (zero real money). Create your key in the Xental dashboard; a live key becomes available once your account is approved there.

1. Get a bearer token

Create an API key in the dashboard, then exchange its client id + secret for a short-lived bearer token.

cURL
curl -X POST "https://api.xental.online/api/v1/auth/token" \
  -H "Content-Type: application/json" \
  -d '{ "clientId": "xnt_test_...", "clientSecret": "sk_test_..." }'

2. Provision a virtual account

Create a persistent NUBAN for a customer, optionally with an expected amount (in kobo).

cURL
curl -X POST "https://api.xental.online/api/v1/virtual-accounts" \
  -H "Authorization: Bearer <API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{ "accountRef": "inv_001", "name": "Ada Lovelace", "expectedAmountKobo": 500000 }'

3. Simulate a payment (test mode)

Rather than making a real bank transfer, drive the real reconciliation engine with the sandbox simulator — zero money, same code path as a live webhook.

cURL
curl -X POST "https://api.xental.online/api/v1/sandbox/simulate/deposit" \
  -H "Authorization: Bearer <API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{ "accountRef": "inv_001", "amountKobo": 500000 }'

The response reports reconciliation and paymentState (e.g. FullyPaid). Fetch the account any time to see its balance:

cURL
curl "https://api.xental.online/api/v1/virtual-accounts/inv_001" \
  -H "Authorization: Bearer <API_TOKEN>"

4. Receive events

Register a webhook endpoint to receive signed, pre-reconcileddeposit.reconciled events, or open a Live Checkout stream to show a payer “Payment received ✓” in real time.

Next steps