OpenBilling

API Reference

Readable reference for OpenBilling's shared billing contracts, normalized events, and provider config types.

API Reference

This page describes the current public TypeScript surface by intent, not as a generated symbol dump.

Core types

BillingProvider

The shared interface implemented by every adapter.

interface BillingProvider {
  createCheckout(input: CreateCheckoutInput): Promise<CheckoutResult>;
  createPortalLink(input: CreatePortalLinkInput): Promise<PortalLinkResult>;
  verifyWebhook(input: VerifyWebhookInput): Promise<NormalizedWebhookEvent>;
}

Use this when you want app-level portability across providers.

CreateCheckoutInput

Input for starting a hosted checkout flow.

FieldTypeNotes
customerIdstring | undefinedExisting provider customer ID
customerEmailstring | undefinedCustomer email when the provider should create or identify a customer
productIdstring | undefinedUsed by product-based adapters such as Dodo
priceIdstring | undefinedUsed by price-based adapters such as Stripe
successUrlstringRedirect after successful checkout
cancelUrlstringRedirect after cancellation
mode'payment' | 'subscription'Intended billing flow
metadataRecord<string, string> | undefinedOptional provider metadata

Important caveat:

  • Stripe currently requires priceId
  • Dodo currently requires productId

CheckoutResult

Result returned after creating a hosted checkout.

FieldTypeNotes
idstringProvider-specific checkout or session ID
urlstringHosted checkout URL
providerBillingProviderNameThe adapter that created the checkout
rawunknown | undefinedRaw provider response

CreatePortalLinkInput

Input for creating a billing portal or customer-management link.

FieldTypeNotes
customerIdstringProvider customer ID
returnUrlstringWhere the hosted portal should return the user

PortalLinkResult

Result returned after creating a hosted portal link.

FieldTypeNotes
urlstringHosted portal URL
providerBillingProviderNameThe adapter that created the link
rawunknown | undefinedRaw provider response

VerifyWebhookInput

Input used to verify incoming webhook deliveries.

FieldTypeNotes
payloadstring | Uint8ArrayRaw request body
signaturestring | undefinedOptional direct signature value
secretstring | undefinedOptional per-call secret override
headersRecord<string, string | undefined> | undefinedRaw headers for providers that need them

NormalizedWebhookEvent

The normalized event union returned by verifyWebhook.

Active subscription event:

FieldTypeNotes
type'subscription.active'Stable normalized event name
providerBillingProviderNameSource provider
customerIdstringProvider customer ID
subscriptionIdstringProvider subscription ID
rawunknown | undefinedRaw provider payload

Cancelled subscription event:

FieldTypeNotes
type'subscription.cancelled'Stable normalized event name
providerBillingProviderNameSource provider
customerIdstringProvider customer ID
subscriptionIdstringProvider subscription ID
rawunknown | undefinedRaw provider payload

Successful payment event:

FieldTypeNotes
type'payment.succeeded'Stable normalized event name
providerBillingProviderNameSource provider
customerIdstring | undefinedPresent when the provider includes it
paymentIdstringProvider payment ID
rawunknown | undefinedRaw provider payload

Fallback event:

FieldTypeNotes
type'unknown'Unsupported or partial event
providerBillingProviderNameSource provider
rawunknown | undefinedRaw provider payload

Provider config types

StripeProviderConfig

Configuration for createStripeProvider.

FieldTypeNotes
apiKeystringStripe restricted or secret API key
webhookSecretstringStripe webhook signing secret

DodoProviderConfig

Configuration for createDodoProvider.

FieldTypeNotes
apiKeystringDodo secret API key
webhookSecretstringDodo webhook signing secret
baseUrlstring | undefinedOptional host override

Provider

Grouped provider name constants:

Provider.Stripe;
Provider.Dodo;

Use these instead of string literals when possible.

BillingProviderName

Union of supported provider names:

type BillingProviderName = 'stripe' | 'dodo';

BillingMode

Portable checkout intent:

type BillingMode = 'payment' | 'subscription';

Some providers model this directly. Others infer it from the product or price being purchased.

Payment

Grouped payment event constants:

Payment.Succeeded;

Subscription

Grouped subscription event constants:

Subscription.Active;
Subscription.Cancelled;

Webhook

Grouped fallback event constants:

Webhook.Unknown;

createBilling

Typed identity helper for provider construction.

Use this when you want to preserve provider-specific members on top of the shared BillingProvider contract. It returns the same provider object you pass in, while keeping the full subtype visible to TypeScript.

createStripeProvider

Factory for the fetch-based Stripe adapter.

Returns a BillingProvider implementation for:

  • Stripe Checkout Session creation
  • Stripe Billing Portal links
  • Stripe webhook verification and normalization

createDodoProvider

Factory for the fetch-based Dodo adapter.

Returns a BillingProvider implementation for:

  • Dodo checkout creation
  • Dodo customer portal links
  • Dodo webhook verification and normalization

On this page