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 Stripe billing_details for AVS checks. Used by ConfirmPaymentParams and PaymentProviderAdapter.createPaymentMethod.

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' | 'complete' | 'expired'YesCurrent session status.
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').
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.

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

PaymentResult

The result of a payment confirmation attempt.

NameTypeRequiredDescription
status'succeeded' | 'processing' | 'requires_action' | 'failed'YesPayment status.
paymentIntentIdstringNoID of the PaymentIntent.
errorFloPayErrorNoError if payment failed.

ConfirmPaymentParams

Parameters for confirming a payment.

NameTypeRequiredDescription
clientSecretstringYesClient secret of the PaymentIntent or SetupIntent.
returnUrlstringNoRedirect URL after 3-D Secure or wallet authentication.

CreatePaymentMethodResult

Result from creating a payment method (tokenizing card fields).

NameTypeRequiredDescription
paymentMethodIdstring | nullYesThe created payment method ID, or null on failure.
errorFloPayErrorNoError if tokenization failed.

ConfirmCardPaymentParams

Parameters for confirming a card payment with a known client secret.

NameTypeRequiredDescription
clientSecretstringYesClient secret of the PaymentIntent.
paymentMethodIdstringYesID of the payment method to confirm with.

ConfirmCardPaymentResult

Result from confirming a card payment.

NameTypeRequiredDescription
status'succeeded' | 'processing' | 'requires_action' | 'requires_capture' | 'failed'YesConfirmation status.
paymentIntentIdstringNoID of the PaymentIntent.
paymentMethodIdstringNoID of the payment method used.
errorFloPayErrorNoError if confirmation failed.

Elements

ElementType

type ElementType =
  | 'payment'
  | 'card'
  | 'cardNumber'
  | 'cardExpiry'
  | 'cardCvc'
  | 'address';

The type of payment element to render.

ElementChangeEvent

Emitted when an element's internal state changes.

NameTypeRequiredDescription
elementTypeElementTypeYesWhich element emitted the event.
completebooleanYesWhether the element is complete and valid.
emptybooleanYesWhether the element is empty.
error{ message: string; type: string }NoValidation error details.
valueRecord<string, unknown>NoNon-sensitive field values (e.g. address).

ElementOptions

Configuration options when creating an element.

NameTypeRequiredDescription
appearanceFloPayAppearanceNoAppearance overrides.
clientSecretstringNoClient secret for the PaymentIntent or SetupIntent.
amountnumberNoTotal amount in smallest currency unit (cents). Used when no clientSecret.
currencystringNoISO 4217 currency code (lowercase). Used with amount.
paymentMethodCreation'manual' | 'auto'NoHow payment methods are created. 'manual' = tokenize only, 'auto' = provider handles it.
layout'tabs' | 'accordion' | 'auto'NoLayout style for the payment element.
defaultValuesRecord<string, unknown>NoPre-filled default values.
readOnlybooleanNoWhether the element is read-only.
mode'billing' | 'shipping'NoAddress element mode.

MountedElement

A payment element that has been created and can be mounted into the DOM.

MethodSignatureDescription
mount(container: HTMLElement) => voidMount the element into a DOM container.
unmount() => voidUnmount the element from the DOM.
update(options: Partial<ElementOptions>) => voidUpdate element options.
on(event: string, handler: (...args: unknown[]) => void) => voidSubscribe to an event.
off(event: string, handler: (...args: unknown[]) => void) => voidUnsubscribe from an event.
destroy() => voidDestroy the element and release resources.

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 all elements.
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.
createElement(type: ElementType, options: ElementOptions) => Promise<MountedElement>Create a mountable element.
getElement(type: ElementType) => MountedElement | nullGet existing element by type.
submitElements() => Promise<{ error?: FloPayError }>Submit elements for validation.
createPaymentMethod() => Promise<CreatePaymentMethodResult>Tokenize card fields into a payment method.
confirmCardPayment(params: ConfirmCardPaymentParams) => Promise<ConfirmCardPaymentResult>Confirm a card payment.
confirmPayment(params: ConfirmPaymentParams) => Promise<PaymentResult>Confirm a payment using mounted elements.
confirmPayPalPayment(params: { billingApiUrl: string; sessionId: string; email: string; returnUrl: string }) => Promise<ConfirmCardPaymentResult>Create and confirm a PayPal payment.
resumePayPalPayment() => Promise<ConfirmCardPaymentResult | null>Resume a PayPal payment after redirect.
getRawProvider() => unknownGet the raw underlying provider instance (e.g. Stripe object).
createPayPalElements(options: ElementOptions) => unknownCreate a secondary Elements group for PayPal.
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'.
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 Checkout 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.

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 Checkout 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 webhook event from FloPay.

NameTypeRequiredDescription
idstringYesEvent ID.
typestringYesEvent 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