MIT
Card on file
The classic renewal. Fast, and the widest reach.
- First charge is SCA-authenticated, then stored
- Renewals run as merchant-initiated transactions
- Network tokens keep expired cards billing
- Decline reasons come back coded, not guessed
Most subscription revenue is not lost at signup. It leaks later, at the renewal. A card expires. A mandate lapses. A bank declines for a reason nobody reads. BazPay bills EU subscribers on cards, SEPA Direct Debit and open banking through one API. Mandates, retries and dunning sit inside the gateway. Your app just listens for the webhook.
EU payers do not all pay the same way. Pick the rail per plan, per country, or per payer. The billing logic above it stays identical.
MIT
The classic renewal. Fast, and the widest reach.
Mandate
Lower cost per charge. Best for long contracts.
Account-to-account
For renewals a payer prefers to approve each time.
A blind retry loop annoys issuers and burns your attempt budget. Our engine reads the decline code first. Soft declines get another try. Hard declines stop at once and go to email.
Every attempt is logged with its code. You can see which issuers decline most, and when.
Track renewals in the dashboard| Decline reason | Class | Next action |
|---|---|---|
| Insufficient funds | Soft decline | Retry on a schedule tuned to payday cycles |
| Card expired | Soft decline | Try the network token, then ask the payer to update |
| Do not honour | Soft decline | Retry within the scheme's attempt limit, then escalate |
| Stolen or lost card | Hard decline | Stop retrying. Email the payer for a new method |
| Mandate cancelled | Return code | Pause the subscription and flag it in the dashboard |
Attempt limits are set by the card schemes. We stay inside them and never add attempts of our own.
Four states. Each one fires a webhook the moment it changes.
The payer authenticates once. We store a token or a mandate, never raw card data.
Charges run on your billing date. Proration is worked out for you.
Soft declines go into retry. Hard declines go straight to dunning email.
Upgrades, pauses and cancellations post back the same day they happen.
Recurring payments in the EU are governed work. These four points decide whether a charge goes through.
The first charge carries strong customer authentication. Later renewals run as MIT. That is what the rules expect.
We store the mandate reference, signing date and payer details. Your database never has to.
BazPay holds PCI DSS Level 1 on the gateway. You keep SAQ A and zero card-data scope.
We underwrite low-risk merchants. Subscription approval rates stay steady because the book stays clean.
Fraud checks run on renewals too. See the fraud tools and the checkout options for the pieces either side of billing.
Migrating an existing book of subscribers? Write to [email protected] and we will map your plans before you move a single payer.
Check plugin coverage firstYes. A plan can hold more than one payment method per payer. If the card fails, you can fall back to the mandate. The billing schedule does not change.
We do not set the ceiling. Card schemes cap the number of attempts per declined transaction. Our engine stays inside that cap and stops early on hard declines.
No. Plans, proration, trials and invoices run inside BazPay. Webhooks push every state change to your app, so your database can stay thin.
The engine tries the network token first. Many issuers update it silently. If that fails, dunning takes over and asks the payer for a new card.
All the major EU carts and CMS platforms. Most merchants go live in days. There is no long custom build for a standard subscription flow.
Build a full billing cycle against the live API today. No card needed, and no sales call first.