Your system,
your rules.
Recurring billing that works with the system you already run, whether that is a CRM, a headless store or your own platform. Plug in by API, act on events, and keep your own customer record.
subscription.createdsubscription startedsubscription.renewedrenewal chargedsubscription.payment_failedrenewal declinedsubscription.updatedsubscription changedsubscription.cancelledcancelled
From first charge to every renewal.
Four parts, each one yours to control.
Create your products
Each product has a price and a billing interval, up to once a year, and belongs to your business.
Start on the first charge
When your store's first charge names a subscription product, the subscription starts. Send the shopper's agreement (how they agreed, the wording shown, and when) and it is kept with the subscription.
Renew on your schedule
Renewals run on each product's interval. If one is declined, it retries on the days you choose, then the subscription is marked failed.
Your systems hear everything
Five events go to your endpoint, so your CRM, store and reports stay in step without polling.
You keep the record. We run the renewals.
Your store, CRM and reports stay where they are. They call Subscriptions by API, and every change comes back to them as an event.
- Your store
- Your CRM
- Your reports
- Products and prices
- Renewals on schedule
- Retries on your days
- Their own subscription page
- Emails in your name
// WHAT YOU GET
Built for teams that own their stack.
Works with what you run
Your CRM, a headless store or your own platform keeps its own customer record. Subscriptions plug in by API and report back with events.
Consent kept with the subscription
Send how the shopper agreed, the wording they saw and when. It is stored with the subscription, ready when a question comes up.
Retries on days you pick
Choose the days a declined renewal is retried. The default is 3, 5 and 7 days after the bill date. Declines a retry cannot fix stop at once.
A page for your customers
Customers open their page from a single-use link we email them, with no password to forget. They can view, pause, resume or cancel, see their receipts, and reach your support contact.
Five events
subscription.created, .renewed, .payment_failed, .updated and .cancelled, delivered to your endpoint.
Manage it by API or with AI tools
The Node and Python SDKs include the subscription calls. Our MCP server lets AI tools manage them too; on a live key, every change waits for a person to approve it.
Every subscription, one search away.
Your team finds any customer by name, email or order number, filters by status, and opens a subscription to see its charges and history.
Retries on the days you pick.
A declined renewal is not the end of the subscription. It is retried on your schedule, and you and your customer both hear about it.
- Bill dateRenewal declinedYour systems get an event. Your customer gets a note with a link to their page
- Day 3RetryApproved? It renews
- Day 5RetryApproved? It renews
- Day 7Last retryApproved? It renews
- AfterMarked failedNo more retries. It stops renewing
No password. No support ticket to pause.
Customers open their subscription from a single-use link we email them. They can pause, resume or cancel on their own and see their receipts. Your support contact is right there when they need a person.
The same API as your payments.
One call starts a subscription: the first charge names a subscription product. The Node and Python SDKs include every subscription call.
import { VonPayCheckout } from "@vonpay/checkout-node";
const vonpay = new VonPayCheckout(process.env.VON_PAY_SECRET_KEY!);
const intent = await vonpay.paymentIntents.create(
{
paymentMethod: { id: "vp_pmt_test_example" },
buyerEmail: "buyer@example.com",
buyerIpAddress: "203.0.113.7",
recurring: {
product: "vsprod_test_example",
consent: {
method: "checkbox",
disclosureShown: "Renews every month until you cancel.",
},
},
},
{ idempotencyKey: "signup_example_1" },
);
console.log(intent.subscription?.id);What teams ask first.
- What does it cost?
- Pricing depends on your business. Talk to us and we will walk you through it.
- Do I have to replace my CRM or my store?
- No. Your system keeps its own customer record. Subscriptions run on our side by API and tell your system what happened through events.
- Do my products have to live in two places?
- Your CRM or store keeps its own products and plans. In Von you set each subscription product's price and how often it bills, and give it your store's product number. Your developer can use that number in place of the Von product id, so both systems point at the same product. The price is set in Von, not read from your CRM.
- How does a subscription start?
- A subscription starts when your store's first charge names a subscription product. If your store sends the shopper's agreement (how they agreed, the wording shown, and when), it is kept with the subscription.
- What happens when a renewal is declined?
- It is retried on the days you choose. A decline a retry cannot fix is not retried. Your customer gets one note per billing period with a link to their subscription page. If every retry fails, the subscription is marked failed.
- Do you email my customers?
- Yes, in your business's name: a confirmation when they sign up, a receipt after each renewal (you can turn receipts off), a note when a renewal is declined, and a confirmation when they cancel.
- What can my customers do on their own?
- From their subscription page they can view their subscription and receipts, pause it, resume it or cancel it. The page shows your support contact for anything else.
Running subscriptions on your own stack?
Tell us about your business. We will walk you through pricing and get you set up.