Subscriptions
With Subscriptions, Von Payments runs the repeat billing for you. You sell a product with a price and a schedule. The customer's first payment starts the subscription. After that, we charge the same card on the schedule, retry a declined renewal, email the customer, and give them a page where they can pause or cancel.
You run no scheduler and send no repeat charges yourself. Your server follows each change through events.
| Page | For |
|---|---|
| Set up Subscriptions | The business: switch it on, add a product, set the retry days, test, go live. |
| Day to day | Your team: what to check each day and week, and what each exception means. |
| Integration guide | The developer: show the terms, start the subscription with the first charge, follow the events, manage subscriptions by API. |
| Reference | The subscription object, every call, the events, the error codes and the SDK methods. |
Who can use it
Von Payments switches Subscriptions on for each business. Your business needs a merchant account and Vora, our payment routing, and a saved customer support contact. Ask Von Payments support to switch it on. See Set up Subscriptions.
How a subscription runs
- You create a product in your dashboard: its name, renewal price, currency and how often it renews (every 1 to 365 days, 1 to 52 weeks, or 1 to 12 months).
- The customer agrees at your checkout. Your page shows the terms next to the order button, and their card is saved in their browser.
- The first charge starts the subscription. Your server charges the card with the product named in
recurring. Once that charge succeeds, the subscription (vsub_…) exists and isactive. - We renew it on the schedule. Each renewal charges the same card at the product's price, as a merchant-initiated charge that the card networks know is part of a recurring series.
- A declined renewal is retried. By default we retry 3, 5 and 7 days after the bill date. You can change the retry days. After the last retry, the subscription ends as
failed. A decline that a retry cannot fix ends it at once. - The customer or your team can pause, resume or cancel it. A cancel at the end of the paid period keeps what the customer paid for and charges nothing more.
- Your systems can change it through the API: skip a renewal, move the next charge, change how often it renews or its price, or add a discount.
Statuses
| Status | Meaning |
|---|---|
active | Renews on its schedule. |
past_due | A renewal was declined. We retry it on your retry days. |
paused | No renewals until it is resumed, by a person or on its resumes_on date. |
held | A renewal was stopped before it reached the bank, for example by your routing rules. It waits in your dashboard's Exceptions until someone fixes the reason. |
cancelled, failed, expired, gdpr_cancelled | Ended. Nothing more is charged. gdpr_cancelled means it was cancelled because the customer's data was erased. |
How a subscription moves between them:
Ended stands for every ended status. A cancel, by the customer, your team or your code, ends an active, past_due, paused or held subscription. A subscription is also cancelled after a chargeback, or when the card's permission for repeat charges is withdrawn. A resume always returns to active, also from a pause that began in past_due.
More statuses may be added. Handle a status you do not know as "do not grant new access".
What your customers see
Emails. We email the customer from subscriptions@vonpay.com, under your business name, and replies go to your support email. The customer gets:
- a sign-up confirmation;
- a receipt after each renewal (you can switch these off);
- a note when a renewal is declined, once per billing period, with a link to their subscription page;
- a confirmation when they cancel, or schedule a cancel;
- a notice before a change that bills them sooner or more often.
Their subscription page. Each customer has a page for their own subscription. See an example of it. They reach it with a single-use link: from one of our emails, from a Manage my subscription button on your website, or by asking for a link by email. On the page they can:
- pause an active subscription, and resume it;
- cancel it (an active subscription stays paid until the end of the period);
- undo a cancel they scheduled;
- see their receipts;
- contact you, through the Contact box with your support contact.
Events
Five webhook events tell your server about each change: subscription.created, subscription.renewed, subscription.payment_failed, subscription.cancelled and subscription.updated. Select them by name on your endpoint. See Events.
Choose your approach
Who runs the renewals
| Von Payments runs them (Subscriptions) | You run them (saved cards) | |
|---|---|---|
| You build | A product in your dashboard, the terms at your checkout, one sign-up charge, and your event handling. | Your own scheduler, the card-saving consent, and every renewal charge. |
| Declined renewals | We retry on your retry days. | Your code decides. |
| Customer emails and page | Ours, under your business name. | Your own. |
| Best when | Each product has a set price on a set schedule. You can still change the price, date or interval later. | The amount or timing changes from one charge to the next, or you already run your own billing. |
Already billing saved cards yourself? Nothing changes: your scheduler and your mit charges stay as they are. See Saving a card and charging it later. Before your own system renews a card, read subscription_billing.enabled and renew only when it is false, so the two never charge the same customer.
How customers manage their subscription
| Option | What you build | What the customer does |
|---|---|---|
| Our emails | Nothing. | Opens the link in one of our emails, such as the note about a declined renewal. |
| Manage button on your website | Paste the button from Subscriptions › Settings › Manage button. No code. | Enters the email they subscribed with, and gets a link that works for one hour. |
| A button in your own account page | One call from your server each time the button is pressed. | Is already signed in to your site, so their page opens at once. |
On their page, the customer can pause, resume or cancel. To change anything else, such as the price or the next bill date, your systems call the subscription API.