FloPayFloPay
API Reference@flopay/shared

Types

All TypeScript interfaces and type aliases exported by @flopay/shared.

Appearance

FloPayThemeVariables

Theme variables that map to CSS custom properties on FloPay elements.

NameTypeRequiredDescription
colorPrimarystringNoPrimary brand color.
colorBackgroundstringNoBackground color for elements.
colorTextstringNoText color.
colorDangerstringNoColor for error states.
borderRadiusstringNoBorder radius (e.g. "8px").
fontFamilystringNoFont family stack.
fontSizeBasestringNoBase font size (e.g. "16px").
spacingUnitstringNoBase spacing unit (e.g. "4px").

FloPayAppearance

Controls the visual appearance of all FloPay elements.

NameTypeRequiredDescription
theme'default' | 'flat' | 'night' | 'none'NoStripe-level base theme passed through to Elements. Distinct from the SDK-level ThemeId prop on React components.
variablesFloPayThemeVariablesNoCustom theme variable overrides.
rulesRecord<string, Record<string, string>>NoCSS-like rules keyed by selector (e.g. ".Input", ".Input:focus", ".Label", ".Tab", ".Tab--selected").

ThemeBundleId

type ThemeBundleId =
  | 'modern-light'
  | 'modern-dark'
  | 'bold-light'
  | 'bold-dark'
  | 'glass-light'
  | 'glass-dark';

Identifier for one of the six bundled themes shipped by @flopay/shared. Each ThemeBundleId resolves to a paired FloPayAppearance and ButtonsLayoutStyles via THEMES and resolveTheme.

ThemeId

type ThemeId = 'classic' | ThemeBundleId;

Value accepted by the theme prop on FloPayCheckout, FloPayAutomaticPaymentButton, and SplitCardForm. 'classic' is a no-op marker that preserves the historic FloPay look (#EDEDFF wrapper, #4A49FF indigo submit) so consumers can declare a default explicitly; resolveTheme returns undefined for it.

ThemeBundle

type ThemeBundle = {
  appearance: FloPayAppearance;
  buttonsLayout: ButtonsLayoutStyles;
};

A pre-built pair of an appearance and a buttons-layout style set. Returned from THEMES and resolveTheme.

ButtonsLayoutStyles

Style overrides for the React-rendered wrapper, submit button, and inputs around the Stripe Elements. See ButtonsLayoutStyles Reference on FloPayCheckout for the full field list.

Removed: the securityFooter field on ButtonsLayoutStyles is gone alongside the "Secure Card Checkout" green footer it styled. Drop any buttonsStyles.securityFooter overrides — they are now ignored.


AVS

AVSFieldConfig

Per-field AVS configuration accepted by enableAVS on FloPayCheckout and SplitCardForm. Each field accepts true (always show), false / omitted (hidden), or string[] (show only for those ISO 3166-1 alpha-2 country codes).

NameTypeRequiredDescription
countryboolean | string[]NoCountry dropdown
postal_codeboolean | string[]NoZIP / postal code
address_line_1boolean | string[]NoStreet address
address_line_2boolean | string[]NoApt, suite, unit (always optional even when visible)
cityboolean | string[]NoCity / town
stateboolean | string[]NoState / province / region. Renders as a dropdown for US and CA, free text otherwise
import type { AVSFieldConfig } from '@flopay/shared';

const config: AVSFieldConfig = {
  country: true,
  postal_code: true,
  address_line_1: ['US', 'CA'],
};

See the AVS guide for resolution rules, defaults, and theming.

BillingDetails

Billing details forwarded to supported payment flows for AVS checks.

NameTypeRequiredDescription
emailstringNoBuyer email
namestringNoCardholder full name
addressobjectNoAddress fields (see below)

address properties:

NameTypeRequiredDescription
countrystringNoISO 3166-1 alpha-2 country code
postal_codestringNoZIP / postal code
line1stringNoStreet address
line2stringNoApt, suite, unit
citystringNoCity
statestringNoState / province

Checkout Session

GatewayEnvironmentEnum

type GatewayEnvironmentEnum = 'stage' | 'production';

Per-gateway environment marker on a session response. stage points at the gateway's sandbox credentials; production points at live credentials.

CheckoutGatewayDto

A single gateway entry on a checkout session response.

NameTypeRequiredDescription
publishableKeystringYesPublishable key for client-side initialization of that gateway.
environmentGatewayEnvironmentEnumYes'stage' or 'production'. Drives sandbox vs live selection on the SDK side (for example which PayPal JS SDK environment to load).

CheckoutGatewaysDto

Map of gateways available on a checkout session. Each entry is CheckoutGatewayDto | null. A null (or missing) entry means that gateway is not configured for the client and the SDK should not render its payment UI.

NameTypeRequiredDescription
stripeCheckoutGatewayDto | nullNoStripe gateway entry (renders card fields, Apple Pay, Google Pay, and the Stripe-rendered PayPal fallback).
paypalCheckoutGatewayDto | nullNoDirect PayPal gateway entry. Present when the client has provisioned a provider_type=paypal gateway. When present, the SDK renders PayPal via the PayPal JS SDK directly instead of the Stripe-rendered fallback. See the Direct PayPal guide.

Customer

A customer attached to a checkout session.

NameTypeRequiredDescription
idstringYesCustomer ID.
emailstringYesCustomer email.
firstNamestringNoFirst name.
lastNamestringNoLast name.
genderstringNoGender.
citystringNoCity.
statestringNoState or province.
countrystringNoCountry code.
zipstringNoPostal / ZIP code.
line1stringNoStreet address (line 1).
line2stringNoApt, suite, unit (line 2).

RecurringInterval

Recurring interval configuration for subscription line items.

NameTypeRequiredDescription
interval'month' | 'year'YesBilling interval.
intervalCountnumberNoNumber of intervals between billings.

PriceData

Inline product data when no pre-created price is referenced.

NameTypeRequiredDescription
currencystringYesISO 4217 currency code.
unitAmountnumberYesPrice per unit in smallest currency unit.
productData{ name: string; description?: string }YesProduct name and optional description.
recurringRecurringIntervalNoRecurring billing configuration.

LineItem

A single line item within a checkout session.

NameTypeRequiredDescription
pricestringNoReference to a pre-created price object on the provider.
priceDataPriceDataNoInline price data (used when no price reference exists).
quantitynumberYesQuantity of this line item.

FloPayEnvironment

type FloPayEnvironment = 'staging' | 'production';

The environment determines which billing API URL is used. Set it with configureFlopay({ environment }). See Configuration.

CheckoutMode

type CheckoutMode = 'full' | 'auto' | 'confirm';

Controls the checkout UI behavior. full shows the payment form, confirm shows a confirm button (uses saved PM), auto auto-submits with a saved PM.

CheckoutSession

Represents a FloPay checkout session. Includes both computed fields (like amount) and the full raw data from the billing API.

NameTypeRequiredDescription
idstringYesSession ID (UUID).
clientSecretstringYesClient secret (nonce) for client-side confirmation.
mode'payment' | 'subscription' | 'setup'YesSession mode. 'subscription' is inferred when any product has type: 'subscription'.
status'open' | 'authorized' | 'complete' | 'expired'YesCurrent session status. authorized is terminal for the buyer journey but is not a paid result.
amountnumberYesTotal amount in smallest currency unit (cents). Aggregated from products[].
currencystringYesISO 4217 currency code.
lineItemsLineItem[]NoLine items in the session.
customerCustomerNoCustomer attached to the session.
metadataRecord<string, string>NoArbitrary key-value metadata.
checkoutModeCheckoutModeNoCheckout mode from the billing API ('full', 'auto', 'confirm').
captureMethodCaptureMethodNoautomatic (default) or manual for an eligible authorisation-only card checkout.
paymentIdstringNoFloPay payment UUID used by the trusted-server capture/cancel API. Present on an authorised outcome.
authorizationExpiresAtstringNoProvider-derived deadline for capturing an active authorisation.
productsCheckoutSessionProduct[]NoProducts you would like to include in this checkout
successUrlstringNoRedirect URL after successful payment.
cancelUrlstringNoRedirect URL on cancellation.
couponsstring[]NoApplied coupon codes.
subtotalAmountnumberNoPre-discount total in cart-currency major units. Populated by billing API ≥ v1.1.2.
discountAmountnumberNoTotal reduction from applied coupons in cart-currency major units. Populated by billing API ≥ v1.1.2.
totalAmountnumberNoFinal charge amount in cart-currency major units (subtotal − discount, clamped ≥ 0). Populated by billing API ≥ v1.1.2.
createdAtstringNoSession creation timestamp.
gatewaysCheckoutGatewaysDtoNoMap of gateways available on this session. Each entry is a CheckoutGatewayDto or null. The SDK reads gateways.stripe to initialize card / Apple Pay / Google Pay, and gateways.paypal to render direct PayPal. When gateways.paypal is null or missing, the SDK falls back to the Stripe-rendered PayPal path.
accountDataobjectNoFull account data (userId, email, name, address).
tagsDataTagsDataNoAnalytics/pixel tracking tags.
dataAttachmentDeferredbooleanNotrue only for a session shell that still needs buyer and catalog data through the claim endpoint. false on every fully-attached session. See Session Creation.

Breaking change. The previous top-level gateway: BillingProvider field and gatewayData: { publishableKey, paypalPublishableKey } shape have been replaced by gateways: { stripe, paypal }. There is no longer a single gateway discriminator on the session response — Flo supports multiple gateways on the same session and the SDK consumes the per-gateway entries directly. See the Direct PayPal guide for migration notes.

CheckoutProductType

type CheckoutProductType = 'item' | 'subscription';

Discriminator describing whether a checkout product is a one-time item or a recurring subscription. Mirrors the backend's ProductTypeEnum.

CheckoutSessionProduct

A single product from a checkout session response. type distinguishes one-time items from recurring subscriptions so both share one unified list. Returned on CheckoutSession.products from billing API v1.1.3 or later.

NameTypeRequiredDescription
uuidstringYesProduct UUID.
checkoutSessionIdstringYesParent session UUID.
typeCheckoutProductTypeNo'subscription' for recurring plans, 'item' for one-time products. Optional to mirror CheckoutProduct.type; when omitted, consumers treat the product as an 'item' for display ordering.
codestringNoPreferred catalog code.
namestring | nullNoDisplay-only name. Resolved from the catalog server-side; the SDK falls back to the display cache when missing.
descriptionstring | nullNoDisplay-only description from the catalog.
quantitynumberYesQuantity.
totalAmountnumberNoDisplay-only. Populated from cache when the server omits it.
overrideAmountnumber | nullNoBackend-computed per-line override, server-authoritative. On subscription trial lines: 0 for a free trial (nothing charged today) or the resolved trial charge for a paid trial; absent on non-trial lines. See Trials.
currencystringNoDeprecated — prefer the session-level currency on CheckoutSession.
metadataRecord<string, unknown> | nullNoArbitrary metadata from the catalog.

Display-only fields (name, totalAmount) may be null / undefined on the wire when the backend resolves them from the catalog. The SDK merges values you previously stashed via cacheSessionDisplayData on top of the server response so order summaries stay populated across the redirect round-trip. Server values always win where present; the cache is a fallback only. overrideAmount, by contrast, is computed by the backend (server-authoritative) — you never supply it.


Payment Results

CaptureMethod

type CaptureMethod = 'automatic' | 'manual';

Omit the field (or use automatic) for immediate capture. manual is supported only for eligible one-time card carts.

PaymentResult

The result of a payment confirmation attempt.

NameTypeRequiredDescription
status'authorized' | 'succeeded' | 'processing' | 'requires_action' | 'failed'YesProvider-neutral payment status. authorized means held, not paid.
paymentIdstringNoFloPay payment UUID for trusted-server capture.
sessionIdstringNoCheckout session UUID associated with an authorised result.
authorizationExpiresAtstringNoProvider-derived deadline for capturing the hold.
paymentIntentIdstringNoID of the PaymentIntent.
errorFloPayErrorNoError if payment failed.

PayPalPaymentResult

Result from the Stripe-hosted PayPal confirmation or redirect-resume flow.

NameTypeRequiredDescription
status'succeeded' | 'processing' | 'requires_action' | 'requires_capture' | 'failed'YesStripe-hosted PayPal confirmation status. requires_capture belongs to this PayPal path and is not the merchant manual capture state; authorisation-only card checkout returns PaymentResult.status: 'authorized'.
paymentIntentIdstringNoID of the PaymentIntent.
paymentMethodIdstringNoID of the payment method used.
errorFloPayErrorNoError if confirmation failed.

Checkout Instruments

The public, versioned projection of the SDK's internal checkout taxonomy, delivered through the onInstrument callback on FloPayCheckout and FloPayProvider. Available from SDK 1.7.0. See Checkout analytics for the funnel-building guide.

FloInstrumentEvent

type FloInstrumentEvent =
  | {
      schemaVersion: typeof FLO_INSTRUMENT_SCHEMA_VERSION;
      gateway?: BillingProvider;
      name: FloInstrumentLifecycleName;
    }
  | {
      schemaVersion: typeof FLO_INSTRUMENT_SCHEMA_VERSION;
      gateway?: BillingProvider;
      name: 'checkout_error';
      phase: FloInstrumentErrorPhase;
    };

A discriminated union on name. Narrow on name === 'checkout_error' before reading phase.

NameTypeRequiredDescription
schemaVersion1YesContract version, always FLO_INSTRUMENT_SCHEMA_VERSION.
nameFloInstrumentLifecycleName | 'checkout_error'YesThe signal.
phaseFloInstrumentErrorPhaseOnly on checkout_errorStage the checkout failed in.
gateway'stripe' | 'paypal'NoProvider the event is attributable to. Absent when no provider applies — hosted-vault events may omit it, as may events raised before a gateway is selected.

The feed is an allowlist. It carries no card data, tokens, provider object ids, buyer identity, amounts, or free-text provider messages, so it is safe to forward directly to a third-party analytics destination.

FloInstrumentLifecycleName

type FloInstrumentLifecycleName =
  | 'checkout_mount'
  | 'sdk_loaded'
  | 'form_rendered'
  | 'card_expanded'
  | 'tokenize'
  | 'process_attempt'
  | '3ds_challenge';

Progress through the checkout. checkout_mount, sdk_loaded, form_rendered, and card_expanded arrive at most once per logical checkout; tokenize, process_attempt, and 3ds_challenge may repeat once per attempt. See Building a funnel.

FloInstrumentErrorPhase

type FloInstrumentErrorPhase = 'session_create' | 'sdk_load' | 'process' | 'wallets';

Which stage a checkout_error failed in: session creation, SDK or gateway initialisation, payment processing, or wallet intent creation. This is a technical failure of the checkout, not a card decline — declines arrive through onDecline.


Provider Config

FloPayConfig

Top-level configuration for initializing FloPay.

NameTypeRequiredDescription
publishableKeystringYesYour FloPay publishable key (e.g. pk_test_...).
billingApiUrlstringNoBilling API base URL (e.g. https://api.stage.flopay.com).
localestringNoLocale code (e.g. "en").
appearanceFloPayAppearanceNoDefault appearance for supported Stripe payment surfaces.
apiVersionstringNoAPI version header value.

Adapter

PaymentProviderAdapter

Abstraction layer for payment providers. Currently only Stripe is implemented (StripeAdapter).

MemberSignatureDescription
namereadonly stringProvider name.
initialize(config: FloPayConfig) => Promise<void>Initialize the provider.
getRawProvider() => unknownGet the raw underlying provider instance (e.g. Stripe object).
destroy() => voidTear down the provider and release resources.

Billing Types

BillingProvider

type BillingProvider = 'recurly' | 'chargebee' | 'stripe';

Supported upstream billing providers.

TokenizedBody

Token payload produced by client-side tokenization.

NameTypeRequiredDescription
idstringNoToken or payment method ID.
typestringNoToken type (e.g. "card").
threeDSecureActionResultTokenIdstringNo3DS action result token.
originalPaymentMethodIdstringNoOriginal reusable payment method ID to preserve across 3DS retries.
isPaypalbooleanNoWhether this is a PayPal payment.

CheckoutModeKind

type CheckoutModeKind = 'tokenize' | 'redirect';

Checkout mode: tokenize client-side or redirect to a hosted page.

NormalizedCheckoutSession

Provider-agnostic normalized checkout session.

NameTypeRequiredDescription
providerBillingProviderYesThe billing provider.
modeCheckoutModeKindYesCheckout mode.
dataobjectYesProvider-specific data (see below).
rawunknownNoRaw API response.

data properties:

NameTypeDescription
hostedUrlstringURL for hosted checkout (redirect mode).
clientTokenstringClient token for tokenization.
sessionCheckoutSessionNormalized session object.
chargebee{ site?: string; publishableKey?: string; dropInToken?: string; sessionId?: string }Chargebee-specific data.
stripe{ clientSecret?: string; publishableKey?: string; environment?: GatewayEnvironmentEnum }Stripe-specific data, derived from gateways.stripe.
paypal{ publishableKey?: string; environment?: GatewayEnvironmentEnum }Direct PayPal data, derived from gateways.paypal. When omitted, the SDK falls back to the Stripe-rendered PayPal path. See the Direct PayPal guide.

Server-side

CheckoutProduct

Unified product input for checkout session creation. Mirrors the backend's CreateCheckoutProductBodyDto. Pass these via CreateSessionParams.products when you want the new shape; otherwise the SDK folds legacy items / subscriptions into this shape before sending.

NameTypeRequiredDescription
typeCheckoutProductTypeNoDeprecated — no longer needed. The backend resolves item vs subscription from the catalog code. Pass it only to refine the client-side optimistic display shown before the session response loads (subscriptions are listed first). Safe to omit.
codestringYes*Catalog code — the product identifier. Optional in the type signature, but required in practice: the SDK throws if neither code nor the deprecated providerItemId / providerPlanId is set, and the backend rejects products without it.
namestring | nullNoDisplay-only name. Falls back to the deprecated itemName / subscriptionName when omitted.
quantitynumberNoQuantity. Defaults to 1.
totalAmountnumberNoDisplay-only regular price (major units). Backend resolves prices from the catalog; pass this to seed the display cache.
overrideAmountnumber | nullNoDeprecatedignored by the backend on input and slated for removal. overrideAmount is computed server-side and only appears on the session response (see CheckoutSessionProduct); you cannot set it here.
currencystringNoDeprecated — prefer the session-level currency on CreateSessionParams / InlineSessionParams.
metadataRecord<string, unknown> | nullNoArbitrary metadata forwarded to the backend.

Minimum entry: { code }. code is required in practice (see above). quantity is required by the backend CreateCheckoutProductBodyDto, but the SDK defaults it to 1 before sending, so callers may omit it. type is deprecated and no longer needed — the backend resolves item vs subscription from the catalog. name and totalAmount are display-only — the backend resolves names and prices from the catalog. overrideAmount is deprecated and ignored on input; it is computed server-side and returned only on the session response.

CheckoutAccount

Buyer's account information for session creation.

NameTypeRequiredDescription
userIdstringYesUser ID.
firstNamestringNoFirst name.
lastNamestringNoLast name.
emailstringYesEmail address.
countrystring | nullNoCountry code.
genderstring | nullNoGender.
citystring | nullNoCity.
statestring | nullNoState or province.
zipstring | nullNoPostal / ZIP code.
addressLine1string | nullNoStreet address (line 1).
addressLine2string | nullNoApt, suite, unit (line 2).

TagsData

Analytics / pixel tags forwarded to the checkout page.

NameTypeRequiredDescription
googleContainerIdstring | nullNoGoogle Tag Manager container ID.
sessionIdstring | nullNoAnalytics session ID.
testEventCodestring | nullNoTest event code for pixel testing.

CreateSessionParams

Parameters for creating a checkout session via the billing API.

NameTypeRequiredDescription
billingApiUrlstringYesBase URL of the billing API.
checkoutBaseUrlstringYesBase URL of the checkout frontend.
clientIdstringYesClient ID for the checkout session.
currencystringRequiredSession-level ISO 4217 currency code. The SDK resolves it from this field first, then per-line currency on items / subscriptions / products. Throws FloPayError({ type: 'validation_error', code: 'CurrencyRequired' }) synchronously — before the HTTP request — when nothing can be resolved.
productsCheckoutProduct[]NoUnified products array. When supplied, it is sent verbatim and items / subscriptions are ignored.
itemsCheckoutItem[]NoDeprecated — one-time purchase items. Folded into products[] before send; prefer products.
subscriptionsCheckoutSubscription[]NoDeprecated — recurring subscription plans. Folded into products[] before send; prefer products.
accountCheckoutAccountYesBuyer's account information.
successUrlstringYesURL to redirect to after successful payment.
cancelUrlstringYesURL to redirect to if the user cancels.
checkoutMode'confirm' | 'auto' | 'full'NoCheckout mode. Defaults to 'confirm'.
captureMethodCaptureMethodNoOmit (or use automatic) for immediate capture; use manual for an eligible one-time card checkout. Subscription carts fail before the request with CaptureMethodUnsupportedForSubscription.
couponCodesstring[]NoCoupon codes to apply.
tagsDataTagsDataNoPixel / analytics tags.
redirectParamsRecord<string, string>NoExtra query params appended to the checkout redirect URL.
setCookiebooleanNoWhether to set the checkout_data cookie. Defaults to true.
timeoutMsnumberNoRequest timeout in milliseconds. Defaults to 12000.
utmMetadataRecord<string, string | null | undefined>[]NoUTM and funnel tracking metadata.
avsCheckbooleanNoWhether AVS will be enabled for this session. See AVS analytics.
avsConfigAVSFieldConfigNoResolved per-field AVS exposure for analytics.
checkoutType'standard_checkout' | 'embedded_checkout'NoCheckout surface.
checkoutLayout'default_layout' | 'buttons_layout' | 'custom_layout'NoCheckout layout.

Session-level currency is required. Post-#760 backends enforce @IsNotEmpty on the field. The SDK pre-validates and throws FloPayError({ type: 'validation_error', code: 'CurrencyRequired' }) before issuing the request when neither currency nor any per-line currency resolves. Pass currency at the top of the session for the cleanest behavior.

InlineSessionParams

Inline session-creation params used by FloPayCheckout's createSession prop. Same shape as CreateSessionParams (without billingApiUrl / checkoutBaseUrl, which are resolved from configuration), plus the same four analytics fields. The SDK populates them automatically when not provided. Session-level currency is required and follows the same validation/error path as CreateSessionParams.

It also accepts one creation-strategy field:

NameTypeRequiredDescription
deferDataAttachmentbooleanNoDefaults to true. The SDK creates a lightweight session shell, mounts the hosted card form from it, then attaches buyer identity, address, products and coupons through a background claim. Set false to use the original one-shot create — same session, callbacks and results. Requires checkoutMode: 'full' and is skipped when tokenizedData is supplied. See Session Creation.

DetachedCheckoutSession

Two-phase result of a detached checkout-session create, returned by PaymentAPI.createDetachedSession().

interface DetachedCheckoutSession {
  shell: NormalizedCheckoutSession;
  sessionId: string;
  nonce: string;
  claimed: Promise<NormalizedCheckoutSession>;
}
NameTypeDescription
shellNormalizedCheckoutSessionLightweight shell — session id, nonce, routed gateways and the hosted vault block, so the card form can mount from it. Carries no products, coupons, buyer identity or cart totals.
sessionIdstringSession id of the shell, available before claimed settles.
noncestringSession-bound checkout token, required by the claim and every later call.
claimedPromise<NormalizedCheckoutSession>Resolves with the fully-attached session once the background claim lands.

Nothing may be charged until claimed settles — the billing API rejects process / intent / decline calls on an unclaimed session with 409 checkout_session_data_attachment_required, and holds an unclaimed vault charge with a retryable 503.

CheckoutSessionResult

type CheckoutSessionResult =
  | { status: 201; redirectUrl: string }
  | { status: 204 }
  | { status: number };

Result from creating a checkout session. 201 includes a redirect URL, 204 means payment method already on file.

ProcessPaymentParams

Data submitted when processing a payment (tokenized card/wallet data).

NameTypeRequiredDescription
sessionIdstringYesCheckout session ID.
tokenizedDataTokenizedBodyNoTokenized card/wallet data.
accountDataobjectYesAccount data for the payment (see fields below).
chvstringNoCheckout version for A/B tracking.
returnUrlstringNoCurrent page URL for redirect-capable auth flows (3DS, PayPal).
avsCheckbooleanNoWhether AVS was enabled for this checkout. Auto-set by the SDK. See AVS analytics.
avsConfigAVSFieldConfigNoResolved per-field exposure (which AVS fields the buyer actually saw, given their country). Auto-set by the SDK.
checkoutType'standard_checkout' | 'embedded_checkout'NoCheckout surface. Auto-set by the SDK.
checkoutLayout'default_layout' | 'buttons_layout' | 'custom_layout'NoCheckout layout. Auto-set by the SDK.

accountData properties:

NameTypeRequiredDescription
userIdstringYesUser ID
emailstringYesEmail
firstNamestringYesFirst name
lastNamestringYesLast name
countrystringNoCountry code (only sent when AVS country field was visible)
zipstringNoPostal / ZIP (only sent when AVS postal_code was visible)
addressLine1stringNoStreet address (only sent when AVS address_line_1 was visible)
addressLine2stringNoApt / suite (only sent when AVS address_line_2 was visible)
citystringNoCity (only sent when AVS city was visible)
statestringNoState / province (only sent when AVS state was visible)

CreateCustomerParams

Parameters for creating a customer.

NameTypeRequiredDescription
emailstringYesCustomer email.
namestringNoCustomer full name.
metadataRecord<string, string>NoArbitrary metadata.

UpdateCustomerParams

Parameters for updating a customer.

NameTypeRequiredDescription
emailstringNoUpdated email.
namestringNoUpdated name.
metadataRecord<string, string>NoUpdated metadata.

WebhookEvent

A direct Stripe webhook event returned by @flopay/node's webhooks.constructEvent helper. This is not FloPay's normalized outbound merchant webhook envelope; see Webhook payloads for that contract.

NameTypeRequiredDescription
idstringYesEvent ID.
typestringYesDirect Stripe event type (e.g. "payment_intent.succeeded").
dataRecord<string, unknown>YesEvent data payload.
creatednumberYesUnix timestamp of event creation.

Currency

CurrencyInfo

Currency information mapped to a country.

NameTypeRequiredDescription
currencystringYesISO 4217 currency code (e.g. "EUR").
symbolstringYesCurrency symbol (e.g. "$").
countrystringYesCountry name.
countryCodestringYesISO 3166-1 alpha-2 country code.
taxnumberYes0 = no tax, 1 = tax (VAT) applies.

CountryOption

A country option for UI select elements.

NameTypeRequiredDescription
codestringYesISO 3166-1 alpha-2 country code.
namestringYesCountry display name.
flagstringYesFlag emoji.

On this page