// VORA SUBSCRIPTIONS

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.

POST https://your-store.example/webhooks
  • subscription.createdsubscription started
  • subscription.renewedrenewal charged
  • subscription.payment_failedrenewal declined
  • subscription.updatedsubscription changed
  • subscription.cancelledcancelled
Your CRM, your store and your reports act on each one.
// HOW IT WORKS

From first charge to every renewal.

Four parts, each one yours to control.

STEP01

Create your products

Each product has a price and a billing interval, up to once a year, and belongs to your business.

STEP02

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.

STEP03

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.

STEP04

Your systems hear everything

Five events go to your endpoint, so your CRM, store and reports stay in step without polling.

// HOW IT FITS

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.

// You run
  • Your store
  • Your CRM
  • Your reports
// Subscriptions runs
  • Products and prices
  • Renewals on schedule
  • Retries on your days
// Your customers get
  • Their own subscription page
  • Emails in your name
Your systems keep their own records. Subscriptions reports every change back as one of five events.

// 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.

// FOR YOUR TEAM

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.

Your team searches and filters every subscription, and opens one to see its charges and history.
// WHEN A RENEWAL IS DECLINED

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.

  1. Bill dateRenewal declinedYour systems get an event. Your customer gets a note with a link to their page
  2. Day 3RetryApproved? It renews
  3. Day 5RetryApproved? It renews
  4. Day 7Last retryApproved? It renews
  5. AfterMarked failedNo more retries. It stops renewing
Your days. 3, 5 and 7 days are the default. Pick your own.No pointless retries. A decline a retry cannot fix stops at once.
// FOR YOUR CUSTOMERS

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.

Example
Customers open this page from a single-use link we email them. They can pause or cancel, see their plan, card on file and receipts, and contact the store.
// FOR DEVELOPERS

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.

signup.tsNode
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);
The first charge names a subscription product, and the subscription starts. Run it on your server; never put the secret key in a browser. The Python SDK takes the same fields.
// COMMON QUESTIONS

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.
// TALK TO US

Running subscriptions on your own stack?

Tell us about your business. We will walk you through pricing and get you set up.