Subscriptions
Use subscriptions to bill a customer on a recurring lifecycle instead of collecting a single one-time payment. A correct subscription integration creates or collects the first payment, stores the right Paypercut IDs, listens for server-side events, and keeps product access in sync when renewal payments succeed or fail.
Most first subscription integrations should start with Checkout. Checkout lets Paypercut collect the customer payment details, create the subscription signup flow, and save a reusable payment method for renewal billing.
Access rule A Checkout success redirect is not the production source of truth for access. Use backend-confirmed events and retrieved API objects to decide when to grant, extend, recover, or revoke access.
Start here
How subscriptions work
Learn the object model, actor ownership, billing-period signals, and common misunderstandings. Read more
Choose a flow
Compare Checkout-created subscriptions, direct API creation, and schedules before you build. Read more
Quickstart
Create a subscription with Checkout and handle the minimum server-side events. Read more
Build your integration
Create with Checkout
Use Checkout when the customer needs to enter or confirm payment details. Read more
Create directly
Use the Subscriptions API when your backend already has a customer and reusable payment method. Read more
Webhooks for subscription integrations
Handle Checkout, invoice, and payment events without assuming public subscription event names exist. Read more
Understand billing
Lifecycle and statuses
Understand subscription states before defining access, recovery, and cancellation behavior. Read more
Invoices and payment collection
Use invoice events as the paid-period signal for subscription access and renewal handling. Read more
Subscription schedules
Model advanced phase-based billing such as future starts, intro pricing, and fixed-duration plans. Read more
Operate and troubleshoot
Object map
| Object | What it does | Store this |
|---|---|---|
| Customer | Owns the subscription and reusable payment method. | customer_id and your internal user or account ID. |
| Product / Price | Defines what the customer buys and the recurring amount or interval. | product_id, price_id, and your internal plan ID. |
| Checkout Session | Hosts or embeds the signup flow and links to the created subscription. | checkout_session_id and subscription when returned after completion. |
| Subscription | Represents the recurring billing relationship. | subscription_id, current status, and the internal account it unlocks. |
| Invoice | Represents a billing period and payment collection result. | Relevant invoice_id values for fulfillment, access, and support. |
| Payment / PaymentIntent | Represents payment-level collection and reconciliation details. | Payment identifiers when needed for support or reconciliation. |
| Webhook event | Tells your backend that Checkout, invoice, or payment state changed. | Event ID or delivery ID for idempotency. |
Most integrations should start here
- Create or select a recurring Price for the plan.
- Create a Checkout Session in
subscriptionmode. - Send the customer to Checkout.
- Handle
checkout_session.completedon your backend and retrieve the session. - Store the linked
subscription_id. - Use
invoice.paidto grant or extend access for paid billing periods. - Use
invoice.payment_failedto start recovery and reconcile state.

