Collecting payments
Create an invoice, share the payment link, and Propeller collects NGN via NIP bank transfer.
Overview
Payment collection in Propeller is a three-step flow:
- Create an invoice — specify the amount, currency (NGN), and payer details.
- Share the payment link — the end-payer opens it and sees bank transfer details.
- Propeller confirms — you get a webhook when the payment clears.
Create an invoice
curl https://api.withpropeller.com/v1/invoices \ -H "Authorization: Bearer $PROPELLER_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: inv-001" \ -d '{ "business_id": "biz_01J...", "amount": 500000, "currency": "NGN", "description": "Q2 2026 export services", "payer_name": "Adekunle Ojo", "payer_email": "ade@example.com" }'
The response includes:
{
"id": "inv_01J...",
"payment_url": "https://withpropeller.com/pay/inv_01J...",
"status": "pending",
"virtual_account": {
"bank": "Wema Bank",
"account_number": "8012345678",
"account_name": "Acme Exports Ltd"
}
}
Payment link
Share payment_url with the end-payer. The page shows:
- Invoice amount in NGN.
- Bank transfer details (bank, account number, account name).
- A reference code for the transfer narration.
No Propeller account is needed for the end-payer.
End-payer flow
- End-payer opens the link.
- Completes KYC (BVN + selfie for first-time payers above NGN 500k).
- Transfers NGN via their bank app using the provided account number.
- Sees a confirmation screen once Propeller detects the transfer.
Confirmation webhooks
When payment clears, Propeller sends a payment.completed webhook:
{
"event": "payment.completed",
"data": {
"invoice_id": "inv_01J...",
"amount": 500000,
"currency": "NGN",
"paid_at": "2026-05-14T15:30:00Z"
}
}
Last updated · 14 May 2026