Bill your customers for plans, usage, and one-time charges through one API

Charge your customers for one-time purchases, subscriptions, and metered usage, while Conjoin Billing creates each invoice and calculates the tax where you turn it on.

Connect a billing entity once and charge customers through its payment processor

When you create a billing entity, Conjoin connects it to the payment processor that serves the entity's jurisdiction and sends every payment for that entity through that processor. Through the same SDK, you can charge a one-time payment, start a subscription with a trial period, or record metered usage. When a payment fails, Billing tries the charge again on a schedule that you set through the entity's smart retry settings.

Charge for the Pro plan

Agent is ready

What Billing does between your checkout and your payment processor

Price Bundles

Group recurring, one-time, and metered prices into a named bundle. When you bill a customer for that bundle, Billing creates the subscriptions, applies the discounts, and generates the invoices from one API call.

Multi-provider routing

Billing routes each payment to the processor for your billing entity's jurisdiction, so two entities in different jurisdictions can charge through different processors with the same code.

Payment processing

Accept credit cards, debit cards, Apple Pay, Google Pay, and the local payment methods that Billing supports in your customer's region.

Checkout sessions

Create a checkout session that Conjoin hosts, or build your own checkout screen on the session API. In either case, Billing collects the payment details, applies a bundle or individual prices, and confirms the payment in the same flow.

Billing entity management

A billing entity is the company or the person who collects the payments. Billing stores the processor credentials of each entity, along with its payment, invoicing, and tax settings.

Subscription management

Create recurring plans with tiered pricing. Billing prorates each change of plan and retries a renewal payment that fails.

Trials and pausing

Start a subscription with a trial period of the length that you choose. You can also pause the billing of a subscription and resume it later, so a customer who takes a break keeps the same subscription.

Usage-based billing

Report API calls, storage, or any metric of your own as usage. Billing adds up the usage for each billing period and prices it per unit or in tiers.

Invoice generation

Billing generates a PDF invoice with the line items, the discounts, and your branding, then emails it to the customer.

Dunning management

When a payment fails, Billing schedules each retry from the retry strategy and the retry limit that you set. Billing also emails customers before their card expires and gives them a grace period before it cancels the subscription.

Refund handling

Issue a full or a partial refund through the API with a reason code. Billing emails the customer once the processor completes the refund.

Tax calculation

When you turn on tax calculation for a billing entity, Billing applies the tax rate of each jurisdiction to its transactions. The tax engine also calculates compound taxes, applies cross-border rules, and picks up the rate changes that a jurisdiction schedules for a future date.

Webhook events

Billing sends a webhook to the endpoint that you configure as soon as a payment, a subscription, an invoice, or a tax record changes.

API-first state

Query the status of a subscription, its usage, and a customer's billing history through the API at any time. Billing returns the current state on every request, so your application can recover from a webhook that it misses.

Free renewal invoices

When Billing raises an invoice on its own for a subscription renewal, Conjoin leaves that invoice out of your invoice allowance.

Count-based pricing

Conjoin charges you for Billing by the number of invoices and tax calculations, never as a percentage of your revenue.

0%
Revenue share

Conjoin charges for Billing by invoice and tax calculation

1 call
Bundle billing

Subscriptions, discounts, and invoices from one API call

PCI DSS
Compliance

Only PCI DSS compliant processors receive card numbers

Build faster with solutions designed for real-world needs

Bill a seat plan, a setup fee, and metered usage from one bundle

Define a price bundle that contains the monthly subscription, the one-time setup fee, and the metered usage price. Within that bundle, mark each optional add-on with required: false. At checkout, pass the bundle reference and any quantity overrides. Billing then creates the subscriptions, charges the one-time items, attaches the usage meters, and applies any coupon on the bundle, all within that one request.

Impact

In the sample, when a customer clicks Start subscription on the Westmere Analytics pricing page, the server makes one activate call for the Growth plan with 25 editor seats. That call returns the subscription ID, which the pricing route then passes to the welcome route.

Prompt for a coding agent: Start the Growth plan with 25 editor seats, the onboarding fee, and metered API usage in one checkout.

Conjoin IDE

Select a file to view its contents

Charge a card with 3D Secure and an emailed receipt in one call

Create a payment intent with the amount, the currency, the payment method, and the email address for the receipt. Billing validates the card and requests 3D Secure authentication when the card issuer requires it. In its response, Billing returns the payment intent ID and the status of the payment, and Billing emails the receipt to the address that you pass.

Impact

In the sample, a server action charges $49 for the Murmur Audio annual plan. Once Billing reports the intent as succeeded, the checkout page sends the customer to the receipt page; for any other status, the server action returns an error code, which the page shows below the pay button.

Prompt for a coding agent: Charge $49 for the annual plan, email the receipt, and send the customer to the receipt page.

Conjoin IDE

Select a file to view its contents

Let customers pause and resume on the same plan

When you pause a subscription, Billing stops charging the customer and leaves the plan, the payment method, and the subscription ID as they are. Billing restarts the charges on that same subscription when you call resume, so the customer returns to the same plan and the same saved card.

Impact

In the sample, Adwoa can tap Pause until August on the Folkmoor Pilates membership screen to pause their membership, and can tap Resume classes on the same button to restart it. Behind that button, an API route on the server calls pause or resume on the same subscription ID, so the Conjoin API key stays off the phone.

Prompt for a coding agent: Let members pause their membership until August, and resume it from the same button.

Conjoin IDE

Select a file to view its contents

Move a customer to a new plan in the middle of a billing cycle

When you update a subscription with a new price ID, Billing credits the unused time on the old plan and charges for the rest of the cycle on the new plan. Set the proration_behavior parameter to choose whether Billing adds that difference to the next invoice or invoices it at once.

Impact

When Tunde Bankole moves Marrowfen Reporting from Starter to Scale, the server function swaps the two plans in a single updatePlans call. It then adds up amount_after_taxes across the plans in the response, so the account page can show the new monthly total.

Prompt for a coding agent: Move this account from Starter to Scale, and show the new monthly total on the account page.

Conjoin IDE

Select a file to view its contents

Retry failed payments and warn customers before their card expires

Turn on smart retries for your billing entity, then choose a retry strategy, a maximum number of retries, and the number of days over which Billing keeps retrying. Billing also emails each customer before their card expires and again after a payment fails, asking them to update their details before the subscription lapses.

Impact

Billing schedules the retries and sends the emails, so your code only has to respond to the subscription status that Billing reports through the API or a webhook.

Common questions about Conjoin Billing

Build your next app on Conjoin

Conjoin will open with a free Build tier, while the pricing page already lists the launch prices for Pro and Business. If you tell us what you're building, we'll talk you through early access.