ShegerPay for SaaS
Quick Answer: SaaS companies use ShegerPay to verify recurring CBE, Telebirr, PayPal, Visa, and USDT subscription payments via webhook-driven renewal events. Because ShegerPay is non-custodial, funds settle to your accounts instantly — no T+3 settlement delay distorting your MRR, no merchant license, no take-rate on every renewal.
The problem SaaS founders face today
Running a SaaS business out of Ethiopia (or serving Ethiopian customers from abroad) means recurring billing is broken by default. Stripe doesn't operate locally. Chapa and Santimpay don't speak the international rails your diaspora customers use. So you end up stitching together three half-solutions: a Telebirr lookup script, a manual PayPal IPN parser, and a Google Sheet for everyone who paid by bank transfer.
The pain compounds with subscriptions. Every renewal is a fresh verification. Miss one and a paying customer loses access — your support inbox lights up, churn metrics lie, and your MRR dashboard shows numbers that don't match the bank. When a customer's card declines on month three, you have no dunning workflow, no retry logic, no automated grace period. You're emailing them manually.
Then there's the custody trap. Most processors hold subscription proceeds for 2-7 days before releasing. For a SaaS measuring cash conversion in weeks, that delay distorts MRR reporting and creates artificial cashflow gaps. Worse — if a few customers dispute, the processor can freeze the whole month.
How ShegerPay solves it
ShegerPay attaches a verification webhook to every renewal cycle. When the billing date hits, your scheduler calls ShegerPay; ShegerPay watches the rail; the moment the payment lands, a signed subscription.renewed webhook fires and you flip the customer's access flag. If the rail fails, ShegerPay automatically attempts the next configured rail (CBE → Telebirr → card → USDT) — true multi-rail dunning.
Every customer gets a hosted payment portal (white-labeled to your domain via CNAME) showing their plan, next renewal, past transactions across all rails, and one-click PayPal payout receipts for finance. You stop being the reconciliation department.
Code example
import ShegerPay from '@shegerpay/sdk';
const sp = new ShegerPay({ apiKey: 'sk_test_demo' });
// 1. Create a customer + recurring intent
const customer = await sp.customers.create({
email: '[email protected]',
externalId: 'user_4421',
});
const sub = await sp.subscriptions.create({
customerId: customer.id,
plan: 'pro_monthly',
amount: 29,
currency: 'USD',
interval: 'month',
rails: ['paypal', 'visa', 'usdt_tron', 'telebirr'],
retryPolicy: { attempts: 3, backoffHours: [24, 72, 168] },
webhookUrl: 'https://api.mysaas.com/sp/webhook',
});
// 2. Handle renewal webhooks
app.post('/sp/webhook', (req, res) => {
if (!sp.webhooks.verify(req.rawBody, req.headers['x-shegerpay-signature'])) {
return res.sendStatus(401);
}
const { event, data } = req.body;
switch (event) {
case 'subscription.renewed':
db.users.update(data.externalId, { activeUntil: data.nextRenewalAt });
break;
case 'subscription.payment_failed':
mailer.sendDunning(data.externalId, data.attemptNumber);
break;
case 'subscription.cancelled':
db.users.update(data.externalId, { plan: 'free' });
break;
}
res.json({ ok: true });
});
Why non-custodial matters for SaaS
Custodial processors hold your MRR. That T+3 to T+7 settlement gap is poison for SaaS finance: your dashboard says $48k MRR, your bank shows $31k, and reconciliation eats two days a month. Worse, when one customer files a chargeback, the processor can claw back across all your customers simultaneously.
ShegerPay never holds money. Each renewal lands in your account in real time — PayPal to PayPal, CBE to CBE, USDT to your wallet. Your MRR dashboard matches your bank to the cent. No frozen funds. No settlement delay distorting metrics. And because you're not the merchant of record for held funds, no money-transmitter license required for the SaaS itself.
Workflow features used
- Subscription objects with retry policy
- Multi-rail dunning (CBE → Telebirr → card → USDT)
- Signed webhook events (
renewed,payment_failed,cancelled) - White-labeled customer payment portal
- PayPal payout receipts for finance exports
- Transaction history API across all rails
Pricing fit
Early SaaS (<100 active subs) fits on Free. Once you cross 100 active subscribers with monthly renewals, Starter $9 covers it. Funded SaaS with 1k+ subs lands on Growth $29. SaaS doing enterprise contracts with custom rails (Wise, Payoneer mass payouts) talks to us about Enterprise.
FAQ
Does ShegerPay handle subscription retries automatically?
Yes. Configure retryPolicy and ShegerPay walks the rail fallback chain on each failed attempt.
Can my customers pay in USD even though I'm in Ethiopia? Yes — PayPal, Visa, and USDT all settle directly to your USD-denominated accounts.
How is this different from Stripe Billing? Stripe doesn't operate in Ethiopia. ShegerPay covers the rails Stripe can't (CBE, Telebirr, USDT) plus the ones it does (Visa, PayPal) — non-custodially.
Do I need PCI compliance to use the card rail? No. Card payments are handled by the upstream card processor; ShegerPay only verifies the settlement event.
Can I export MRR data for investors?
Yes — GET /v1/subscriptions/metrics returns MRR, ARR, churn, and net revenue retention as JSON or CSV.
What if a customer wants to switch from PayPal to USDT mid-subscription?
Update the subscription's rails array. Next renewal uses the new ordering.
Related: Pricing · API Docs · ShegerPay vs Chapa · Verify PayPal · Non-custodial payments explained