Documentation
MCPTool reference

Checkouts tools

Arguments, results, errors, and access, confirmation, and retry policy for each Checkouts tool in FloPay MCP, from the reviewed API contract.

Checkouts tools

Generated from the FloPay MCP contract version 1, revision cc71a476426ea531d369de5441cde85ab81ab52c9764406e5f09501857d7ed32.

CheckoutAnalytics_get

Checkout performance stats

Returns loads and canonical session-cohort attempt totals, conversion, and money-derived ratios anchored to session creation; transaction tries and approval use attempt-row creation time; headline non-rebill purchase transactions and revenue use financial business time. An automatic upsell is a customer-linked automatic sale preceded at or before its business time, and by strictly less than 24 hours, by a successful standard sale for the same client and resolved customer; each automatic sale is counted once and attributed by its own business time. Refund and chargeback counts and amounts sit beside the gross figures on an issued-period (occurrence) basis: refunds are attributed by their own financial effective date and chargebacks by their own money-movement effective date within the half-open reporting interval, so they can exceed 100% of gross and are never clamped.

PolicyValue
OperationGET /v1/checkouts/stats
Classread-only
Riskmedium
Confirmationnot-required
Retrysafe
Rate-limit tieraggregate
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
fromquerystringYesInclusive reporting-period start as an ISO-8601 instant.
toquerystringYesExclusive reporting-period end as an ISO-8601 instant.

Result

Returns 200 with a JSON body. One coherent checkout performance snapshot.

FieldTypeRequiredDescription
attemptsobjectYes
attempts.approvalRatenumber or nullNoApproved transaction tries divided by transaction tries from the same attempt-outcome period. Minimum: 0.
attempts.revenuePerAttemptnumber or nullNoCanonical session-cohort revenue divided by attempted session-cohort checkouts. Minimum: 0.
attempts.toSalesConversionPercentagenumber or nullNoConversion percentage: session-cohort canonical sales divided by attempted session-cohort checkouts. Minimum: 0.
attempts.totalintegerNoDistinct selected-period session-cohort checkouts with an attempt inside 24 hours. Minimum: 0.
attempts.transactionTriesintegerNoTransaction-attempt outcomes attributed by lifecycle transition time for managed rows and creation time for legacy rows. Minimum: 0.
contextobjectYes
context.appliedFiltersarray of objectYesAdditional filters applied after the authoritative tenant boundary. Empty for merchant calls.
context.appliedFilters[].fieldstringYes
context.appliedFilters[].operatorstringYesAllowed values: eq.
context.appliedFilters[].valuestringYes
context.authoritativeLinksarray of objectYesRelative authenticated Flo API links for verifying authoritative source records.
context.authoritativeLinks[].hrefstringYes
context.authoritativeLinks[].relstringYes
context.consistencyobjectYesThe consistency model and its operator-facing freshness caveat.
context.consistency.modelstringYesAllowed values: eventual.
context.consistency.notestringYes
context.currencyobjectYesReporting-currency basis and immutable daily FX snapshots for home/platform totals. Source amounts remain separately segmented.
context.currency.fxobjectYes
context.currency.fx.appliedbooleanYesWhether this aggregate contains monetary values that were FX-valued.
context.currency.fx.effectiveDateTimezonestringYesAllowed values: UTC.
context.currency.fx.methodstringYesAllowed values: daily-exact-or-prior.
context.currency.fx.provisionalbooleanYes
context.currency.fx.snapshotsarray of objectYes
context.currency.fx.snapshots[].provisionalbooleanYes
context.currency.fx.snapshots[].valuationDatestring (date)Yes
context.currency.fx.snapshots[].versionintegerYesMinimum: 1.
context.currency.homeCurrencystring or nullYesMinimum length: 3. Maximum length: 3.
context.currency.reportingCurrencystringYesMinimum length: 3. Maximum length: 3.
context.currency.reportingCurrencyBasisstringYesAllowed values: client-home, platform-usd.
context.dataAsOfstring (date-time)YesThe persisted-data observation boundary for this response.
context.generatedAtstring (date-time)YesWhen the API generated this response.
context.statusSemanticsarray of objectYesCanonical definitions and time bases for statuses and outcomes used in the response.
context.statusSemantics[].appliesToarray of stringYes
context.statusSemantics[].codestringYes
context.statusSemantics[].descriptionstringYes
context.statusSemantics[].timeBasisstringYesAllowed values: created-at, financial-effective-at, billing-cycle-at, attempt-outcome-at.
context.tenantScopeobjectYesThe explicit client-selection mode used by the authenticated backend query.
context.tenantScope.clientIdstring or nullYes
context.tenantScope.kindstringYesAllowed values: authenticated-client, selected-client, all-clients.
context.timeRangeobjectYesThe explicit half-open UTC reporting window applied to the aggregate.
context.timeRange.boundsstringYesAllowed values: [from,to).
context.timeRange.fromstring (date-time)Yes
context.timeRange.timezonestringYesAllowed values: UTC.
context.timeRange.tostring (date-time)Yes
currencystringYesMinimum length: 3. Maximum length: 3.
finalAtstring (date-time)YesThe unchanged instant 24 hours after the requested period ends when isFinal becomes true.
isFinalbooleanYesTrue after the existing checkout-attribution finality window closes; it does not guarantee that financial totals are frozen against later-arriving settlements.
loadsobjectYes
loads.revenuePerLoadnumber or nullNoCanonical session-cohort revenue divided by checkout sessions created in this period. Minimum: 0.
loads.toSalesConversionPercentagenumber or nullNoConversion percentage: session-cohort canonical sales divided by checkout sessions created in this period. Minimum: 0.
loads.totalintegerNoCheckout sessions attributed to this period by session creation time. Minimum: 0.
periodobjectYes
period.fromstring (date-time)No
period.tostring (date-time)No
revenueobjectYes
revenue.averageOrderValuenumber or nullNoCanonical session-cohort revenue divided by the canonical session-cohort sale count. Minimum: 0.
revenue.chargebacksobjectNoDeprecated compatibility alias for disputes. Same values as revenue.disputes. Removal is tracked separately.
revenue.chargebacks.amountnumberNoFX-valued charged-back amount for this period.
revenue.chargebacks.percentageOfRevenuenumber or nullNoCharged-back amount divided by gross revenue amount from exact unrounded totals, HALF_UP to two places; null when gross revenue is zero and not clamped above 100%.
revenue.disputesobjectNoDisputed amount valued in the same target currency as revenue.total, each Dispute money movement valued at its own effective date. Kept gross and separate from revenue.total. Network warnings are Pre-Dispute Alerts and are not included.
revenue.disputes.amountnumberNoFX-valued disputed amount for this period.
revenue.disputes.percentageOfRevenuenumber or nullNoDisputed amount divided by gross revenue amount from exact unrounded totals, HALF_UP to two places; null when gross revenue is zero and not clamped above 100%.
revenue.refundsobjectNoRefunded amount valued in the same target currency as revenue.total, each refund valued at its own financial effective date. Kept gross and separate from revenue.total.
revenue.refunds.amountnumberNoFX-valued refunded amount for this period.
revenue.refunds.percentageOfRevenuenumber or nullNoRefunded amount divided by gross revenue amount from exact unrounded totals, HALF_UP to two places; null when gross revenue is zero and not clamped above 100%.
revenue.totalnumberNoValued revenue from the period non-rebill transaction-identity sales. Minimum: 0.
revenue.upsellsobjectNoRevenue from qualifying automatic sales valued in the same reporting currency and through the same per-business-day FX path as revenue.total.
revenue.upsells.amountnumberNoFX-valued revenue from qualifying automatic sales.
revenue.upsells.percentageOfRevenuenumber or nullNoExact unrounded upsell revenue divided by exact unrounded gross checkout revenue, HALF_UP to two places; null when gross revenue is zero.
salesobjectYes
sales.changeinteger or nullNo
sales.chargebacksobjectNoDeprecated compatibility alias for disputes. Same values as sales.disputes. Removal is tracked separately.
sales.chargebacks.countintegerNoChargeback events in this period. Minimum: 0.
sales.chargebacks.percentageOfSalesnumber or nullNoChargeback count divided by gross sales count, HALF_UP to two places; null when gross sales count is zero and not clamped above 100%.
sales.comparisonUnavailableReasonstring or nullNoAllowed values: insufficient_history.
sales.directionstring or nullNoAllowed values: up, down, unchanged.
sales.disputesobjectNoDisputes (actual Stripe and PayPal chargebacks) against checkout sales attributed to this period by their own money-movement effective date (issued-period / occurrence basis), independent of when the disputed sale occurred. Disputes against subscription renewal charges are reported on the rebill figures (subscription stats), not here; a dispute against the first charge of a subscription is a checkout sale and stays here. Each dispute money movement is counted once. Network warnings are Pre-Dispute Alerts and are not included.
sales.disputes.countintegerNoDispute events in this period. Minimum: 0.
sales.disputes.percentageOfSalesnumber or nullNoDispute count divided by gross sales count, HALF_UP to two places; null when gross sales count is zero and not clamped above 100%.
sales.previousFromstring (date-time) or nullNoStart of the previous equal-duration financial period when history is covered.
sales.previousSalesinteger or nullNoNon-rebill purchase transactions attributed to the previous period by financial business time. Minimum: 0.
sales.previousTostring (date-time) or nullNoEnd of the previous equal-duration financial period when history is covered.
sales.refundsobjectNoRefunds against checkout sales attributed to this period by their own financial effective date (issued-period / occurrence basis), independent of when the refunded sale occurred. Refunds against subscription renewal charges are reported on the rebill figures (subscription stats), not here; a refund against the first charge of a subscription (including a trial conversion) is a checkout sale and stays here. Each refund is counted once.
sales.refunds.countintegerNoRefund events in this period. Minimum: 0.
sales.refunds.percentageOfSalesnumber or nullNoRefund count divided by gross sales count, HALF_UP to two places; null when gross sales count is zero and not clamped above 100%.
sales.totalintegerNoNon-rebill purchase transactions whose financial business time is in this period. Minimum: 0.
sales.upsellsobjectNoSuccessful automatic checkout sales in this period whose resolved customer completed a standard buyer-present checkout for the same client at or before the automatic sale and strictly less than 24 hours earlier. Each automatic sale is counted once.
sales.upsells.countintegerNoQualifying automatic sales in this period. Minimum: 0.
sales.upsells.percentageOfSalesnumber or nullNoUpsell count divided by gross checkout sales count, HALF_UP to two places; null when gross sales count is zero.
sourceCurrencySegmentsarray of objectYesGross source amounts grouped by uppercase ISO currency. Amounts are summed exactly then rounded once to that source currency minor unit; no counts are repeated here.
sourceCurrencySegments[].currencystringYesMinimum length: 3. Maximum length: 3.
sourceCurrencySegments[].disputeAmountnumberYes
sourceCurrencySegments[].refundAmountnumberYes
sourceCurrencySegments[].salesAmountnumberYes
sourceCurrencySegments[].sessionCohortSalesAmountnumberYes
sourceCurrencySegments[].upsellAmountnumberYes

Errors

StatusDescription
401Client Basic authentication or OAuth2 bearer authentication is required.

Create a reusable checkout link

PolicyValue
OperationPOST /v1/checkout-links
Classmutating
Riskmedium
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
avsCheckbodybooleanNoEnable AVS (Address Verification) on checkouts opened from this link. Default: false.
avsFieldsbodyobject or nullNoPer-field AVS exposure. Requires avsCheck to be enabled. Fields the gateway requires for the buyer's country are always collected regardless of this selection.
avsFields.citybodybooleanNoExpose the city field.
avsFields.line1bodybooleanNoExpose the street address line 1 field.
avsFields.line2bodybooleanNoExpose the street address line 2 field.
avsFields.postalbodybooleanNoExpose the postal / ZIP code field.
avsFields.statebodybooleanNoExpose the state / province / region field.
cancelUrlbodystring (uri) or nullNoMaximum length: 2048.
captureMethodbodystringNoAllowed values: automatic, manual. Default: automatic.
checkoutModebodystringNoCheckout mode the hosted link opens in. Only full is currently supported on a reusable link; other modes are rejected because a fresh anonymous buyer lacks their prerequisites. Allowed values: auto, full, confirm, setup. Default: full.
couponCodesbodyarray of stringNoDefault: [].
currencybodystringYesMinimum length: 3. Maximum length: 3.
expiresAtbodystring (date-time) or nullNo
productsbodyarray of objectYesMinimum items: 1.
products[].codebodystringYes
products[].quantitybodynumberYesMinimum: 1.
products[].variantIdbodystring (uuid)No
successUrlbodystring (uri) or nullNoMaximum length: 2048.
surfacebodystringNoHosted-page surface: full_detail renders order summary and merchandising around the embed; widget_only renders just the payment embed. The AVS form lives inside the embed in both surfaces. Allowed values: full_detail, widget_only. Default: full_detail.

Result

Returns 201 with a JSON body.

FieldTypeRequiredDescription
avsCheckbooleanYes
avsFieldsobject or nullYes
avsFields.citybooleanNoExpose the city field.
avsFields.line1booleanNoExpose the street address line 1 field.
avsFields.line2booleanNoExpose the street address line 2 field.
avsFields.postalbooleanNoExpose the postal / ZIP code field.
avsFields.statebooleanNoExpose the state / province / region field.
cancelUrlstring or nullYes
captureMethodstringYesAllowed values: automatic, manual.
checkoutModestringYesAllowed values: auto, full, confirm, setup.
clientIdstringYes
couponCodesarray of stringYes
createdAtstring (date-time)Yes
currencystringYes
expiresAtstring (date-time) or nullYes
isActivebooleanYes
productsarray of objectYes
products[].codestringYes
products[].quantitynumberYesMinimum: 1.
products[].variantIdstring (uuid)No
publicTokenstringYes
successUrlstring or nullYes
surfacestringYesAllowed values: full_detail, widget_only.
updatedAtstring (date-time)Yes
urlstringYes
uuidstringYes

Errors

StatusDescription
400The checkout link options are invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
422The selected catalog offer is unavailable.

Deactivate a reusable checkout link

PolicyValue
OperationDELETE /v1/checkout-links/{uuid}
Classmutating
Riskhigh
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tierrestricted
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes

Result

Returns 204 with no body.

Errors

StatusDescription
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
404No checkout link with the requested id exists for this client.

Get a reusable checkout link

PolicyValue
OperationGET /v1/checkout-links/{uuid}
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
avsCheckbooleanYes
avsFieldsobject or nullYes
avsFields.citybooleanNoExpose the city field.
avsFields.line1booleanNoExpose the street address line 1 field.
avsFields.line2booleanNoExpose the street address line 2 field.
avsFields.postalbooleanNoExpose the postal / ZIP code field.
avsFields.statebooleanNoExpose the state / province / region field.
cancelUrlstring or nullYes
captureMethodstringYesAllowed values: automatic, manual.
checkoutModestringYesAllowed values: auto, full, confirm, setup.
clientIdstringYes
couponCodesarray of stringYes
createdAtstring (date-time)Yes
currencystringYes
expiresAtstring (date-time) or nullYes
isActivebooleanYes
productsarray of objectYes
products[].codestringYes
products[].quantitynumberYesMinimum: 1.
products[].variantIdstring (uuid)No
publicTokenstringYes
successUrlstring or nullYes
surfacestringYesAllowed values: full_detail, widget_only.
updatedAtstring (date-time)Yes
urlstringYes
uuidstringYes

Errors

StatusDescription
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
404No checkout link with the requested id exists for this client.

List reusable checkout links

PolicyValue
OperationGET /v1/checkout-links
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
pagequeryintegerNo1-based page number for paginated list endpoints. Default: 1. Minimum: 1.
limitqueryintegerNoMaximum number of records to return per page. Default: 20. Minimum: 1. Maximum: 100.
sortquerystringNoSort by one allowed field. Use exactly one of sort[asc] or sort[desc]. Allowed fields: id, createdAt, updatedAt, expiresAt, isActive, currency, checkoutMode, captureMethod, surface, avsCheck. Default: createdAt DESC. Allowed values: id, createdAt, updatedAt, expiresAt, isActive, currency, checkoutMode, captureMethod, surface, avsCheck.
relationquerystringNoThis endpoint does not support relation aliases. Supplying relation returns 400.
avsCheckquerystringNoWhether AVS collection is enabled for the link. Equality filter. Pass without operator for exact match. Allowed values: true, false.
cancelUrlquerystringNoBuyer cancellation destination URL. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
captureMethodquerystringNoCheckout capture method. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: automatic, manual.
checkoutModequerystringNoCheckout mode stored on the link. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: auto, full, confirm, setup.
couponCodesquerystringNoIndividual coupon codes stored on the link. Pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
createdAtquerystring (date-time)NoCheckout link creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
currencyquerystringNoUppercase ISO 4217 checkout currency. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
expiresAtquerystring (date-time)NoOptional checkout link expiry timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
idquerystring (uuid)NoCheckout link id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
isActivequerystringNoWhether the link can currently resolve for buyers. Equality filter. Pass without operator for exact match. Allowed values: true, false.
productsquerystringNoProduct code or optional variant id stored on the link. Pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
publicTokenquerystringNoOpaque public checkout-link token. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
successUrlquerystringNoBuyer success destination URL. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
surfacequerystringNoHosted checkout presentation surface. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: full_detail, widget_only.
updatedAtquerystring (date-time)NoCheckout link update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
dataarray of objectYes
data[].avsCheckbooleanYes
data[].avsFieldsobject or nullYes
data[].avsFields.citybooleanNoExpose the city field.
data[].avsFields.line1booleanNoExpose the street address line 1 field.
data[].avsFields.line2booleanNoExpose the street address line 2 field.
data[].avsFields.postalbooleanNoExpose the postal / ZIP code field.
data[].avsFields.statebooleanNoExpose the state / province / region field.
data[].cancelUrlstring or nullYes
data[].captureMethodstringYesAllowed values: automatic, manual.
data[].checkoutModestringYesAllowed values: auto, full, confirm, setup.
data[].clientIdstringYes
data[].couponCodesarray of stringYes
data[].createdAtstring (date-time)Yes
data[].currencystringYes
data[].expiresAtstring (date-time) or nullYes
data[].isActivebooleanYes
data[].productsarray of objectYes
data[].products[].codestringYes
data[].products[].quantitynumberYesMinimum: 1.
data[].products[].variantIdstring (uuid)No
data[].publicTokenstringYes
data[].successUrlstring or nullYes
data[].surfacestringYesAllowed values: full_detail, widget_only.
data[].updatedAtstring (date-time)Yes
data[].urlstringYes
data[].uuidstringYes
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.

Update a reusable checkout link

PolicyValue
OperationPATCH /v1/checkout-links/{uuid}
Classmutating
Riskhigh
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tierrestricted
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
uuidpathstringYes
avsCheckbodybooleanNoEnable AVS (Address Verification) on checkouts opened from this link. Default: false.
avsFieldsbodyobject or nullNoPer-field AVS exposure. Requires avsCheck to be enabled. Fields the gateway requires for the buyer's country are always collected regardless of this selection.
avsFields.citybodybooleanNoExpose the city field.
avsFields.line1bodybooleanNoExpose the street address line 1 field.
avsFields.line2bodybooleanNoExpose the street address line 2 field.
avsFields.postalbodybooleanNoExpose the postal / ZIP code field.
avsFields.statebodybooleanNoExpose the state / province / region field.
cancelUrlbodystring (uri) or nullNoMaximum length: 2048.
captureMethodbodystringNoAllowed values: automatic, manual. Default: automatic.
checkoutModebodystringNoCheckout mode the hosted link opens in. Only full is currently supported on a reusable link; other modes are rejected because a fresh anonymous buyer lacks their prerequisites. Allowed values: auto, full, confirm, setup. Default: full.
couponCodesbodyarray of stringNoDefault: [].
currencybodystringNoMinimum length: 3. Maximum length: 3.
expiresAtbodystring (date-time) or nullNo
isActivebodybooleanNo
productsbodyarray of objectNoMinimum items: 1.
products[].codebodystringYes
products[].quantitybodynumberYesMinimum: 1.
products[].variantIdbodystring (uuid)No
successUrlbodystring (uri) or nullNoMaximum length: 2048.
surfacebodystringNoHosted-page surface: full_detail renders order summary and merchandising around the embed; widget_only renders just the payment embed. The AVS form lives inside the embed in both surfaces. Allowed values: full_detail, widget_only. Default: full_detail.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
avsCheckbooleanYes
avsFieldsobject or nullYes
avsFields.citybooleanNoExpose the city field.
avsFields.line1booleanNoExpose the street address line 1 field.
avsFields.line2booleanNoExpose the street address line 2 field.
avsFields.postalbooleanNoExpose the postal / ZIP code field.
avsFields.statebooleanNoExpose the state / province / region field.
cancelUrlstring or nullYes
captureMethodstringYesAllowed values: automatic, manual.
checkoutModestringYesAllowed values: auto, full, confirm, setup.
clientIdstringYes
couponCodesarray of stringYes
createdAtstring (date-time)Yes
currencystringYes
expiresAtstring (date-time) or nullYes
isActivebooleanYes
productsarray of objectYes
products[].codestringYes
products[].quantitynumberYesMinimum: 1.
products[].variantIdstring (uuid)No
publicTokenstringYes
successUrlstring or nullYes
surfacestringYesAllowed values: full_detail, widget_only.
updatedAtstring (date-time)Yes
urlstringYes
uuidstringYes

Errors

StatusDescription
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
404No checkout link with the requested id exists for this client.

getCheckoutDeclineAnalysis

Analyze checkout payment failures

Returns current DECLINE and ERROR transaction-attempt outcomes for the authenticated merchant in an explicit half-open UTC period, grouped by source currency, canonical Flo decline reason, provider, and result. Managed provider objects are selected by lifecycle transition time; legacy append-only attempts use creation time. PENDING and ACTION_REQUIRED continuations and positive SUCCESS/AUTHORIZED outcomes are excluded.

PolicyValue
OperationGET /v1/checkouts/decline-analysis
Classread-only
Riskmedium
Confirmationnot-required
Retrysafe
Rate-limit tieraggregate
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
fromquerystringYesInclusive reporting-period start as an ISO-8601 instant.
toquerystringYesExclusive reporting-period end as an ISO-8601 instant.

Result

Returns 200 with a JSON body. One tenant-scoped current checkout-failure snapshot.

FieldTypeRequiredDescription
affectedCheckoutSessionCountintegerYesDistinct checkout sessions represented by the selected failure attempts. Minimum: 0.
contextobjectYes
context.appliedFiltersarray of objectYesAdditional filters applied after the authoritative tenant boundary. Empty for merchant calls.
context.appliedFilters[].fieldstringYes
context.appliedFilters[].operatorstringYesAllowed values: eq.
context.appliedFilters[].valuestringYes
context.authoritativeLinksarray of objectYesRelative authenticated Flo API links for verifying authoritative source records.
context.authoritativeLinks[].hrefstringYes
context.authoritativeLinks[].relstringYes
context.consistencyobjectYesThe consistency model and its operator-facing freshness caveat.
context.consistency.modelstringYesAllowed values: eventual.
context.consistency.notestringYes
context.currencyobjectYesReporting-currency basis and immutable daily FX snapshots for home/platform totals. Source amounts remain separately segmented.
context.currency.fxobjectYes
context.currency.fx.appliedbooleanYesWhether this aggregate contains monetary values that were FX-valued.
context.currency.fx.effectiveDateTimezonestringYesAllowed values: UTC.
context.currency.fx.methodstringYesAllowed values: daily-exact-or-prior.
context.currency.fx.provisionalbooleanYes
context.currency.fx.snapshotsarray of objectYes
context.currency.fx.snapshots[].provisionalbooleanYes
context.currency.fx.snapshots[].valuationDatestring (date)Yes
context.currency.fx.snapshots[].versionintegerYesMinimum: 1.
context.currency.homeCurrencystring or nullYesMinimum length: 3. Maximum length: 3.
context.currency.reportingCurrencystringYesMinimum length: 3. Maximum length: 3.
context.currency.reportingCurrencyBasisstringYesAllowed values: client-home, platform-usd.
context.dataAsOfstring (date-time)YesThe persisted-data observation boundary for this response.
context.generatedAtstring (date-time)YesWhen the API generated this response.
context.statusSemanticsarray of objectYesCanonical definitions and time bases for statuses and outcomes used in the response.
context.statusSemantics[].appliesToarray of stringYes
context.statusSemantics[].codestringYes
context.statusSemantics[].descriptionstringYes
context.statusSemantics[].timeBasisstringYesAllowed values: created-at, financial-effective-at, billing-cycle-at, attempt-outcome-at.
context.tenantScopeobjectYesThe explicit client-selection mode used by the authenticated backend query.
context.tenantScope.clientIdstring or nullYes
context.tenantScope.kindstringYesAllowed values: authenticated-client, selected-client, all-clients.
context.timeRangeobjectYesThe explicit half-open UTC reporting window applied to the aggregate.
context.timeRange.boundsstringYesAllowed values: [from,to).
context.timeRange.fromstring (date-time)Yes
context.timeRange.timezonestringYesAllowed values: UTC.
context.timeRange.tostring (date-time)Yes
failureAttemptCountintegerYesMinimum: 0.
missingCanonicalReasonAttemptCountintegerYesFailure attempts with no persisted canonical reason. Distinct from the canonical UNKNOWN_DECLINE_REASON bucket. Minimum: 0.
sourceCurrencySegmentsarray of objectYes
sourceCurrencySegments[].affectedCheckoutSessionCountintegerYesMinimum: 1.
sourceCurrencySegments[].currencystring or nullYesMinimum length: 3. Maximum length: 3.
sourceCurrencySegments[].currencyStatusstringYesAllowed values: known, unavailable, mixed.
sourceCurrencySegments[].failureAttemptCountintegerYesMinimum: 1.
sourceCurrencySegments[].groupsarray of objectYes
sourceCurrencySegments[].groups[].affectedCheckoutSessionCountintegerYesMinimum: 1.
sourceCurrencySegments[].groups[].attemptCountintegerYesMinimum: 1.
sourceCurrencySegments[].groups[].canonicalReasonstring or nullYesAllowed values: INSUFFICIENT_FUNDS, DO_NOT_HONOUR, TOO_MANY_ATTEMPTS, PARTIAL_APPROVAL, PAYMENT_GATEWAY_ERROR, TECHNICAL_ERROR, RETRYABLE_DECLINE, UNSUPPORTED_CARD_PURCHASE, USER_ERROR, CVV_INVALID, AVS_FAIL, POSTCODE_INVALID, 3DS_FAIL, EXCEEDS_CARD_LIMIT, CLIENT_ERROR, UNKNOWN_DECLINE_REASON.
sourceCurrencySegments[].groups[].providerstringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
sourceCurrencySegments[].groups[].resultstringYesAllowed values: DECLINE, ERROR.

Errors

StatusDescription
400The reporting range is missing or invalid.
401Client Basic or OAuth2 bearer authentication is required.
403The bearer token does not grant the required merchant read scope.
429The merchant aggregate rate limit was exceeded.

Session_create

Create Checkout Session

Creates and persists a checkout session. Full/Confirm and unnegotiated Auto requests preserve their existing 201 Created / 204 No Content behavior. Auto requests that advertise async-auto-checkout-v1 return 202 Accepted with the session and an autoProcessingPending.statusUrl; payment processing continues asynchronously and clients poll that status URL for the terminal outcome. Full-mode clients may opt into a lightweight shell with deferDataAttachment=true, then attach buyer/catalog data through PATCH /v1/checkouts/sessions/{id}/claim before payment or vault operations. Authentication is optional: a browser or SDK create sends no credentials. A merchant server that creates sessions for its buyers may authenticate with client Basic authentication (client.uuid and an API token) or an OAuth2 bearer token for the body's clientId, and then pass buyerIpAddress so the per-IP session-creation limit counts each buyer instead of the server. Credentials that do not verify, or that belong to another client, are ignored and the create is handled as unauthenticated (no 401/403).

PolicyValue
OperationPOST /v1/checkouts/sessions
Classmutating
Riskcritical
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin, member
Scopesmcp:write

Arguments

This tool takes no arguments.

Result

Returns 201 with a JSON body. A checkout session was created and requires client-side follow-up.

FieldTypeRequiredDescription
autoProcessingAttemptedbooleanNo
autoProcessingErrorobjectNo
autoProcessingError.advicestringNoAdvice for next action.
autoProcessingError.codestringNoStable provider-neutral machine code. stored_payment_method_unsupported means the selected saved method cannot be used for this payment and another method must be chosen. Allowed values: stored_payment_method_unsupported.
autoProcessingError.fieldsarray of objectNo
autoProcessingError.fields[].fieldstringYes
autoProcessingError.fields[].messagestringYes
autoProcessingError.gatewayErrorCodestringNoGateway-specific error code.
autoProcessingError.messagestringNoMessage to display to user.
autoProcessingError.nextActionRedirectUrlstringNoProvider-hosted next-action URL (e.g. Stripe 3DS challenge page) the SDK must render to obtain client authentication. Set together with type=three_d_secure_required; without it the SDK cannot present the challenge and the attempt times out.
autoProcessingError.orderIdstringNoPayPal Order id (or Subscription id, for subscription checkouts) the SDK should bind its DirectPayPalButton to. Returned alongside type=paypal_direct_required so the buyer can re-approve via PayPal without re-creating the intent on the backend.
autoProcessingError.paymentMethodIdstringNoPayment method identifier when available.
autoProcessingError.threeDSecureTokenstringNo3DS token used for 3DS authentication.
autoProcessingError.transactionIdstringNoTransaction ID if available.
autoProcessingError.typestringYesException type based on action. Allowed values: 3ds_required, paypal_redirect_required, paypal_direct_required, unknown.
autoProcessingPendingobjectNo
autoProcessingPending.retryAfterMsnumberYes
autoProcessingPending.sessionIdstringYes
autoProcessingPending.sessionUrlstringYes
autoProcessingPending.settlementStatusstringNoPresent only when the session's first payment was accepted by the provider and is still settling (bank debit). A plain fulfilment-lock wait carries no key at all. Allowed values: pending, settled, failed.
autoProcessingPending.statusUrlstringYes
autoProcessingPending.typestringYes
dataobjectYes
data.accountDataobjectYes
data.accountData.addressLine1string or nullYesDefault: null.
data.accountData.addressLine2string or nullYesDefault: null.
data.accountData.citystring or nullYesDefault: null.
data.accountData.countrystring or nullYesDefault: null.
data.accountData.emailstring or nullYes
data.accountData.firstNamestringYes
data.accountData.genderstring or nullYesDefault: null.
data.accountData.lastNamestringYes
data.accountData.statestring or nullYesDefault: null.
data.accountData.userIdstring or nullYes
data.accountData.zipstring or nullYesDefault: null.
data.advertisedPaymentMethodsarray of objectNoSetup sessions only. The payment methods this setup session can save, each with the gateway data a client needs to render it, snapshotted when the session was created. Derived from the same eligibility policy as checkout; non-reusable methods are omitted. Absent on purchase sessions and on setup sessions created before the field existed.
data.advertisedPaymentMethods[].environmentstringYesEnvironment of the selected gateway account. Allowed values: stage, production.
data.advertisedPaymentMethods[].familystringYesRendering group: card, wallet, paypal or apm. Allowed values: card, wallet, paypal, apm.
data.advertisedPaymentMethods[].gatewayIdstringYesThe gateway account Flopay selected for this method. Chosen by Flopay, not by the merchant.
data.advertisedPaymentMethods[].paymentMethodTypestringYesProvider payment method type to render: card, a Stripe PaymentMethod.type such as apple_pay or sepa_debit, or paypal_vaulted for PayPal.
data.advertisedPaymentMethods[].providerTypestringYesProvider of the selected gateway account. Allowed values: stripe, paypal, worldpay_corporate_gateway.
data.advertisedPaymentMethods[].publishableKeystring or nullYesPublishable key or client id of the selected gateway account, for the provider SDK.
data.authorizationExpiresAtstring (date-time) or nullYes
data.authorizationVoidReasonstring or nullYesAllowed values: merchant_requested, expired, provider_canceled.
data.avsCheckbooleanYesWhether AVS was enabled for this session.
data.buyerIdentifiedbooleanYesFalse when the session has no buyer email yet (an anonymous / Flo-hosted checkout). Lets a reader distinguish "email not collected yet" from an empty email: attach one by re-entering the claim endpoint with a buyer block. Always true for every session created with a buyer.
data.cancelUrlstring or nullYes
data.captureMethodstringYesWhether the checkout captures immediately or reserves funds for merchant capture. Allowed values: automatic, manual.
data.checkoutLayoutstring or nullYesdefault_layout, buttons_layout, or custom_layout.
data.checkoutMetadataobjectNoImmutable non-sensitive client context supplied when the checkout session was created.
data.checkoutModestringYesAllowed values: auto, full, confirm, setup.
data.checkoutTypestring or nullYesstandard_checkout or embedded_checkout.
data.clientIdstring or nullYesUUID of the Flopay client account that owns this checkout session. Returned so SDKs and the demo portal can keep multi-account sessions in sync with the right client.
data.couponsarray of stringYes
data.createdAtstring (date-time)Yes
data.currencystringNoSetup sessions only. The session currency as a three-letter upper-case ISO 4217 code: the currency resolved for the customer when the session was created (the currency of the create request, else their most recent successful purchase), else the currency of the card gateway the setup selected. A client passes it to a provider SDK that needs one to render an advertised method. Absent when neither is known, and on purchase sessions, whose currency is on each product.
data.dataAttachmentDeferredbooleanYesTrue only for an opt-in lightweight session that still requires buyer and catalog data through the claim endpoint.
data.discountAmountnumberYesTotal reduction in major units of the session currency: includes both sale savings and coupon reductions (subtotalAmount - totalAmount).
data.futureUsestringNoEvery read, purchase and setup. The usage applied to every reusable intent of this session, the same name and values as futureUse on the setup create request: exactly the setup_future_usage of its PaymentIntents and the usage of its SetupIntents. Future use is platform policy, so it is off_session. A method listed in futureUseUnsupported is the exception: its intent carries no future-use parameter. A client declares this value on its Elements and never guesses one. Allowed values: on_session, off_session.
data.futureUseUnsupportedarray of objectNoEvery method enabled or advertised on this session that is not set up for reuse: its intent carries no future-use parameter, so a client declares no usage for it. apple_pay and google_pay are listed together or not at all. Absent when there are none.
data.futureUseUnsupported[].paymentMethodTypestringYesThe method left unsaved: a Stripe PaymentMethod.type such as affirm, or a wallet label such as apple_pay.
data.futureUseUnsupported[].reasonstringYesWhy the method is not set up for reuse, as an open snake_case string. Known values: not_reusable (the platform does not set the method up for reuse: the provider documents it as single-use, such as affirm, or its reuse depends on the account and Flopay has no per-account source for it, as for klarna and alipay), account_not_enabled (the routed gateway explicitly opted out of reusing the method: today PayPal on a Stripe gateway whose paypal_capabilities sets vaulting: false) and paired_wallet_not_reusable (the partner of an Apple Pay / Google Pay wallet that cannot be reused; the two wallets are always listed together). Clients must accept values not listed here.
data.gatewaysobjectYes
data.gateways.paypalobject or nullYes
data.gateways.paypal.enabledPaymentMethodCountriesobjectYesPer-method buyer-country gate; methods omitted here are country-agnostic.
data.gateways.paypal.enabledPaymentMethodsarray of stringYesStripe payment method types enabled on the routed gateway account, filtered against the session's mode and with card excluded.
data.gateways.paypal.environmentstringYesAllowed values: stage, production.
data.gateways.paypal.providerObjectTypestringNoAllowed values: order, setup_token.
data.gateways.paypal.publishableKeystring or nullYes
data.gateways.stripeobject or nullYes
data.gateways.stripe.enabledPaymentMethodCountriesobjectYesPer-method buyer-country gate; methods omitted here are country-agnostic.
data.gateways.stripe.enabledPaymentMethodsarray of stringYesStripe payment method types enabled on the routed gateway account, filtered against the session's mode and with card excluded.
data.gateways.stripe.environmentstringYesAllowed values: stage, production.
data.gateways.stripe.providerObjectTypestringNoAllowed values: order, setup_token.
data.gateways.stripe.publishableKeystring or nullYes
data.gateways.worldpayCorporateGatewayobjectNo
data.gateways.worldpayCorporateGateway.enabledPaymentMethodCountriesobjectYesPer-method buyer-country gate; methods omitted here are country-agnostic.
data.gateways.worldpayCorporateGateway.enabledPaymentMethodsarray of stringYesStripe payment method types enabled on the routed gateway account, filtered against the session's mode and with card excluded.
data.gateways.worldpayCorporateGateway.environmentstringYesAllowed values: stage, production.
data.gateways.worldpayCorporateGateway.providerObjectTypestringNoAllowed values: order, setup_token.
data.gateways.worldpayCorporateGateway.publishableKeystring or nullYes
data.itemsarray of objectYesDeprecated. Use products[] filtered by type === "item". Removal tracked separately.
data.items[].checkoutSessionIdstringYes
data.items[].currencystringYes
data.items[].metadataobject or nullYes
data.items[].providerItemDescriptionstring or nullNo
data.items[].providerItemIdstringYes
data.items[].providerItemNamestringYes
data.items[].quantitynumberYes
data.items[].totalAmountnumberYes
data.items[].uuidstringYes
data.noncestringYes
data.productsarray of objectYes
data.products[].checkoutSessionIdstringYes
data.products[].codestringYes
data.products[].currencystringYes
data.products[].descriptionstring or nullNo
data.products[].metadataobject or nullYes
data.products[].namestringYes
data.products[].originalAmountnumber or nullNoThe original (non-sale) price in major units. Present only when a sale is active, allowing the client to display strikethrough pricing.
data.products[].overrideAmountnumber or nullNoSet to 0 when the resolved subscription product has a non-zero recurring trial period. Absent when the catalog was not resolved.
data.products[].productIdstring or nullNoStable Flopay catalog product UUID.
data.products[].productPriceIdstring or nullNoStable Flopay catalog price UUID.
data.products[].quantitynumberYes
data.products[].rebillAmountnumber or nullNoGo-forward renewal price in major units for a subscription product. When a sale is active and rebillAtSaleAmount is false this is the full (non-sale) amount; when rebillAtSaleAmount is true it stays the sale price. Absent for non-subscription products.
data.products[].rebillAtSaleAmountboolean or nullNoWhether an active sale price is retained for the lifetime of the subscription (true) or applies to the first charge only (false). Absent for non-subscription products.
data.products[].saleAmountnumber or nullNoActive sale price in major units. Present only when the product has a sale running within its valid date range.
data.products[].saleEndsAtstring (date-time) or nullNoEnd of the sale window (inclusive). Null when the sale has no end constraint.
data.products[].saleStartsAtstring (date-time) or nullNoStart of the sale window (inclusive). Null when the sale has no start constraint.
data.products[].totalAmountnumberYes
data.products[].typestringYesAllowed values: subscription, item.
data.products[].uuidstringYes
data.products[].variantIdstring or nullNoSelected Flopay catalog variant UUID.
data.statusstringYesAllowed values: pending, authorized, completed, voided.
data.subscriptionsarray of objectYesDeprecated. Use products[] filtered by type === "subscription". Removal tracked separately.
data.subscriptions[].checkoutSessionIdstringYes
data.subscriptions[].currencystringYes
data.subscriptions[].metadataobject or nullYes
data.subscriptions[].overrideAmountnumber or nullNoSet to 0 when the resolved product has a non-zero recurring trial period. Absent on responses where the catalog was not resolved.
data.subscriptions[].providerPlanDescriptionstring or nullYes
data.subscriptions[].providerPlanIdstringYes
data.subscriptions[].providerPlanNamestring or nullYes
data.subscriptions[].quantitynumberYes
data.subscriptions[].totalAmountnumberYes
data.subscriptions[].uuidstringYes
data.subtotalAmountnumberYesCart subtotal in major units using original (non-sale) catalog prices. When no sale is active this equals the sum of product prices before coupon reductions.
data.successUrlstring or nullYes
data.tagsDataobjectYes
data.tagsData.googleContainerIdstring or nullYes
data.tagsData.sessionIdstring or nullYes
data.tagsData.testEventCodestring or nullYes
data.totalAmountnumberYesFinal cart total in major units (subtotalAmount - discountAmount), clamped at zero.
data.transactionAttemptsarray of objectYes
data.transactionAttempts[].buyerFeedbackobjectNoPresent only when Flo stopped this attempt itself, before any gateway work, because the checkout made too many payment attempts in a short time (buyerFeedback.code=attempt_limited). Nothing was charged; show buyerFeedback.message and let the buyer try again later. Absent on every other attempt.
data.transactionAttempts[].buyerFeedback.codestringYesattempt_limited: the checkout made too many payment attempts in a short time, so this attempt was stopped before any gateway work and nothing was charged. Allowed values: attempt_limited.
data.transactionAttempts[].buyerFeedback.messagestringYesWording to show the buyer.
data.transactionAttempts[].buyerFeedback.recoverablebooleanYestrue when the buyer can try the payment again later in the same checkout.
data.transactionAttempts[].checkoutSessionsUuidstringYes
data.transactionAttempts[].codestringNoStable provider-neutral terminal outcome code when one is available. Allowed values: stored_payment_method_unsupported.
data.transactionAttempts[].createdAtstring (date-time)Yes
data.transactionAttempts[].declineReasonstring or nullYesAllowed values: INSUFFICIENT_FUNDS, DO_NOT_HONOUR, TOO_MANY_ATTEMPTS, PARTIAL_APPROVAL, PAYMENT_GATEWAY_ERROR, TECHNICAL_ERROR, RETRYABLE_DECLINE, UNSUPPORTED_CARD_PURCHASE, USER_ERROR, CVV_INVALID, AVS_FAIL, POSTCODE_INVALID, 3DS_FAIL, EXCEEDS_CARD_LIMIT, CLIENT_ERROR, UNKNOWN_DECLINE_REASON.
data.transactionAttempts[].gatewaystringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data.transactionAttempts[].nextActionRedirectUrlstring or nullYesProvider-hosted next-action URL (e.g. Stripe 3DS challenge page). Populated together with result=ACTION_REQUIRED; the SDK loads this URL in an iframe / popup to let the buyer complete the challenge.
data.transactionAttempts[].providerIntentIdstring or nullYesProvider PaymentIntent id (e.g. Stripe pi_*) the attempt is bound to. Surfaced so the SDK can correlate a 3DS challenge to its originating intent and so /3ds/complete has the id without re-parsing the client secret.
data.transactionAttempts[].resultstringYesAllowed values: PENDING, AUTHORIZED, SUCCESS, DECLINE, ERROR, ACTION_REQUIRED.
data.transactionAttempts[].uuidstringYes
data.uuidstringYes
vaultobjectNoEmbedded vault capture credentials for a pending card-capable session, independent of the reported SDK version. The explicit POST /v1/checkouts/sessions/{id}/vault/capture endpoint remains available for idempotent recovery and retry. When production verification is enforced the block carries only a verification descriptor (no html, url or secret): mount the hosted card form, which runs the check before any capture is issued.
vault.expectedOriginstringNoExact hosted-form origin the SDK targets and accepts for vault postMessages.
vault.htmlstringNoPCIVault hosted-form HTML the SDK injects into the buyer flow. Already wrapped in the Flo bundle (event listeners, postMessage handshake).
vault.messageTokenstringNoPer-session token authenticating messages exchanged with the hosted vault form.
vault.secretstringNoPCIVault submit secret used in the form POST.
vault.urlstringNoPCIVault submit URL the hosted form POSTs to.

Errors

StatusDescription
400The checkout session request could not be created.
409The supplied Idempotency-Key was already used for a different request body. The original operation is preserved; resubmit with a fresh key to run a new checkout.
422The checkout session references catalog entries (products or coupons) that are unknown, deleted, or not applicable. The response body contains an issues array with one entry per validation failure, plus a declineReason / gatewayDeclineReason pair that lets dashboards classify the rejection alongside payment-time declines. Product-side issues land on CLIENT_ERROR / flo_invalid_product_code; coupon-only failures land on USER_ERROR / flo_invalid_coupon_code. Mixed product+coupon failures inherit the product-side decline metadata.
424Throws in cases where Billing service cannot get data from billing provider.

Session_createSetup

Create Card Setup Session

Creates a no-charge card setup session for an existing customer linked to the authenticated client.

PolicyValue
OperationPOST /v1/checkouts/sessions/setup
Classmutating
Riskmedium
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tiermutation
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
cancelUrlbodystring or nullNoDefault: null. Maximum length: 2048.
countrybodystring or nullNoOptional ISO 3166-1 alpha-2 country used independently for setup gateway routing. When omitted, Flo may fill it from this customer's billed-address history with this merchant. Default: null.
currencybodystring or nullNoOptional three-letter intended transaction currency used independently for setup routing. When omitted, Flo may fill it from this customer's most recent successful purchase with this merchant. Default: null.
futureUsebodystring or nullNoDeprecated and ignored: it has no effect. The value is still accepted, so existing requests keep working, and the session read reports the applied usage as futureUse. Allowed values: on_session, off_session. Default: null.
successUrlbodystring or nullNoDefault: null. Maximum length: 2048.
userIdbodystring (uuid)YesFlo customer UUID. The customer must already belong to the authenticated client.

Result

Returns 201 with a JSON body. A checkout session was created and requires client-side follow-up.

FieldTypeRequiredDescription
autoProcessingAttemptedbooleanNo
autoProcessingErrorobjectNo
autoProcessingError.advicestringNoAdvice for next action.
autoProcessingError.codestringNoStable provider-neutral machine code. stored_payment_method_unsupported means the selected saved method cannot be used for this payment and another method must be chosen. Allowed values: stored_payment_method_unsupported.
autoProcessingError.fieldsarray of objectNo
autoProcessingError.fields[].fieldstringYes
autoProcessingError.fields[].messagestringYes
autoProcessingError.gatewayErrorCodestringNoGateway-specific error code.
autoProcessingError.messagestringNoMessage to display to user.
autoProcessingError.nextActionRedirectUrlstringNoProvider-hosted next-action URL (e.g. Stripe 3DS challenge page) the SDK must render to obtain client authentication. Set together with type=three_d_secure_required; without it the SDK cannot present the challenge and the attempt times out.
autoProcessingError.orderIdstringNoPayPal Order id (or Subscription id, for subscription checkouts) the SDK should bind its DirectPayPalButton to. Returned alongside type=paypal_direct_required so the buyer can re-approve via PayPal without re-creating the intent on the backend.
autoProcessingError.paymentMethodIdstringNoPayment method identifier when available.
autoProcessingError.threeDSecureTokenstringNo3DS token used for 3DS authentication.
autoProcessingError.transactionIdstringNoTransaction ID if available.
autoProcessingError.typestringYesException type based on action. Allowed values: 3ds_required, paypal_redirect_required, paypal_direct_required, unknown.
autoProcessingPendingobjectNo
autoProcessingPending.retryAfterMsnumberYes
autoProcessingPending.sessionIdstringYes
autoProcessingPending.sessionUrlstringYes
autoProcessingPending.settlementStatusstringNoPresent only when the session's first payment was accepted by the provider and is still settling (bank debit). A plain fulfilment-lock wait carries no key at all. Allowed values: pending, settled, failed.
autoProcessingPending.statusUrlstringYes
autoProcessingPending.typestringYes
dataobjectYes
data.accountDataobjectYes
data.accountData.addressLine1string or nullYesDefault: null.
data.accountData.addressLine2string or nullYesDefault: null.
data.accountData.citystring or nullYesDefault: null.
data.accountData.countrystring or nullYesDefault: null.
data.accountData.emailstring or nullYes
data.accountData.firstNamestringYes
data.accountData.genderstring or nullYesDefault: null.
data.accountData.lastNamestringYes
data.accountData.statestring or nullYesDefault: null.
data.accountData.userIdstring or nullYes
data.accountData.zipstring or nullYesDefault: null.
data.advertisedPaymentMethodsarray of objectNoSetup sessions only. The payment methods this setup session can save, each with the gateway data a client needs to render it, snapshotted when the session was created. Derived from the same eligibility policy as checkout; non-reusable methods are omitted. Absent on purchase sessions and on setup sessions created before the field existed.
data.advertisedPaymentMethods[].environmentstringYesEnvironment of the selected gateway account. Allowed values: stage, production.
data.advertisedPaymentMethods[].familystringYesRendering group: card, wallet, paypal or apm. Allowed values: card, wallet, paypal, apm.
data.advertisedPaymentMethods[].gatewayIdstringYesThe gateway account Flopay selected for this method. Chosen by Flopay, not by the merchant.
data.advertisedPaymentMethods[].paymentMethodTypestringYesProvider payment method type to render: card, a Stripe PaymentMethod.type such as apple_pay or sepa_debit, or paypal_vaulted for PayPal.
data.advertisedPaymentMethods[].providerTypestringYesProvider of the selected gateway account. Allowed values: stripe, paypal, worldpay_corporate_gateway.
data.advertisedPaymentMethods[].publishableKeystring or nullYesPublishable key or client id of the selected gateway account, for the provider SDK.
data.authorizationExpiresAtstring (date-time) or nullYes
data.authorizationVoidReasonstring or nullYesAllowed values: merchant_requested, expired, provider_canceled.
data.avsCheckbooleanYesWhether AVS was enabled for this session.
data.buyerIdentifiedbooleanYesFalse when the session has no buyer email yet (an anonymous / Flo-hosted checkout). Lets a reader distinguish "email not collected yet" from an empty email: attach one by re-entering the claim endpoint with a buyer block. Always true for every session created with a buyer.
data.cancelUrlstring or nullYes
data.captureMethodstringYesWhether the checkout captures immediately or reserves funds for merchant capture. Allowed values: automatic, manual.
data.checkoutLayoutstring or nullYesdefault_layout, buttons_layout, or custom_layout.
data.checkoutMetadataobjectNoImmutable non-sensitive client context supplied when the checkout session was created.
data.checkoutModestringYesAllowed values: auto, full, confirm, setup.
data.checkoutTypestring or nullYesstandard_checkout or embedded_checkout.
data.clientIdstring or nullYesUUID of the Flopay client account that owns this checkout session. Returned so SDKs and the demo portal can keep multi-account sessions in sync with the right client.
data.couponsarray of stringYes
data.createdAtstring (date-time)Yes
data.currencystringNoSetup sessions only. The session currency as a three-letter upper-case ISO 4217 code: the currency resolved for the customer when the session was created (the currency of the create request, else their most recent successful purchase), else the currency of the card gateway the setup selected. A client passes it to a provider SDK that needs one to render an advertised method. Absent when neither is known, and on purchase sessions, whose currency is on each product.
data.dataAttachmentDeferredbooleanYesTrue only for an opt-in lightweight session that still requires buyer and catalog data through the claim endpoint.
data.discountAmountnumberYesTotal reduction in major units of the session currency: includes both sale savings and coupon reductions (subtotalAmount - totalAmount).
data.futureUsestringNoEvery read, purchase and setup. The usage applied to every reusable intent of this session, the same name and values as futureUse on the setup create request: exactly the setup_future_usage of its PaymentIntents and the usage of its SetupIntents. Future use is platform policy, so it is off_session. A method listed in futureUseUnsupported is the exception: its intent carries no future-use parameter. A client declares this value on its Elements and never guesses one. Allowed values: on_session, off_session.
data.futureUseUnsupportedarray of objectNoEvery method enabled or advertised on this session that is not set up for reuse: its intent carries no future-use parameter, so a client declares no usage for it. apple_pay and google_pay are listed together or not at all. Absent when there are none.
data.futureUseUnsupported[].paymentMethodTypestringYesThe method left unsaved: a Stripe PaymentMethod.type such as affirm, or a wallet label such as apple_pay.
data.futureUseUnsupported[].reasonstringYesWhy the method is not set up for reuse, as an open snake_case string. Known values: not_reusable (the platform does not set the method up for reuse: the provider documents it as single-use, such as affirm, or its reuse depends on the account and Flopay has no per-account source for it, as for klarna and alipay), account_not_enabled (the routed gateway explicitly opted out of reusing the method: today PayPal on a Stripe gateway whose paypal_capabilities sets vaulting: false) and paired_wallet_not_reusable (the partner of an Apple Pay / Google Pay wallet that cannot be reused; the two wallets are always listed together). Clients must accept values not listed here.
data.gatewaysobjectYes
data.gateways.paypalobject or nullYes
data.gateways.paypal.enabledPaymentMethodCountriesobjectYesPer-method buyer-country gate; methods omitted here are country-agnostic.
data.gateways.paypal.enabledPaymentMethodsarray of stringYesStripe payment method types enabled on the routed gateway account, filtered against the session's mode and with card excluded.
data.gateways.paypal.environmentstringYesAllowed values: stage, production.
data.gateways.paypal.providerObjectTypestringNoAllowed values: order, setup_token.
data.gateways.paypal.publishableKeystring or nullYes
data.gateways.stripeobject or nullYes
data.gateways.stripe.enabledPaymentMethodCountriesobjectYesPer-method buyer-country gate; methods omitted here are country-agnostic.
data.gateways.stripe.enabledPaymentMethodsarray of stringYesStripe payment method types enabled on the routed gateway account, filtered against the session's mode and with card excluded.
data.gateways.stripe.environmentstringYesAllowed values: stage, production.
data.gateways.stripe.providerObjectTypestringNoAllowed values: order, setup_token.
data.gateways.stripe.publishableKeystring or nullYes
data.gateways.worldpayCorporateGatewayobjectNo
data.gateways.worldpayCorporateGateway.enabledPaymentMethodCountriesobjectYesPer-method buyer-country gate; methods omitted here are country-agnostic.
data.gateways.worldpayCorporateGateway.enabledPaymentMethodsarray of stringYesStripe payment method types enabled on the routed gateway account, filtered against the session's mode and with card excluded.
data.gateways.worldpayCorporateGateway.environmentstringYesAllowed values: stage, production.
data.gateways.worldpayCorporateGateway.providerObjectTypestringNoAllowed values: order, setup_token.
data.gateways.worldpayCorporateGateway.publishableKeystring or nullYes
data.itemsarray of objectYesDeprecated. Use products[] filtered by type === "item". Removal tracked separately.
data.items[].checkoutSessionIdstringYes
data.items[].currencystringYes
data.items[].metadataobject or nullYes
data.items[].providerItemDescriptionstring or nullNo
data.items[].providerItemIdstringYes
data.items[].providerItemNamestringYes
data.items[].quantitynumberYes
data.items[].totalAmountnumberYes
data.items[].uuidstringYes
data.noncestringYes
data.productsarray of objectYes
data.products[].checkoutSessionIdstringYes
data.products[].codestringYes
data.products[].currencystringYes
data.products[].descriptionstring or nullNo
data.products[].metadataobject or nullYes
data.products[].namestringYes
data.products[].originalAmountnumber or nullNoThe original (non-sale) price in major units. Present only when a sale is active, allowing the client to display strikethrough pricing.
data.products[].overrideAmountnumber or nullNoSet to 0 when the resolved subscription product has a non-zero recurring trial period. Absent when the catalog was not resolved.
data.products[].productIdstring or nullNoStable Flopay catalog product UUID.
data.products[].productPriceIdstring or nullNoStable Flopay catalog price UUID.
data.products[].quantitynumberYes
data.products[].rebillAmountnumber or nullNoGo-forward renewal price in major units for a subscription product. When a sale is active and rebillAtSaleAmount is false this is the full (non-sale) amount; when rebillAtSaleAmount is true it stays the sale price. Absent for non-subscription products.
data.products[].rebillAtSaleAmountboolean or nullNoWhether an active sale price is retained for the lifetime of the subscription (true) or applies to the first charge only (false). Absent for non-subscription products.
data.products[].saleAmountnumber or nullNoActive sale price in major units. Present only when the product has a sale running within its valid date range.
data.products[].saleEndsAtstring (date-time) or nullNoEnd of the sale window (inclusive). Null when the sale has no end constraint.
data.products[].saleStartsAtstring (date-time) or nullNoStart of the sale window (inclusive). Null when the sale has no start constraint.
data.products[].totalAmountnumberYes
data.products[].typestringYesAllowed values: subscription, item.
data.products[].uuidstringYes
data.products[].variantIdstring or nullNoSelected Flopay catalog variant UUID.
data.statusstringYesAllowed values: pending, authorized, completed, voided.
data.subscriptionsarray of objectYesDeprecated. Use products[] filtered by type === "subscription". Removal tracked separately.
data.subscriptions[].checkoutSessionIdstringYes
data.subscriptions[].currencystringYes
data.subscriptions[].metadataobject or nullYes
data.subscriptions[].overrideAmountnumber or nullNoSet to 0 when the resolved product has a non-zero recurring trial period. Absent on responses where the catalog was not resolved.
data.subscriptions[].providerPlanDescriptionstring or nullYes
data.subscriptions[].providerPlanIdstringYes
data.subscriptions[].providerPlanNamestring or nullYes
data.subscriptions[].quantitynumberYes
data.subscriptions[].totalAmountnumberYes
data.subscriptions[].uuidstringYes
data.subtotalAmountnumberYesCart subtotal in major units using original (non-sale) catalog prices. When no sale is active this equals the sum of product prices before coupon reductions.
data.successUrlstring or nullYes
data.tagsDataobjectYes
data.tagsData.googleContainerIdstring or nullYes
data.tagsData.sessionIdstring or nullYes
data.tagsData.testEventCodestring or nullYes
data.totalAmountnumberYesFinal cart total in major units (subtotalAmount - discountAmount), clamped at zero.
data.transactionAttemptsarray of objectYes
data.transactionAttempts[].buyerFeedbackobjectNoPresent only when Flo stopped this attempt itself, before any gateway work, because the checkout made too many payment attempts in a short time (buyerFeedback.code=attempt_limited). Nothing was charged; show buyerFeedback.message and let the buyer try again later. Absent on every other attempt.
data.transactionAttempts[].buyerFeedback.codestringYesattempt_limited: the checkout made too many payment attempts in a short time, so this attempt was stopped before any gateway work and nothing was charged. Allowed values: attempt_limited.
data.transactionAttempts[].buyerFeedback.messagestringYesWording to show the buyer.
data.transactionAttempts[].buyerFeedback.recoverablebooleanYestrue when the buyer can try the payment again later in the same checkout.
data.transactionAttempts[].checkoutSessionsUuidstringYes
data.transactionAttempts[].codestringNoStable provider-neutral terminal outcome code when one is available. Allowed values: stored_payment_method_unsupported.
data.transactionAttempts[].createdAtstring (date-time)Yes
data.transactionAttempts[].declineReasonstring or nullYesAllowed values: INSUFFICIENT_FUNDS, DO_NOT_HONOUR, TOO_MANY_ATTEMPTS, PARTIAL_APPROVAL, PAYMENT_GATEWAY_ERROR, TECHNICAL_ERROR, RETRYABLE_DECLINE, UNSUPPORTED_CARD_PURCHASE, USER_ERROR, CVV_INVALID, AVS_FAIL, POSTCODE_INVALID, 3DS_FAIL, EXCEEDS_CARD_LIMIT, CLIENT_ERROR, UNKNOWN_DECLINE_REASON.
data.transactionAttempts[].gatewaystringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data.transactionAttempts[].nextActionRedirectUrlstring or nullYesProvider-hosted next-action URL (e.g. Stripe 3DS challenge page). Populated together with result=ACTION_REQUIRED; the SDK loads this URL in an iframe / popup to let the buyer complete the challenge.
data.transactionAttempts[].providerIntentIdstring or nullYesProvider PaymentIntent id (e.g. Stripe pi_*) the attempt is bound to. Surfaced so the SDK can correlate a 3DS challenge to its originating intent and so /3ds/complete has the id without re-parsing the client secret.
data.transactionAttempts[].resultstringYesAllowed values: PENDING, AUTHORIZED, SUCCESS, DECLINE, ERROR, ACTION_REQUIRED.
data.transactionAttempts[].uuidstringYes
data.uuidstringYes
vaultobjectNoEmbedded vault capture credentials for a pending card-capable session, independent of the reported SDK version. The explicit POST /v1/checkouts/sessions/{id}/vault/capture endpoint remains available for idempotent recovery and retry. When production verification is enforced the block carries only a verification descriptor (no html, url or secret): mount the hosted card form, which runs the check before any capture is issued.
vault.expectedOriginstringNoExact hosted-form origin the SDK targets and accepts for vault postMessages.
vault.htmlstringNoPCIVault hosted-form HTML the SDK injects into the buyer flow. Already wrapped in the Flo bundle (event listeners, postMessage handshake).
vault.messageTokenstringNoPer-session token authenticating messages exchanged with the hosted vault form.
vault.secretstringNoPCIVault submit secret used in the form POST.
vault.urlstringNoPCIVault submit URL the hosted form POSTs to.

Errors

StatusDescription
400The request body, session id, or resolved product provider credentials were invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
404The requested customer is unknown or is not linked to the authenticated client, or no active card gateway is available.
424Throws in cases where Billing service cannot get data from billing provider.

Session_exportSessions

Export checkout-sessions

Exports the resource-owned list as a point-in-time framed stream. Reuses this endpoint's list query filters and sort. current_page preserves page/limit; all_matching ignores page/limit while preserving filters and sort. Client routes require an OAuth client_user owner/admin token; admin routes require a single valid clientId selector; partner routes require an authenticated partner seat and are scoped to that partner. Ordinary members, client Basic auth, and cross-tenant requests are rejected.

PolicyValue
OperationPOST /v1/checkouts/sessions/exports
Classread-only
Riskmedium
Confirmationnot-required
Retrysafe
Rate-limit tieraggregate
Rolesowner, admin
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
pagequeryintegerNo1-based page number for paginated list endpoints. Default: 1. Minimum: 1.
limitqueryintegerNoMaximum number of records to return per page. Default: 20. Minimum: 1. Maximum: 100.
sortquerystringNoSort by one allowed field. Use exactly one of sort[asc] or sort[desc]. Allowed fields: createdAt, status, updatedAt, products.id, products.productId, products.code, products.name, products.description, products.type, products.currency, products.totalAmount, products.quantity, products.createdAt, products.updatedAt, transactionAttempts.id, transactionAttempts.gateway, transactionAttempts.result, transactionAttempts.declineReason, transactionAttempts.gatewayPaymentIntentId, transactionAttempts.createdAt, user.id, user.email, user.firstName, user.lastName, user.createdAt, user.updatedAt, utmMetadata.id, utmMetadata.utmMedium, utmMetadata.utmCampaign, utmMetadata.utmSource, utmMetadata.utmTerm, utmMetadata.funnelDomain, utmMetadata.funnelUrl, utmMetadata.sourceOriginKey, utmMetadata.splitTestVariable, utmMetadata.funnelVersion, utmMetadata.createdAt, utmMetadata.updatedAt. Default: createdAt DESC. Allowed values: createdAt, status, updatedAt, products.id, products.productId, products.code, products.name, products.description, products.type, products.currency, products.totalAmount, products.quantity, products.createdAt, products.updatedAt, transactionAttempts.id, transactionAttempts.gateway, transactionAttempts.result, transactionAttempts.declineReason, transactionAttempts.gatewayPaymentIntentId, transactionAttempts.createdAt, user.id, user.email, user.firstName, user.lastName, user.createdAt, user.updatedAt, utmMetadata.id, utmMetadata.utmMedium, utmMetadata.utmCampaign, utmMetadata.utmSource, utmMetadata.utmTerm, utmMetadata.funnelDomain, utmMetadata.funnelUrl, utmMetadata.sourceOriginKey, utmMetadata.splitTestVariable, utmMetadata.funnelVersion, utmMetadata.createdAt, utmMetadata.updatedAt.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: client, products, transactionAttempts, user, utmMetadata. Unknown aliases return 400.
checkoutModequerystringNoCheckout mode. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: auto, full, confirm, setup.
createdAtquerystring (date-time)NoSession creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
gatewayquerystringNoBilling provider recorded on the session. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: stripe, paypal, worldpay_corporate_gateway.
idquerystringNoAlias for uuid: matches the Flopay checkout-session UUID. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
statusquerystringNoSession status. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: pending, authorized, completed, voided.
updatedAtquerystring (date-time)NoSession update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
userEmailquerystringNoEmail recorded on the session. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
userIdquerystringNoClient-managed user identifier recorded on the session. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
userUuidquerystringNoLinked Flopay user UUID. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
uuidquerystringNoFlopay checkout-session UUID. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
fieldsbodyarray of stringNoStable export field keys in output order.
formatbodystringYesAllowed values: csv, json.
scopebodystringYesAllowed values: current_page, all_matching.

Result

Returns 200 as application/vnd.flopay.export-stream.v1. Versioned length-prefixed export stream containing started/progress/completed_file/file_chunk/complete frames.

Errors

StatusDescription
400Invalid scope, format, field key, query parameter, client selector, row cap, or plaintext byte cap.
401Authentication is missing or invalid.
403The actor is not allowed to export this resource.
424Throws in cases where Billing service cannot get data from billing provider.
429Export capacity exhausted. Retry-After is set to 60 seconds.
503Exports disabled or export storage unavailable.

Session_list

List Checkout Sessions

Returns paginated checkout sessions for the authenticated client. Supports page, limit, sort[asc|desc], whitelisted filters (id, status, gateway, checkoutMode, userId, userUuid, userEmail, createdAt, updatedAt), and the relation aliases products, transactionAttempts, user, client, and utmMetadata.

PolicyValue
OperationGET /v1/checkouts/sessions
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
pagequeryintegerNo1-based page number for paginated list endpoints. Default: 1. Minimum: 1.
limitqueryintegerNoMaximum number of records to return per page. Default: 20. Minimum: 1. Maximum: 100.
sortquerystringNoSort by one allowed field. Use exactly one of sort[asc] or sort[desc]. Allowed fields: createdAt, status, updatedAt, products.id, products.productId, products.code, products.name, products.description, products.type, products.currency, products.totalAmount, products.quantity, products.createdAt, products.updatedAt, transactionAttempts.id, transactionAttempts.gateway, transactionAttempts.result, transactionAttempts.declineReason, transactionAttempts.gatewayPaymentIntentId, transactionAttempts.createdAt, user.id, user.email, user.firstName, user.lastName, user.createdAt, user.updatedAt, utmMetadata.id, utmMetadata.utmMedium, utmMetadata.utmCampaign, utmMetadata.utmSource, utmMetadata.utmTerm, utmMetadata.funnelDomain, utmMetadata.funnelUrl, utmMetadata.sourceOriginKey, utmMetadata.splitTestVariable, utmMetadata.funnelVersion, utmMetadata.createdAt, utmMetadata.updatedAt. Default: createdAt DESC. Allowed values: createdAt, status, updatedAt, products.id, products.productId, products.code, products.name, products.description, products.type, products.currency, products.totalAmount, products.quantity, products.createdAt, products.updatedAt, transactionAttempts.id, transactionAttempts.gateway, transactionAttempts.result, transactionAttempts.declineReason, transactionAttempts.gatewayPaymentIntentId, transactionAttempts.createdAt, user.id, user.email, user.firstName, user.lastName, user.createdAt, user.updatedAt, utmMetadata.id, utmMetadata.utmMedium, utmMetadata.utmCampaign, utmMetadata.utmSource, utmMetadata.utmTerm, utmMetadata.funnelDomain, utmMetadata.funnelUrl, utmMetadata.sourceOriginKey, utmMetadata.splitTestVariable, utmMetadata.funnelVersion, utmMetadata.createdAt, utmMetadata.updatedAt.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: client, products, transactionAttempts, user, utmMetadata. Unknown aliases return 400.
checkoutModequerystringNoCheckout mode. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: auto, full, confirm, setup.
createdAtquerystring (date-time)NoSession creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
gatewayquerystringNoBilling provider recorded on the session. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: stripe, paypal, worldpay_corporate_gateway.
idquerystringNoAlias for uuid: matches the Flopay checkout-session UUID. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
statusquerystringNoSession status. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: pending, authorized, completed, voided.
updatedAtquerystring (date-time)NoSession update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
userEmailquerystringNoEmail recorded on the session. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
userIdquerystringNoClient-managed user identifier recorded on the session. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
userUuidquerystringNoLinked Flopay user UUID. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
uuidquerystringNoFlopay checkout-session UUID. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
dataarray of objectYes
data[].authorizationExpiresAtstring (date-time) or nullNo
data[].authorizationVoidReasonstring or nullNoAllowed values: merchant_requested, expired, provider_canceled.
data[].cancelUrlstring or nullNo
data[].captureMethodstringYesAllowed values: automatic, manual.
data[].checkoutMetadataobjectNoImmutable non-sensitive client context supplied when the checkout session was created.
data[].checkoutModestringYesAllowed values: auto, full, confirm, setup.
data[].checkoutUrlstringYes
data[].clientobject or nullNoOwning client. Present only when requested with relation=client.
data[].client.createdAtstring (date-time)Yes
data[].client.idstringYes
data[].client.slugstringYes
data[].client.updatedAtstring (date-time)Yes
data[].clientIdstring or nullNoOwning client UUID.
data[].couponsarray of stringYesCoupon codes applied to the session.
data[].createdAtstring (date-time)Yes
data[].gatewaystring or nullNoAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].gatewayIdstring or nullNoGateway configuration UUID.
data[].idstringYes
data[].productsarray of objectNoLine items. Present only when requested with relation=products.
data[].products[].codestringYes
data[].products[].createdAtstring (date-time)Yes
data[].products[].currencystringYes
data[].products[].descriptionstring or nullNo
data[].products[].idstringYes
data[].products[].metadataobject or nullNo
data[].products[].namestringYes
data[].products[].productIdstring or nullNoLinked Flopay product UUID.
data[].products[].productPriceIdstring or nullNoStable Flopay catalog price UUID.
data[].products[].quantitynumberYes
data[].products[].totalAmountnumberYes
data[].products[].typestringYesAllowed values: subscription, item.
data[].products[].updatedAtstring (date-time)Yes
data[].products[].variantIdstring or nullNoSelected Flopay catalog variant UUID.
data[].statusstringYesAllowed values: pending, authorized, completed, voided.
data[].successUrlstring or nullNo
data[].transactionAttemptsarray of objectNoPayment attempts. Present only when requested with relation=transactionAttempts.
data[].transactionAttempts[].checkoutSessionsUuidstringYesOwning checkout-session UUID.
data[].transactionAttempts[].createdAtstring (date-time)Yes
data[].transactionAttempts[].declineReasonstring or nullNoAllowed values: INSUFFICIENT_FUNDS, DO_NOT_HONOUR, TOO_MANY_ATTEMPTS, PARTIAL_APPROVAL, PAYMENT_GATEWAY_ERROR, TECHNICAL_ERROR, RETRYABLE_DECLINE, UNSUPPORTED_CARD_PURCHASE, USER_ERROR, CVV_INVALID, AVS_FAIL, POSTCODE_INVALID, 3DS_FAIL, EXCEEDS_CARD_LIMIT, CLIENT_ERROR, UNKNOWN_DECLINE_REASON.
data[].transactionAttempts[].gatewaystringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].transactionAttempts[].gatewayAccountobject or nullNoGateway account (non-secret fields) this attempt ran on. Present only when requested.
data[].transactionAttempts[].gatewayAccount.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].transactionAttempts[].gatewayAccount.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].transactionAttempts[].gatewayAccount.environmentstringYesAllowed values: stage, production.
data[].transactionAttempts[].gatewayAccount.idstringYesGateway UUID.
data[].transactionAttempts[].gatewayAccount.namestringYesHuman-readable name of the gateway account.
data[].transactionAttempts[].gatewayAccount.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].transactionAttempts[].gatewayAccount.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].transactionAttempts[].gatewayAccount.sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
data[].transactionAttempts[].gatewayDeclineReasonstring or nullNoRaw provider decline reason.
data[].transactionAttempts[].gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object id for this attempt, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
data[].transactionAttempts[].idstringYes
data[].transactionAttempts[].nextActionRedirectUrlstring or nullNoIssuer/3DS redirect URL surfaced when an attempt is in ACTION_REQUIRED state. The SDK renders this in a host-level iframe overlay; the outcome is resolved server-side when the challenge redirects to the Stripe return_url (GET /v1/vault/3ds/return), with POST /v1/checkouts/sessions/{id}/3ds/complete available as a sync probe.
data[].transactionAttempts[].paymentMethodobject or nullNoStored payment method (non-secret display fields) this attempt charged. An attempt charges exactly one method. Present only when the userPaymentMethod relation is requested.
data[].transactionAttempts[].paymentMethod.brandstring or nullNoCard brand as reported by the gateway (free-text, e.g. "visa"). Null for non-card types.
data[].transactionAttempts[].paymentMethod.createdAtstring (date-time)YesWhen the payment method row was created.
data[].transactionAttempts[].paymentMethod.displayLabelstring or nullNoSafe, human-readable label for non-card methods: the wallet or APM name (for example Apple Pay), or PayPal with a masked account email. Never contains tokens or full account identifiers. Null for cards, which keep brand and lastFour. Additive.
data[].transactionAttempts[].paymentMethod.expiryMonthnumber or nullNoCard expiry month (1-12). Null for non-card types.
data[].transactionAttempts[].paymentMethod.expiryYearnumber or nullNoCard expiry year (four digits). Null for non-card types.
data[].transactionAttempts[].paymentMethod.floCardIdstringNoGateway-agnostic Flo card UUID. Omitted for saved methods created before Flo card identity.
data[].transactionAttempts[].paymentMethod.gatewayobject or nullNoOwning gateway (non-secret fields). Present when the gateway relation is loaded.
data[].transactionAttempts[].paymentMethod.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].transactionAttempts[].paymentMethod.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].transactionAttempts[].paymentMethod.gateway.environmentstringYesAllowed values: stage, production.
data[].transactionAttempts[].paymentMethod.gateway.idstringYesGateway UUID.
data[].transactionAttempts[].paymentMethod.gateway.namestringYesHuman-readable name of the gateway account.
data[].transactionAttempts[].paymentMethod.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].transactionAttempts[].paymentMethod.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].transactionAttempts[].paymentMethod.gateway.sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
data[].transactionAttempts[].paymentMethod.gatewaysarray of objectNoGateway accounts with a binding to this Flo card. Omitted for saved methods created before Flo card identity.
data[].transactionAttempts[].paymentMethod.gateways[].codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].transactionAttempts[].paymentMethod.gateways[].currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].transactionAttempts[].paymentMethod.gateways[].environmentstringYesAllowed values: stage, production.
data[].transactionAttempts[].paymentMethod.gateways[].idstringYesGateway UUID.
data[].transactionAttempts[].paymentMethod.gateways[].namestringYesHuman-readable name of the gateway account.
data[].transactionAttempts[].paymentMethod.gateways[].providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].transactionAttempts[].paymentMethod.gateways[].publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].transactionAttempts[].paymentMethod.gateways[].sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
data[].transactionAttempts[].paymentMethod.idstringYesFlopay payment method UUID.
data[].transactionAttempts[].paymentMethod.isPreferredbooleanNoWhether this Flo card is the customer preference. Omitted for legacy saved methods.
data[].transactionAttempts[].paymentMethod.lastFourstring or nullNoLast four digits of the card. Null for non-card types.
data[].transactionAttempts[].paymentMethod.methodTypestringNoMethod type identifier, the same identifier the setup flow uses: card, paypal, or a wallet / APM type such as apple_pay, google_pay, sepa_debit or us_bank_account. Additive. Allowed values: card, paypal, apple_pay, google_pay, sepa_debit, us_bank_account.
data[].transactionAttempts[].paymentMethod.payerEmailstring or nullNoPayer email for PayPal, kept unchanged for compatibility (displayLabel carries the masked form). Null for cards, wallets and APMs.
data[].transactionAttempts[].paymentMethod.statusstringYesPayment method lifecycle status. Every method type uses the same values: pending until verified, active when usable, deleted for a deletion tombstone. Allowed values: pending, active, deleted.
data[].transactionAttempts[].paymentMethod.typestringYesStored payment method type: card, paypal, or the type of a saved wallet or APM (for example apple_pay or sepa_debit). Always the same value as methodType. Allowed values: card, paypal, apple_pay, google_pay, sepa_debit, us_bank_account.
data[].transactionAttempts[].providerPaymentMethodIdstring or nullNoProvider PaymentMethod id (e.g. Stripe pm_xxx) associated with this attempt. Set on vault-driven attempts once the bridge has minted a provider PM from the vault token; absent on legacy attempts.
data[].transactionAttempts[].resultstringYesAllowed values: PENDING, AUTHORIZED, SUCCESS, DECLINE, ERROR, ACTION_REQUIRED.
data[].updatedAtstring (date-time)Yes
data[].userobject or nullNoLinked Flopay user. Present only when requested with relation=user.
data[].user.clientUserIdstring or nullNo
data[].user.createdAtstring (date-time)Yes
data[].user.emailstringYes
data[].user.firstNamestringYes
data[].user.idstringYes
data[].user.lastNamestringYes
data[].user.updatedAtstring (date-time)Yes
data[].userAddressCitystring or nullYesBuyer city recorded on the checkout session.
data[].userAddressCountrystring or nullYesBuyer country as an ISO 3166-1 alpha-2 code.
data[].userAddressStatestring or nullYesBuyer state or region recorded on the checkout session.
data[].userEmailstringYes
data[].userFirstNamestringYes
data[].userIdstringYesClient-managed user identifier recorded on the session.
data[].userLastNamestringYes
data[].userUuidstring or nullNoLinked Flopay user UUID.
data[].utmMetadataarray of objectNoAnalytics attribution. Present only when requested with relation=utmMetadata.
data[].utmMetadata[].createdAtstring (date-time)Yes
data[].utmMetadata[].funnelDomainstring or nullNo
data[].utmMetadata[].funnelUrlstring or nullNo
data[].utmMetadata[].funnelVersionstring or nullNo
data[].utmMetadata[].idstringYes
data[].utmMetadata[].sourceOriginKeystring or nullNo
data[].utmMetadata[].splitTestVariablestring or nullNo
data[].utmMetadata[].updatedAtstring (date-time)Yes
data[].utmMetadata[].utmCampaignstring or nullNo
data[].utmMetadata[].utmMediumstring or nullNo
data[].utmMetadata[].utmSourcestring or nullNo
data[].utmMetadata[].utmTermstring or nullNo
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
400The request body, session id, or resolved product provider credentials were invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
424Throws in cases where Billing service cannot get data from billing provider.

TransactionAttempts_findOne

Get Transaction Attempt

Returns a single transaction attempt by UUID, scoped to the authenticated client.

PolicyValue
OperationGET /v1/checkouts/transaction-attempts/{id}
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
idpathstringYes

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
checkoutSessionsUuidstringYesOwning checkout-session UUID.
createdAtstring (date-time)Yes
declineReasonstring or nullNoAllowed values: INSUFFICIENT_FUNDS, DO_NOT_HONOUR, TOO_MANY_ATTEMPTS, PARTIAL_APPROVAL, PAYMENT_GATEWAY_ERROR, TECHNICAL_ERROR, RETRYABLE_DECLINE, UNSUPPORTED_CARD_PURCHASE, USER_ERROR, CVV_INVALID, AVS_FAIL, POSTCODE_INVALID, 3DS_FAIL, EXCEEDS_CARD_LIMIT, CLIENT_ERROR, UNKNOWN_DECLINE_REASON.
gatewaystringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
gatewayAccountobject or nullNoGateway account (non-secret fields) this attempt ran on. Present only when requested.
gatewayAccount.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
gatewayAccount.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
gatewayAccount.environmentstringYesAllowed values: stage, production.
gatewayAccount.idstringYesGateway UUID.
gatewayAccount.namestringYesHuman-readable name of the gateway account.
gatewayAccount.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
gatewayAccount.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
gatewayAccount.sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
gatewayDeclineReasonstring or nullNoRaw provider decline reason.
gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object id for this attempt, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
idstringYes
nextActionRedirectUrlstring or nullNoIssuer/3DS redirect URL surfaced when an attempt is in ACTION_REQUIRED state. The SDK renders this in a host-level iframe overlay; the outcome is resolved server-side when the challenge redirects to the Stripe return_url (GET /v1/vault/3ds/return), with POST /v1/checkouts/sessions/{id}/3ds/complete available as a sync probe.
paymentMethodobject or nullNoStored payment method (non-secret display fields) this attempt charged. An attempt charges exactly one method. Present only when the userPaymentMethod relation is requested.
paymentMethod.brandstring or nullNoCard brand as reported by the gateway (free-text, e.g. "visa"). Null for non-card types.
paymentMethod.createdAtstring (date-time)YesWhen the payment method row was created.
paymentMethod.displayLabelstring or nullNoSafe, human-readable label for non-card methods: the wallet or APM name (for example Apple Pay), or PayPal with a masked account email. Never contains tokens or full account identifiers. Null for cards, which keep brand and lastFour. Additive.
paymentMethod.expiryMonthnumber or nullNoCard expiry month (1-12). Null for non-card types.
paymentMethod.expiryYearnumber or nullNoCard expiry year (four digits). Null for non-card types.
paymentMethod.floCardIdstringNoGateway-agnostic Flo card UUID. Omitted for saved methods created before Flo card identity.
paymentMethod.gatewayobject or nullNoOwning gateway (non-secret fields). Present when the gateway relation is loaded.
paymentMethod.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
paymentMethod.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
paymentMethod.gateway.environmentstringYesAllowed values: stage, production.
paymentMethod.gateway.idstringYesGateway UUID.
paymentMethod.gateway.namestringYesHuman-readable name of the gateway account.
paymentMethod.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
paymentMethod.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
paymentMethod.gateway.sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
paymentMethod.gatewaysarray of objectNoGateway accounts with a binding to this Flo card. Omitted for saved methods created before Flo card identity.
paymentMethod.gateways[].codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
paymentMethod.gateways[].currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
paymentMethod.gateways[].environmentstringYesAllowed values: stage, production.
paymentMethod.gateways[].idstringYesGateway UUID.
paymentMethod.gateways[].namestringYesHuman-readable name of the gateway account.
paymentMethod.gateways[].providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
paymentMethod.gateways[].publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
paymentMethod.gateways[].sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
paymentMethod.idstringYesFlopay payment method UUID.
paymentMethod.isPreferredbooleanNoWhether this Flo card is the customer preference. Omitted for legacy saved methods.
paymentMethod.lastFourstring or nullNoLast four digits of the card. Null for non-card types.
paymentMethod.methodTypestringNoMethod type identifier, the same identifier the setup flow uses: card, paypal, or a wallet / APM type such as apple_pay, google_pay, sepa_debit or us_bank_account. Additive. Allowed values: card, paypal, apple_pay, google_pay, sepa_debit, us_bank_account.
paymentMethod.payerEmailstring or nullNoPayer email for PayPal, kept unchanged for compatibility (displayLabel carries the masked form). Null for cards, wallets and APMs.
paymentMethod.statusstringYesPayment method lifecycle status. Every method type uses the same values: pending until verified, active when usable, deleted for a deletion tombstone. Allowed values: pending, active, deleted.
paymentMethod.typestringYesStored payment method type: card, paypal, or the type of a saved wallet or APM (for example apple_pay or sepa_debit). Always the same value as methodType. Allowed values: card, paypal, apple_pay, google_pay, sepa_debit, us_bank_account.
providerPaymentMethodIdstring or nullNoProvider PaymentMethod id (e.g. Stripe pm_xxx) associated with this attempt. Set on vault-driven attempts once the bridge has minted a provider PM from the vault token; absent on legacy attempts.
resultstringYesAllowed values: PENDING, AUTHORIZED, SUCCESS, DECLINE, ERROR, ACTION_REQUIRED.

Errors

StatusDescription
400The path, relation, filter, sort, or pagination input is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403The bearer token does not grant the required merchant read scope.
404No transaction attempt with this id exists for the authenticated client.

TransactionAttempts_list

List Transaction Attempts

Returns paginated transaction attempts for the authenticated client. Supports page, limit, sort[asc|desc], whitelisted filters, and the relation aliases checkoutSession and gatewayAccount.

PolicyValue
OperationGET /v1/checkouts/transaction-attempts
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
pagequeryintegerNo1-based page number for paginated list endpoints. Default: 1. Minimum: 1.
limitqueryintegerNoMaximum number of records to return per page. Default: 20. Minimum: 1. Maximum: 100.
sortquerystringNoSort by one allowed field. Use exactly one of sort[asc] or sort[desc]. Allowed fields: createdAt. Default: createdAt DESC. Allowed values: createdAt.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: checkoutSession, gatewayAccount, userPaymentMethod. Unknown aliases return 400.
checkoutSessionIdquerystringNoOwning checkout-session UUID (alias for checkoutSessionsUuid). Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
checkoutSessionsUuidquerystringNoOwning checkout-session UUID. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
createdAtquerystring (date-time)NoAttempt creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
declineReasonquerystringNoFlopay-normalised decline reason. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: INSUFFICIENT_FUNDS, DO_NOT_HONOUR, TOO_MANY_ATTEMPTS, PARTIAL_APPROVAL, PAYMENT_GATEWAY_ERROR, TECHNICAL_ERROR, RETRYABLE_DECLINE, UNSUPPORTED_CARD_PURCHASE, USER_ERROR, CVV_INVALID, AVS_FAIL, POSTCODE_INVALID, 3DS_FAIL, EXCEEDS_CARD_LIMIT, CLIENT_ERROR, UNKNOWN_DECLINE_REASON.
gatewayquerystringNoPayment provider used for the attempt. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: stripe, paypal, worldpay_corporate_gateway.
gatewayDeclineReasonquerystringNoRaw provider decline reason string. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
gatewayIdquerystringNoGateway account UUID the attempt ran on. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
idquerystringNoAlias for uuid: matches the attempt UUID. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
providerIntentIdquerystringNoProvider payment-intent id (e.g. Stripe pi_*). Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
resultquerystringNoAttempt result. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: PENDING, AUTHORIZED, SUCCESS, DECLINE, ERROR, ACTION_REQUIRED.
userEmailquerystringNoEmail recorded on the owning checkout session. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
userIdquerystringNoClient-managed user identifier on the owning checkout session. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
userPaymentMethodIdquerystringNoUser payment-method UUID associated with the attempt. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
userUuidquerystringNoLinked Flopay user UUID on the owning checkout session. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
uuidquerystringNoAttempt UUID. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
dataarray of objectYes
data[].checkoutSessionsUuidstringYesOwning checkout-session UUID.
data[].createdAtstring (date-time)Yes
data[].declineReasonstring or nullNoAllowed values: INSUFFICIENT_FUNDS, DO_NOT_HONOUR, TOO_MANY_ATTEMPTS, PARTIAL_APPROVAL, PAYMENT_GATEWAY_ERROR, TECHNICAL_ERROR, RETRYABLE_DECLINE, UNSUPPORTED_CARD_PURCHASE, USER_ERROR, CVV_INVALID, AVS_FAIL, POSTCODE_INVALID, 3DS_FAIL, EXCEEDS_CARD_LIMIT, CLIENT_ERROR, UNKNOWN_DECLINE_REASON.
data[].gatewaystringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].gatewayAccountobject or nullNoGateway account (non-secret fields) this attempt ran on. Present only when requested.
data[].gatewayAccount.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].gatewayAccount.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].gatewayAccount.environmentstringYesAllowed values: stage, production.
data[].gatewayAccount.idstringYesGateway UUID.
data[].gatewayAccount.namestringYesHuman-readable name of the gateway account.
data[].gatewayAccount.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].gatewayAccount.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].gatewayAccount.sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
data[].gatewayDeclineReasonstring or nullNoRaw provider decline reason.
data[].gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object id for this attempt, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
data[].idstringYes
data[].nextActionRedirectUrlstring or nullNoIssuer/3DS redirect URL surfaced when an attempt is in ACTION_REQUIRED state. The SDK renders this in a host-level iframe overlay; the outcome is resolved server-side when the challenge redirects to the Stripe return_url (GET /v1/vault/3ds/return), with POST /v1/checkouts/sessions/{id}/3ds/complete available as a sync probe.
data[].paymentMethodobject or nullNoStored payment method (non-secret display fields) this attempt charged. An attempt charges exactly one method. Present only when the userPaymentMethod relation is requested.
data[].paymentMethod.brandstring or nullNoCard brand as reported by the gateway (free-text, e.g. "visa"). Null for non-card types.
data[].paymentMethod.createdAtstring (date-time)YesWhen the payment method row was created.
data[].paymentMethod.displayLabelstring or nullNoSafe, human-readable label for non-card methods: the wallet or APM name (for example Apple Pay), or PayPal with a masked account email. Never contains tokens or full account identifiers. Null for cards, which keep brand and lastFour. Additive.
data[].paymentMethod.expiryMonthnumber or nullNoCard expiry month (1-12). Null for non-card types.
data[].paymentMethod.expiryYearnumber or nullNoCard expiry year (four digits). Null for non-card types.
data[].paymentMethod.floCardIdstringNoGateway-agnostic Flo card UUID. Omitted for saved methods created before Flo card identity.
data[].paymentMethod.gatewayobject or nullNoOwning gateway (non-secret fields). Present when the gateway relation is loaded.
data[].paymentMethod.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].paymentMethod.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].paymentMethod.gateway.environmentstringYesAllowed values: stage, production.
data[].paymentMethod.gateway.idstringYesGateway UUID.
data[].paymentMethod.gateway.namestringYesHuman-readable name of the gateway account.
data[].paymentMethod.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].paymentMethod.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].paymentMethod.gateway.sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
data[].paymentMethod.gatewaysarray of objectNoGateway accounts with a binding to this Flo card. Omitted for saved methods created before Flo card identity.
data[].paymentMethod.gateways[].codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].paymentMethod.gateways[].currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].paymentMethod.gateways[].environmentstringYesAllowed values: stage, production.
data[].paymentMethod.gateways[].idstringYesGateway UUID.
data[].paymentMethod.gateways[].namestringYesHuman-readable name of the gateway account.
data[].paymentMethod.gateways[].providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].paymentMethod.gateways[].publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].paymentMethod.gateways[].sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
data[].paymentMethod.idstringYesFlopay payment method UUID.
data[].paymentMethod.isPreferredbooleanNoWhether this Flo card is the customer preference. Omitted for legacy saved methods.
data[].paymentMethod.lastFourstring or nullNoLast four digits of the card. Null for non-card types.
data[].paymentMethod.methodTypestringNoMethod type identifier, the same identifier the setup flow uses: card, paypal, or a wallet / APM type such as apple_pay, google_pay, sepa_debit or us_bank_account. Additive. Allowed values: card, paypal, apple_pay, google_pay, sepa_debit, us_bank_account.
data[].paymentMethod.payerEmailstring or nullNoPayer email for PayPal, kept unchanged for compatibility (displayLabel carries the masked form). Null for cards, wallets and APMs.
data[].paymentMethod.statusstringYesPayment method lifecycle status. Every method type uses the same values: pending until verified, active when usable, deleted for a deletion tombstone. Allowed values: pending, active, deleted.
data[].paymentMethod.typestringYesStored payment method type: card, paypal, or the type of a saved wallet or APM (for example apple_pay or sepa_debit). Always the same value as methodType. Allowed values: card, paypal, apple_pay, google_pay, sepa_debit, us_bank_account.
data[].providerPaymentMethodIdstring or nullNoProvider PaymentMethod id (e.g. Stripe pm_xxx) associated with this attempt. Set on vault-driven attempts once the bridge has minted a provider PM from the vault token; absent on legacy attempts.
data[].resultstringYesAllowed values: PENDING, AUTHORIZED, SUCCESS, DECLINE, ERROR, ACTION_REQUIRED.
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
400The path, relation, filter, sort, or pagination input is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
403The bearer token does not grant the required merchant read scope.

On this page