Developers
Build on recovery-first payments
REST APIs, webhooks, and drop-in SDKs. Test in minutes, go live after KYC.
API Reference
Interactive explorer for merchant-api, public-api, and core-api. ~80 endpoints with test/live mode headers.
ExploreWebhooks
Event catalog with example payloads, Duro-Signature verification guide, and replay tooling.
ExploreSDK Quickstarts
duro.pay() inline popup, hosted checkout, OAuth2 client credentials, and pricing-table embed.
ExploreQuick start
Create a plan, generate a test API key, and charge your first subscription in under ten minutes.
- 1Sign up and complete the onboarding wizard
- 2Create a plan and copy your sk_test_ key from API Keys
- 3POST /v1/subscriptions or drop in duro.pay()
import Duro from '@duro/node';
const duro = new Duro('sk_test_...');
const subscription = await duro.subscriptions.create({
customer: 'cus_...',
plan: 'plan_pro_monthly',
});Webhook events
Subscribe to events in your dashboard or via API. Verify signatures with the Duro-Signature header (t=timestamp,v1=hmac).
subscription.createdsubscription.payment_failedsubscription.recoveredinvoice.paidpayment.succeededcustomer.created
Inline popup SDK
Drop a script tag and call duro.pay() — phone-first identity, WhatsApp OTP, saved methods across merchants, and rail-switch retry built in.
<script src="https://js.duro.ng/v1/"></script>
<script>
duro.pay({ plan: 'plan_pro_monthly', email: 'customer@example.com' });
</script>