FloPay
API Reference@flopay/js

createCheckoutSession

Functions for creating checkout sessions via the billing API and redirecting users.

createCheckoutSession

Creates a checkout session via the billing API and redirects the user to the hosted checkout page.

async function createCheckoutSession(
  options: CreateSessionParams
): Promise<CheckoutSessionResult>

Behavior

  • 201: Redirects to {checkoutBaseUrl}/secure?id={uuid}&...redirectParams}. Returns { status: 201, redirectUrl: string }.
  • 204: Redirects directly to successUrl (payment method already on file). Returns { status: 204 }.
  • Other: Returns { status: number } without redirecting.

When setCookie is true (default), a checkout_data cookie is set with the cancelUrl for navigation purposes.

Parameters

See CreateSessionParams for the full parameter table.

Example

import { createCheckoutSession } from '@flopay/js';
 
const result = await createCheckoutSession({
  billingApiUrl: 'https://billing.example.com',
  checkoutBaseUrl: 'https://checkout.example.com',
  clientId: 'client_123',
  items: [{
    providerItemId: 'prod_abc',
    providerItemName: 'Pro Plan',
    totalAmount: 49.99,
    overrideAmount: 24.99,
  }],
  account: {
    userId: 'user_1',
    email: 'user@example.com',
  },
  successUrl: '/success',
  cancelUrl: '/cancel',
  redirectParams: {
    email: 'user@example.com',
    bg: 'courses',
    mode: 'confirm',
  },
});

createCheckoutSessionWithRetries

Creates a checkout session with automatic retry on timeout/abort errors. Uses exponential backoff: 100ms, 200ms, 400ms, etc.

async function createCheckoutSessionWithRetries(
  options: CreateSessionParams & { maxRetries?: number }
): Promise<CheckoutSessionResult>

Parameters

Accepts all CreateSessionParams plus:

ParameterTypeRequiredDescription
maxRetriesnumberNoMaximum number of retry attempts. Defaults to 3. Must be a positive integer.

Retry Behavior

  • Only retries on AbortError (i.e. timeout).
  • Non-abort errors are thrown immediately.
  • Backoff delay: 100ms * 2^attempt (100ms, 200ms, 400ms).

Example

import { createCheckoutSessionWithRetries } from '@flopay/js';
 
const result = await createCheckoutSessionWithRetries({
  billingApiUrl: 'https://billing.example.com',
  checkoutBaseUrl: 'https://checkout.example.com',
  clientId: 'client_123',
  items: [{ providerItemId: 'prod_abc', totalAmount: 49.99 }],
  account: { userId: 'user_1', email: 'user@example.com' },
  successUrl: '/success',
  cancelUrl: '/cancel',
  maxRetries: 5,
  timeoutMs: 8000,
});

On this page