Developers

Build on recovery-first payments

REST APIs, webhooks, and drop-in SDKs. Test in minutes, go live after KYC.

Quick start

Create a plan, generate a test API key, and charge your first subscription in under ten minutes.

  1. 1Sign up and complete the onboarding wizard
  2. 2Create a plan and copy your sk_test_ key from API Keys
  3. 3POST /v1/subscriptions or drop in duro.pay()
Get API keys
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>