Quick Start Snippet
// LakiPay core flow: checkout -> webhook -> reconciliation
const apiKey = process.env.LAKIPAY_API_KEY; // "PUBLICKEY:SECRETKEY"
const baseUrl = "https://api.lakipay.co";
const checkout = await fetch(`${baseUrl}/api/v2/payment/checkout`, {
method: "POST", headers: { "Content-Type": "application/json", "X-API-Key": apiKey },
body: JSON.stringify({ amount: 125.00, currency: "ETB", reference: "ORDER_4821", supported_mediums: ["TELEBIRR","MPESA","CBE"], callback_url: "https://merchant.com/webhooks/lakipay", redirects: { success: "https://merchant.com/success", failed: "https://merchant.com/failed" } })
});
const payload = await checkout.json(); // payment_url + lakipay_transaction_id
const txn = await fetch(`${baseUrl}/api/v2/payment/transaction/${payload.data?.lakipay_transaction_id}`);
Docs & Endpoints
POST /api/v2/payment/checkout
Create a hosted checkout session and get payment_url + lakipay_transaction_id.
GET /api/v2/payment/transaction/{id}
Retrieve transaction status, amount, reference, and provider details.
Tip Use callback_url for webhook updates and poll GET /api/v2/payment/transaction/{id} only when needed (e.g., reconciliation, retries, or delayed settlement).