Build your payment integration once.
Use the Anakalice API to create payments, receive payment updates, manage refunds and work with connected payment providers through one interface.
curl https://api.anakalice.com/v1/payments \
-H "Authorization: Bearer sk_test_..." \
-H "Idempotency-Key: order_10432" \
-H "Content-Type: application/json" \
-d '{
"amount": 150000,
"currency": "NGN",
"customer_email": "buyer@example.com",
"merchant_reference": "order_10432"
}'{
"payment": {
"id": "akl_9f2c...",
"status": "CREATED",
"amount": 150000,
"currency": "NGN",
"provider": "your-provider",
"checkout_url": "https://checkout.provider.com/...",
"merchant_reference": "order_10432",
"created_at": "2026-08-28T12:00:00.000Z"
}
}Everything you need, nothing you do not.
Authentication
Bearer secret keys, separated by environment. Test keys never touch live data. Keys are shown once and can be rotated or revoked.
Idempotency
Send an Idempotency-Key on creates. Repeating a request returns the original result instead of creating a duplicate.
Payments
Create a payment and receive a hosted checkout URL. Track it through a formal state model as provider events arrive.
Webhooks
Signed with HMAC-SHA256 over the exact raw body, delivered durably with retries and a dead-letter path, and identified by a stable event id.
Refunds
Full or partial, idempotent, and marked settled only on the provider's confirmation.
Sandbox
A full test environment. Build and integrate end to end before anything touches live money.
Verify once, trust every event.
Inbound provider webhooks are verified and de-duplicated by Anakalice. Your endpoint verifies our signature the same way.
// Verify an inbound Anakalice webhook (Node)
import crypto from "node:crypto";
const signature = req.headers["x-anakalice-signature"];
const expected = crypto
.createHmac("sha256", endpointSecret)
.update(rawBody)
.digest("hex");
if (signature !== expected) return res.status(400).end();
// de-duplicate on X-Anakalice-Event-ID, then processA small, predictable surface.
Amounts are integers in the currency's minor units. See the full reference in the docs.
Start with the sandbox.
Create an account, get test keys, and make your first payment.
