Documentation
MCPTool reference

Transactions tools

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

Transactions tools

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

CreatePayment_create

Create Payment

Creates a one-off payment for active products in the authenticated client's catalog. Pricing and discounts are calculated server-side before eligible saved payment routes are attempted in deterministic order. Subscription products must use POST /v1/subscriptions.

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

Arguments

ArgumentInTypeRequiredDescription
couponCodesbodyarray of stringNoCoupon codes to apply. Defaults to an empty array. Default: []. Maximum items: 5.
currencybodystringYesThree-letter currency code, normalized to uppercase. Minimum length: 3. Maximum length: 3.
productsbodyarray of objectYesOne or more one-off tenant catalog products to charge. Minimum items: 1.
products[].codebodystringNoTenant catalog product code. Supply exactly one of code or uuid. Minimum length: 1. Maximum length: 255.
products[].quantitybodynumberYesNumber of units to charge. Minimum: 1.
products[].uuidbodystring (uuid)NoFlo base-product UUID. Supply exactly one of code or uuid; variant UUIDs are not accepted.
userIdbodystring (uuid)YesFlo user UUID linked to the authenticated client.

Result

Returns 201 with a JSON body. The succeeded purchase transaction is durable.

FieldTypeRequiredDescription
dataobjectYesThe durable one-off payment, including its pollable Flo payment UUID.
data.amountnumberYes
data.authorizationExpiresAtstring (date-time) or nullNoDeadline for capturing an active authorization.
data.authorizationVoidReasonstring or nullNoWhy an uncaptured authorization was voided. Allowed values: merchant_requested, expired, provider_canceled.
data.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data.checkoutSessionIdstring or nullNoOriginating checkout session UUID.
data.createdAtstring (date-time)YesRecord creation timestamp.
data.currencystringYes
data.descriptionstring or nullYes
data.effectiveFloFeeUsdnumber or nullYesEffective Flo platform fee in USD after adjustments. Null until the legacy base fee has been finalized.
data.financialEffectiveAtstring (date-time) or nullNoAuthoritative provider money-movement timestamp, when available.
data.floFeeAdjustmentUsdnumberYesNet append-only adjustment to the finalized Flo platform fee, in USD.
data.floFeeUsdnumber or nullYesFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency.
data.gatewayobjectNoOwning gateway (non-secret fields). Present only when the gateway relation is loaded.
data.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data.gateway.environmentstringYesAllowed values: stage, production.
data.gateway.idstringYesGateway UUID.
data.gateway.namestringYesHuman-readable name of the gateway account.
data.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data.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.gatewayChargeIdstring or nullNoOriginal gateway charge identifier.
data.gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object identifier, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
data.gatewayRefundIdstring or nullNoProvider refund-object identifier on a refund transaction, such as a Stripe re_… id. Null on anything that is not a refund, and never a bank-trace reference.
data.gatewayTransactionIdstring or nullNoGateway transaction identifier.
data.idstringYes
data.metadataobject or nullYesArbitrary metadata captured with the transaction.
data.occurredAtstring (date-time)Yes
data.refundTraceReferenceobject or nullNoProvider-neutral bank-trace reference. Present on refund transactions (with a truthful availability status) and null on every other transaction type.
data.refundTraceReference.statusstringYesAvailability of the reference. Allowed values: unknown, absent, pending, unavailable, available.
data.refundTraceReference.typestring or nullYesWhich reference scheme the provider reported. A scheme Flo does not recognise is reported as other rather than assumed to be an ARN. Allowed values: acquirer_reference_number, system_trace_audit_number, retrieval_reference_number, other.
data.refundTraceReference.valuestring or nullYesThe bank-trace reference, preserved verbatim including any leading zeroes. Populated only when status is available.
data.statusstringYes
data.subscriptionobjectNoLinked subscription (non-secret fields incl. metadata). Present only when the subscription relation is loaded and the payment is tied to a subscription.
data.subscription.amountnumber or nullYesThe stored single-unit amount.
data.subscription.buyerBusinessDetailsobject or nullNoThe buyer's current business details at this merchant (customerType, legalName, address, taxId), or null when the buyer has none. Returned by the single-subscription read; omitted from lists.
data.subscription.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data.subscription.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data.subscription.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data.subscription.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data.subscription.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data.subscription.createdAtstring (date-time)YesWhen the row was created.
data.subscription.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data.subscription.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data.subscription.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
data.subscription.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data.subscription.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data.subscription.gateway.environmentstringYesAllowed values: stage, production.
data.subscription.gateway.idstringYesGateway UUID.
data.subscription.gateway.namestringYesHuman-readable name of the gateway account.
data.subscription.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data.subscription.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data.subscription.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.subscription.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data.subscription.gatewaySubscriptionIdstringYesThe subscription identifier stored from the billing gateway. Flo-owned subscriptions hold no gateway-side subscription object, so this is a synthesized flo_<uuid> identifier that exists in the response only: it is not stored, and cannot be looked up at the gateway.
data.subscription.gatewayTypestringYesThe payment gateway that processes charges for the subscription. This describes the payment rails only: it does NOT say who owns the billing schedule. A Flo-owned subscription still reports the gateway its charges run through; read ownership to tell the two apart. Allowed values: stripe, paypal, worldpay_corporate_gateway.
data.subscription.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data.subscription.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data.subscription.meteredItemsarray of objectYesThe plan's metered items as snapshotted when this Flo-owned subscription started, with the effective unit price: a per-subscription override wins over the snapshot price. Later plan price changes do not alter it. Always empty for a provider-owned subscription.
data.subscription.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data.subscription.meteredItems[].namestringYes
data.subscription.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data.subscription.ownershipstringYesWho owns the billing schedule. provider means the gateway holds the subscription object and drives renewals; flo means Flopay holds the schedule and drives renewals itself, charging through the gateway named by gatewayType. Allowed values: flo, provider.
data.subscription.pauseStatestring or nullYesDistinguishes a pause that is in effect ('active') from one recorded to start at a future date ('scheduled'). Null when no pause is recorded. Allowed values: scheduled, active.
data.subscription.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data.subscription.planDescriptionstring or nullYesThe stored plan description when available.
data.subscription.planIdstringYesThe stored plan identifier.
data.subscription.planNamestringYesThe stored plan name.
data.subscription.quantitynumberYesThe subscribed quantity.
data.subscription.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data.subscription.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data.subscription.startDatestring (date-time) or nullYesWhen the subscription started.
data.subscription.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data.subscription.totalnumber or nullYesThe stored total amount.
data.subscription.trialEndstring (date-time) or nullYesWhen the trial ends.
data.subscription.updatedAtstring (date-time)YesWhen the row was last updated.
data.subscription.usagePeriodobject or nullYesThe open usage period of a Flo-owned subscription. Plans of a month or less: the billing cycle already paid for, from the last charge to the next charge date. Longer plans: the current month, anchored like the renewal date. null once the subscription has ended, before it has started, and for a provider-owned subscription.
data.subscription.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data.subscription.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data.subscription.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data.subscription.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data.subscription.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data.subscription.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data.subscription.uuidstringYesInternal Flopay subscription UUID.
data.subscriptionUuidstring or nullNoLinked Flopay subscription UUID.
data.typestringYesFinancial event classification. Allowed values: purchase, refund, chargeback, dispute.
data.userEmailstring or nullNoCustomer email when the user relation is loaded.
data.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data.userUuidstring or nullNoLinked Flopay user UUID.

Errors

StatusDescription
400The request body is malformed or the Idempotency-Key header is missing or blank.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and a current client-scoped API token as the password; for bearer, send a valid OAuth2 access token with a current client membership.
404The user does not exist or is not linked to the authenticated client.
409The Idempotency-Key was already used with a different normalized request.
422The tenant catalog selection, coupons, currency, pricing, or total is ineligible, or the user has no eligible payment route. A no-route response has an empty attempts array.
424Every chargeable candidate failed definitively. Attempts are ordered and sanitized.

Invoice_exportInvoices

Export invoices

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/invoices/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, paidAt, total, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId. Default: createdAt DESC. Allowed values: createdAt, paidAt, total, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: gateway, transaction. Unknown aliases return 400.
billingReasonquerystringNoProvider-reported billing reason (e.g. subscription_create, manual). 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)NoInvoice creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
paidAtquerystring (date-time)NoInvoice paid timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
statequerystringNoInvoice state. 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: open, pending, processing, pastDue, paid, closed, failed, voided, unknown.
totalquerynumberNoInvoice total amount. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
transactionTypequerystringNoProvider-reported transaction type recorded on the invoice. 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.
updatedAtquerystring (date-time)NoInvoice update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
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 invoice 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.
429Export capacity exhausted. Retry-After is set to 60 seconds.
503Exports disabled or export storage unavailable.

Invoice_findOne

Get Invoice

Returns a single invoice for the authenticated client.

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

Arguments

ArgumentInTypeRequiredDescription
idpathstringYes
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: gateway, transaction. Unknown aliases return 400.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
billingReasonstring or nullNoProvider-reported billing reason.
buyerBusinessDetailsobject or nullNoThe buyer's business details at this merchant as they stood when Flo created the invoice: customerType (business or individual), legalName, address (street1, street2, city, region, postalCode, ISO 3166-1 alpha-2 country) and taxId (type, normalised value). A later change to the buyer's details reaches only the next invoice. null when the buyer had none, and for invoices issued by a payment provider.
createdAtstring (date-time)YesWhen the invoice was created.
currencystring or nullNo
gatewayobject or nullNoOwning gateway (non-secret fields). Present when the gateway relation is loaded.
gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
gateway.environmentstringYesAllowed values: stage, production.
gateway.idstringYesGateway UUID.
gateway.namestringYesHuman-readable name of the gateway account.
gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
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.
gatewayInvoiceIdstring or nullNoThe invoice identifier in the billing provider (e.g. Stripe in_…). Null only briefly while a one-time purchase invoice is being minted at the gateway.
gatewayTypestringYesThe billing provider that produced this invoice. Allowed values: stripe, paypal, worldpay_corporate_gateway.
hostedInvoiceUrlstring or nullNoThe invoice's hosted page: no sign-in, behind an unguessable token. For invoices FloPay issues itself it shows both parties' identity, each line, the total and the tax note. Provider invoices carry the provider's page. null when the invoice has none.
idstringYesThe Flopay invoice UUID.
invoiceNumberstring or nullNoThe invoice number. FloPay numbers the invoices it issues itself per merchant as <prefix><sequence> (the merchant's prefix, default INV-, and a sequence zero-padded to 6 digits, e.g. INV-000001); a number is never reused or changed. Provider invoices keep the provider's number. null when the invoice has none.
invoicePdfUrlstring or nullNoThe invoice's PDF, a sibling of hostedInvoiceUrl with the same content and the same access rule. null when the invoice has none.
paidAtstring (date-time) or nullNoWhen the invoice was paid by the provider.
statestringYesThe current invoice state. Allowed values: open, pending, processing, pastDue, paid, closed, failed, voided, unknown.
totalnumber or nullNo
transactionobjectNoLinked Flopay transaction (non-secret fields incl. metadata). Present only when the transaction relation is loaded and a transaction settled this invoice.
transaction.amountnumberYes
transaction.authorizationExpiresAtstring (date-time) or nullNoDeadline for capturing an active authorization.
transaction.authorizationVoidReasonstring or nullNoWhy an uncaptured authorization was voided. Allowed values: merchant_requested, expired, provider_canceled.
transaction.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
transaction.checkoutSessionIdstring or nullNoOriginating checkout session UUID.
transaction.createdAtstring (date-time)YesRecord creation timestamp.
transaction.currencystringYes
transaction.descriptionstring or nullYes
transaction.effectiveFloFeeUsdnumber or nullYesEffective Flo platform fee in USD after adjustments. Null until the legacy base fee has been finalized.
transaction.financialEffectiveAtstring (date-time) or nullNoAuthoritative provider money-movement timestamp, when available.
transaction.floFeeAdjustmentUsdnumberYesNet append-only adjustment to the finalized Flo platform fee, in USD.
transaction.floFeeUsdnumber or nullYesFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency.
transaction.gatewayobjectNoOwning gateway (non-secret fields). Present only when the gateway relation is loaded.
transaction.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
transaction.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
transaction.gateway.environmentstringYesAllowed values: stage, production.
transaction.gateway.idstringYesGateway UUID.
transaction.gateway.namestringYesHuman-readable name of the gateway account.
transaction.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
transaction.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
transaction.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.
transaction.gatewayChargeIdstring or nullNoOriginal gateway charge identifier.
transaction.gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object identifier, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
transaction.gatewayRefundIdstring or nullNoProvider refund-object identifier on a refund transaction, such as a Stripe re_… id. Null on anything that is not a refund, and never a bank-trace reference.
transaction.gatewayTransactionIdstring or nullNoGateway transaction identifier.
transaction.idstringYes
transaction.metadataobject or nullYesArbitrary metadata captured with the transaction.
transaction.occurredAtstring (date-time)Yes
transaction.refundTraceReferenceobject or nullNoProvider-neutral bank-trace reference. Present on refund transactions (with a truthful availability status) and null on every other transaction type.
transaction.refundTraceReference.statusstringYesAvailability of the reference. Allowed values: unknown, absent, pending, unavailable, available.
transaction.refundTraceReference.typestring or nullYesWhich reference scheme the provider reported. A scheme Flo does not recognise is reported as other rather than assumed to be an ARN. Allowed values: acquirer_reference_number, system_trace_audit_number, retrieval_reference_number, other.
transaction.refundTraceReference.valuestring or nullYesThe bank-trace reference, preserved verbatim including any leading zeroes. Populated only when status is available.
transaction.statusstringYes
transaction.subscriptionobjectNoLinked subscription (non-secret fields incl. metadata). Present only when the subscription relation is loaded and the payment is tied to a subscription.
transaction.subscription.amountnumber or nullYesThe stored single-unit amount.
transaction.subscription.buyerBusinessDetailsobject or nullNoThe buyer's current business details at this merchant (customerType, legalName, address, taxId), or null when the buyer has none. Returned by the single-subscription read; omitted from lists.
transaction.subscription.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
transaction.subscription.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
transaction.subscription.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
transaction.subscription.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
transaction.subscription.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
transaction.subscription.createdAtstring (date-time)YesWhen the row was created.
transaction.subscription.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
transaction.subscription.endDatestring (date-time) or nullYesWhen the current subscription term ends.
transaction.subscription.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
transaction.subscription.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
transaction.subscription.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
transaction.subscription.gateway.environmentstringYesAllowed values: stage, production.
transaction.subscription.gateway.idstringYesGateway UUID.
transaction.subscription.gateway.namestringYesHuman-readable name of the gateway account.
transaction.subscription.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
transaction.subscription.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
transaction.subscription.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.
transaction.subscription.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
transaction.subscription.gatewaySubscriptionIdstringYesThe subscription identifier stored from the billing gateway. Flo-owned subscriptions hold no gateway-side subscription object, so this is a synthesized flo_<uuid> identifier that exists in the response only: it is not stored, and cannot be looked up at the gateway.
transaction.subscription.gatewayTypestringYesThe payment gateway that processes charges for the subscription. This describes the payment rails only: it does NOT say who owns the billing schedule. A Flo-owned subscription still reports the gateway its charges run through; read ownership to tell the two apart. Allowed values: stripe, paypal, worldpay_corporate_gateway.
transaction.subscription.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
transaction.subscription.metadataobject or nullYesArbitrary metadata captured with the subscription row.
transaction.subscription.meteredItemsarray of objectYesThe plan's metered items as snapshotted when this Flo-owned subscription started, with the effective unit price: a per-subscription override wins over the snapshot price. Later plan price changes do not alter it. Always empty for a provider-owned subscription.
transaction.subscription.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
transaction.subscription.meteredItems[].namestringYes
transaction.subscription.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
transaction.subscription.ownershipstringYesWho owns the billing schedule. provider means the gateway holds the subscription object and drives renewals; flo means Flopay holds the schedule and drives renewals itself, charging through the gateway named by gatewayType. Allowed values: flo, provider.
transaction.subscription.pauseStatestring or nullYesDistinguishes a pause that is in effect ('active') from one recorded to start at a future date ('scheduled'). Null when no pause is recorded. Allowed values: scheduled, active.
transaction.subscription.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
transaction.subscription.planDescriptionstring or nullYesThe stored plan description when available.
transaction.subscription.planIdstringYesThe stored plan identifier.
transaction.subscription.planNamestringYesThe stored plan name.
transaction.subscription.quantitynumberYesThe subscribed quantity.
transaction.subscription.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
transaction.subscription.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
transaction.subscription.startDatestring (date-time) or nullYesWhen the subscription started.
transaction.subscription.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
transaction.subscription.totalnumber or nullYesThe stored total amount.
transaction.subscription.trialEndstring (date-time) or nullYesWhen the trial ends.
transaction.subscription.updatedAtstring (date-time)YesWhen the row was last updated.
transaction.subscription.usagePeriodobject or nullYesThe open usage period of a Flo-owned subscription. Plans of a month or less: the billing cycle already paid for, from the last charge to the next charge date. Longer plans: the current month, anchored like the renewal date. null once the subscription has ended, before it has started, and for a provider-owned subscription.
transaction.subscription.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
transaction.subscription.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
transaction.subscription.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
transaction.subscription.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
transaction.subscription.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
transaction.subscription.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
transaction.subscription.uuidstringYesInternal Flopay subscription UUID.
transaction.subscriptionUuidstring or nullNoLinked Flopay subscription UUID.
transaction.typestringYesFinancial event classification. Allowed values: purchase, refund, chargeback, dispute.
transaction.userEmailstring or nullNoCustomer email when the user relation is loaded.
transaction.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
transaction.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
transaction.userUuidstring or nullNoLinked Flopay user UUID.
transactionTypestring or nullNoProvider-reported transaction type.
transactionUuidstring or nullNoLinked Flopay transaction UUID.
updatedAtstring (date-time)YesWhen the invoice was last updated.
userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
userLastNamestring or nullNoCustomer last name when the user relation is loaded.
userUuidstring or nullNoLinked Flopay user UUID.

Errors

StatusDescription
400The supplied path or list query 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.
404No invoice with the requested id exists for this client.

Invoice_list

List Invoices

Returns paginated invoices for the authenticated client (locally persisted from provider webhooks). Supports page, limit, sort[asc|desc], the relation aliases gateway and transaction, and whitelisted filters for uuid, state, billingReason, transactionType, total, paidAt, createdAt, and updatedAt.

PolicyValue
OperationGET /v1/invoices
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, paidAt, total, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId. Default: createdAt DESC. Allowed values: createdAt, paidAt, total, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: gateway, transaction. Unknown aliases return 400.
billingReasonquerystringNoProvider-reported billing reason (e.g. subscription_create, manual). 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)NoInvoice creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
paidAtquerystring (date-time)NoInvoice paid timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
statequerystringNoInvoice state. 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: open, pending, processing, pastDue, paid, closed, failed, voided, unknown.
totalquerynumberNoInvoice total amount. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
transactionTypequerystringNoProvider-reported transaction type recorded on the invoice. 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.
updatedAtquerystring (date-time)NoInvoice update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
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 invoice 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[].billingReasonstring or nullNoProvider-reported billing reason.
data[].buyerBusinessDetailsobject or nullNoThe buyer's business details at this merchant as they stood when Flo created the invoice: customerType (business or individual), legalName, address (street1, street2, city, region, postalCode, ISO 3166-1 alpha-2 country) and taxId (type, normalised value). A later change to the buyer's details reaches only the next invoice. null when the buyer had none, and for invoices issued by a payment provider.
data[].createdAtstring (date-time)YesWhen the invoice was created.
data[].currencystring or nullNo
data[].gatewayobject or nullNoOwning gateway (non-secret fields). Present when the gateway relation is loaded.
data[].gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].gateway.environmentstringYesAllowed values: stage, production.
data[].gateway.idstringYesGateway UUID.
data[].gateway.namestringYesHuman-readable name of the gateway account.
data[].gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].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[].gatewayInvoiceIdstring or nullNoThe invoice identifier in the billing provider (e.g. Stripe in_…). Null only briefly while a one-time purchase invoice is being minted at the gateway.
data[].gatewayTypestringYesThe billing provider that produced this invoice. Allowed values: stripe, paypal, worldpay_corporate_gateway.
data[].hostedInvoiceUrlstring or nullNoThe invoice's hosted page: no sign-in, behind an unguessable token. For invoices FloPay issues itself it shows both parties' identity, each line, the total and the tax note. Provider invoices carry the provider's page. null when the invoice has none.
data[].idstringYesThe Flopay invoice UUID.
data[].invoiceNumberstring or nullNoThe invoice number. FloPay numbers the invoices it issues itself per merchant as <prefix><sequence> (the merchant's prefix, default INV-, and a sequence zero-padded to 6 digits, e.g. INV-000001); a number is never reused or changed. Provider invoices keep the provider's number. null when the invoice has none.
data[].invoicePdfUrlstring or nullNoThe invoice's PDF, a sibling of hostedInvoiceUrl with the same content and the same access rule. null when the invoice has none.
data[].paidAtstring (date-time) or nullNoWhen the invoice was paid by the provider.
data[].statestringYesThe current invoice state. Allowed values: open, pending, processing, pastDue, paid, closed, failed, voided, unknown.
data[].totalnumber or nullNo
data[].transactionobjectNoLinked Flopay transaction (non-secret fields incl. metadata). Present only when the transaction relation is loaded and a transaction settled this invoice.
data[].transaction.amountnumberYes
data[].transaction.authorizationExpiresAtstring (date-time) or nullNoDeadline for capturing an active authorization.
data[].transaction.authorizationVoidReasonstring or nullNoWhy an uncaptured authorization was voided. Allowed values: merchant_requested, expired, provider_canceled.
data[].transaction.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].transaction.checkoutSessionIdstring or nullNoOriginating checkout session UUID.
data[].transaction.createdAtstring (date-time)YesRecord creation timestamp.
data[].transaction.currencystringYes
data[].transaction.descriptionstring or nullYes
data[].transaction.effectiveFloFeeUsdnumber or nullYesEffective Flo platform fee in USD after adjustments. Null until the legacy base fee has been finalized.
data[].transaction.financialEffectiveAtstring (date-time) or nullNoAuthoritative provider money-movement timestamp, when available.
data[].transaction.floFeeAdjustmentUsdnumberYesNet append-only adjustment to the finalized Flo platform fee, in USD.
data[].transaction.floFeeUsdnumber or nullYesFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency.
data[].transaction.gatewayobjectNoOwning gateway (non-secret fields). Present only when the gateway relation is loaded.
data[].transaction.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].transaction.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].transaction.gateway.environmentstringYesAllowed values: stage, production.
data[].transaction.gateway.idstringYesGateway UUID.
data[].transaction.gateway.namestringYesHuman-readable name of the gateway account.
data[].transaction.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].transaction.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].transaction.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[].transaction.gatewayChargeIdstring or nullNoOriginal gateway charge identifier.
data[].transaction.gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object identifier, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
data[].transaction.gatewayRefundIdstring or nullNoProvider refund-object identifier on a refund transaction, such as a Stripe re_… id. Null on anything that is not a refund, and never a bank-trace reference.
data[].transaction.gatewayTransactionIdstring or nullNoGateway transaction identifier.
data[].transaction.idstringYes
data[].transaction.metadataobject or nullYesArbitrary metadata captured with the transaction.
data[].transaction.occurredAtstring (date-time)Yes
data[].transaction.refundTraceReferenceobject or nullNoProvider-neutral bank-trace reference. Present on refund transactions (with a truthful availability status) and null on every other transaction type.
data[].transaction.refundTraceReference.statusstringYesAvailability of the reference. Allowed values: unknown, absent, pending, unavailable, available.
data[].transaction.refundTraceReference.typestring or nullYesWhich reference scheme the provider reported. A scheme Flo does not recognise is reported as other rather than assumed to be an ARN. Allowed values: acquirer_reference_number, system_trace_audit_number, retrieval_reference_number, other.
data[].transaction.refundTraceReference.valuestring or nullYesThe bank-trace reference, preserved verbatim including any leading zeroes. Populated only when status is available.
data[].transaction.statusstringYes
data[].transaction.subscriptionobjectNoLinked subscription (non-secret fields incl. metadata). Present only when the subscription relation is loaded and the payment is tied to a subscription.
data[].transaction.subscription.amountnumber or nullYesThe stored single-unit amount.
data[].transaction.subscription.buyerBusinessDetailsobject or nullNoThe buyer's current business details at this merchant (customerType, legalName, address, taxId), or null when the buyer has none. Returned by the single-subscription read; omitted from lists.
data[].transaction.subscription.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data[].transaction.subscription.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data[].transaction.subscription.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].transaction.subscription.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data[].transaction.subscription.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data[].transaction.subscription.createdAtstring (date-time)YesWhen the row was created.
data[].transaction.subscription.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data[].transaction.subscription.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data[].transaction.subscription.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
data[].transaction.subscription.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].transaction.subscription.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].transaction.subscription.gateway.environmentstringYesAllowed values: stage, production.
data[].transaction.subscription.gateway.idstringYesGateway UUID.
data[].transaction.subscription.gateway.namestringYesHuman-readable name of the gateway account.
data[].transaction.subscription.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].transaction.subscription.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].transaction.subscription.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[].transaction.subscription.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data[].transaction.subscription.gatewaySubscriptionIdstringYesThe subscription identifier stored from the billing gateway. Flo-owned subscriptions hold no gateway-side subscription object, so this is a synthesized flo_<uuid> identifier that exists in the response only: it is not stored, and cannot be looked up at the gateway.
data[].transaction.subscription.gatewayTypestringYesThe payment gateway that processes charges for the subscription. This describes the payment rails only: it does NOT say who owns the billing schedule. A Flo-owned subscription still reports the gateway its charges run through; read ownership to tell the two apart. Allowed values: stripe, paypal, worldpay_corporate_gateway.
data[].transaction.subscription.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data[].transaction.subscription.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data[].transaction.subscription.meteredItemsarray of objectYesThe plan's metered items as snapshotted when this Flo-owned subscription started, with the effective unit price: a per-subscription override wins over the snapshot price. Later plan price changes do not alter it. Always empty for a provider-owned subscription.
data[].transaction.subscription.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data[].transaction.subscription.meteredItems[].namestringYes
data[].transaction.subscription.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data[].transaction.subscription.ownershipstringYesWho owns the billing schedule. provider means the gateway holds the subscription object and drives renewals; flo means Flopay holds the schedule and drives renewals itself, charging through the gateway named by gatewayType. Allowed values: flo, provider.
data[].transaction.subscription.pauseStatestring or nullYesDistinguishes a pause that is in effect ('active') from one recorded to start at a future date ('scheduled'). Null when no pause is recorded. Allowed values: scheduled, active.
data[].transaction.subscription.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data[].transaction.subscription.planDescriptionstring or nullYesThe stored plan description when available.
data[].transaction.subscription.planIdstringYesThe stored plan identifier.
data[].transaction.subscription.planNamestringYesThe stored plan name.
data[].transaction.subscription.quantitynumberYesThe subscribed quantity.
data[].transaction.subscription.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data[].transaction.subscription.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data[].transaction.subscription.startDatestring (date-time) or nullYesWhen the subscription started.
data[].transaction.subscription.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data[].transaction.subscription.totalnumber or nullYesThe stored total amount.
data[].transaction.subscription.trialEndstring (date-time) or nullYesWhen the trial ends.
data[].transaction.subscription.updatedAtstring (date-time)YesWhen the row was last updated.
data[].transaction.subscription.usagePeriodobject or nullYesThe open usage period of a Flo-owned subscription. Plans of a month or less: the billing cycle already paid for, from the last charge to the next charge date. Longer plans: the current month, anchored like the renewal date. null once the subscription has ended, before it has started, and for a provider-owned subscription.
data[].transaction.subscription.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data[].transaction.subscription.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data[].transaction.subscription.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].transaction.subscription.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data[].transaction.subscription.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].transaction.subscription.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data[].transaction.subscription.uuidstringYesInternal Flopay subscription UUID.
data[].transaction.subscriptionUuidstring or nullNoLinked Flopay subscription UUID.
data[].transaction.typestringYesFinancial event classification. Allowed values: purchase, refund, chargeback, dispute.
data[].transaction.userEmailstring or nullNoCustomer email when the user relation is loaded.
data[].transaction.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].transaction.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].transaction.userUuidstring or nullNoLinked Flopay user UUID.
data[].transactionTypestring or nullNoProvider-reported transaction type.
data[].transactionUuidstring or nullNoLinked Flopay transaction UUID.
data[].updatedAtstring (date-time)YesWhen the invoice was last updated.
data[].userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].userUuidstring or nullNoLinked Flopay user UUID.
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
400The supplied path or list query 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.

Invoice_stats

Invoice Stats

Aggregated invoice stats for the authenticated client: total record count plus due/paid totals per currency. Accepts the same whitelisted filters as List Invoices, plus optional from/to ISO datetimes that band the query on created_at.

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

Arguments

ArgumentInTypeRequiredDescription
toquerystringNoInclusive upper bound on created_at (ISO datetime).
fromquerystringNoInclusive lower bound on created_at (ISO datetime).
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, paidAt, total, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId. Default: createdAt DESC. Allowed values: createdAt, paidAt, total, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: gateway, transaction. Unknown aliases return 400.
billingReasonquerystringNoProvider-reported billing reason (e.g. subscription_create, manual). 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)NoInvoice creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
paidAtquerystring (date-time)NoInvoice paid timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
statequerystringNoInvoice state. 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: open, pending, processing, pastDue, paid, closed, failed, voided, unknown.
totalquerynumberNoInvoice total amount. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
transactionTypequerystringNoProvider-reported transaction type recorded on the invoice. 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.
updatedAtquerystring (date-time)NoInvoice update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
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 invoice 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
amountDueobjectYesSum of due (unpaid) invoice totals, keyed by ISO-4217 currency.
amountPaidobjectYesSum of paid invoice totals, keyed by ISO-4217 currency.
fromstring (date-time) or nullNoInclusive lower bound on created_at, or null.
recordsnumberYesTotal records matching the filters within the time band.
tostring (date-time) or nullNoInclusive upper bound on created_at, or null.

Errors

StatusDescription
400The supplied path or list query 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.

Payments_cancelAuthorization

Cancel Payment Authorization

Releases an active manual-capture card authorization without capturing funds.

PolicyValue
OperationPUT /v1/payments/{id}/cancel
Classmutating
Riskcritical
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesFlopay-issued payment transaction UUID.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
amountnumberYes
authorizationExpiresAtstring (date-time) or nullNoDeadline for capturing an active authorization.
authorizationVoidReasonstring or nullNoWhy an uncaptured authorization was voided. Allowed values: merchant_requested, expired, provider_canceled.
checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
checkoutSessionIdstring or nullNoOriginating checkout session UUID.
createdAtstring (date-time)YesRecord creation timestamp.
currencystringYes
descriptionstring or nullYes
effectiveFloFeeUsdnumber or nullYesEffective Flo platform fee in USD after adjustments. Null until the legacy base fee has been finalized.
financialEffectiveAtstring (date-time) or nullNoAuthoritative provider money-movement timestamp, when available.
floFeeAdjustmentUsdnumberYesNet append-only adjustment to the finalized Flo platform fee, in USD.
floFeeUsdnumber or nullYesFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency.
gatewayobjectNoOwning gateway (non-secret fields). Present only when the gateway relation is loaded.
gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
gateway.environmentstringYesAllowed values: stage, production.
gateway.idstringYesGateway UUID.
gateway.namestringYesHuman-readable name of the gateway account.
gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
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.
gatewayChargeIdstring or nullNoOriginal gateway charge identifier.
gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object identifier, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
gatewayRefundIdstring or nullNoProvider refund-object identifier on a refund transaction, such as a Stripe re_… id. Null on anything that is not a refund, and never a bank-trace reference.
gatewayTransactionIdstring or nullNoGateway transaction identifier.
idstringYes
metadataobject or nullYesArbitrary metadata captured with the transaction.
occurredAtstring (date-time)Yes
refundTraceReferenceobject or nullNoProvider-neutral bank-trace reference. Present on refund transactions (with a truthful availability status) and null on every other transaction type.
refundTraceReference.statusstringYesAvailability of the reference. Allowed values: unknown, absent, pending, unavailable, available.
refundTraceReference.typestring or nullYesWhich reference scheme the provider reported. A scheme Flo does not recognise is reported as other rather than assumed to be an ARN. Allowed values: acquirer_reference_number, system_trace_audit_number, retrieval_reference_number, other.
refundTraceReference.valuestring or nullYesThe bank-trace reference, preserved verbatim including any leading zeroes. Populated only when status is available.
statusstringYes
subscriptionobjectNoLinked subscription (non-secret fields incl. metadata). Present only when the subscription relation is loaded and the payment is tied to a subscription.
subscription.amountnumber or nullYesThe stored single-unit amount.
subscription.buyerBusinessDetailsobject or nullNoThe buyer's current business details at this merchant (customerType, legalName, address, taxId), or null when the buyer has none. Returned by the single-subscription read; omitted from lists.
subscription.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
subscription.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
subscription.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
subscription.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
subscription.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
subscription.createdAtstring (date-time)YesWhen the row was created.
subscription.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
subscription.endDatestring (date-time) or nullYesWhen the current subscription term ends.
subscription.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
subscription.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
subscription.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
subscription.gateway.environmentstringYesAllowed values: stage, production.
subscription.gateway.idstringYesGateway UUID.
subscription.gateway.namestringYesHuman-readable name of the gateway account.
subscription.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
subscription.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
subscription.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.
subscription.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
subscription.gatewaySubscriptionIdstringYesThe subscription identifier stored from the billing gateway. Flo-owned subscriptions hold no gateway-side subscription object, so this is a synthesized flo_<uuid> identifier that exists in the response only: it is not stored, and cannot be looked up at the gateway.
subscription.gatewayTypestringYesThe payment gateway that processes charges for the subscription. This describes the payment rails only: it does NOT say who owns the billing schedule. A Flo-owned subscription still reports the gateway its charges run through; read ownership to tell the two apart. Allowed values: stripe, paypal, worldpay_corporate_gateway.
subscription.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
subscription.metadataobject or nullYesArbitrary metadata captured with the subscription row.
subscription.meteredItemsarray of objectYesThe plan's metered items as snapshotted when this Flo-owned subscription started, with the effective unit price: a per-subscription override wins over the snapshot price. Later plan price changes do not alter it. Always empty for a provider-owned subscription.
subscription.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
subscription.meteredItems[].namestringYes
subscription.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
subscription.ownershipstringYesWho owns the billing schedule. provider means the gateway holds the subscription object and drives renewals; flo means Flopay holds the schedule and drives renewals itself, charging through the gateway named by gatewayType. Allowed values: flo, provider.
subscription.pauseStatestring or nullYesDistinguishes a pause that is in effect ('active') from one recorded to start at a future date ('scheduled'). Null when no pause is recorded. Allowed values: scheduled, active.
subscription.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
subscription.planDescriptionstring or nullYesThe stored plan description when available.
subscription.planIdstringYesThe stored plan identifier.
subscription.planNamestringYesThe stored plan name.
subscription.quantitynumberYesThe subscribed quantity.
subscription.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
subscription.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
subscription.startDatestring (date-time) or nullYesWhen the subscription started.
subscription.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
subscription.totalnumber or nullYesThe stored total amount.
subscription.trialEndstring (date-time) or nullYesWhen the trial ends.
subscription.updatedAtstring (date-time)YesWhen the row was last updated.
subscription.usagePeriodobject or nullYesThe open usage period of a Flo-owned subscription. Plans of a month or less: the billing cycle already paid for, from the last charge to the next charge date. Longer plans: the current month, anchored like the renewal date. null once the subscription has ended, before it has started, and for a provider-owned subscription.
subscription.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
subscription.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
subscription.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
subscription.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
subscription.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
subscription.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
subscription.uuidstringYesInternal Flopay subscription UUID.
subscriptionUuidstring or nullNoLinked Flopay subscription UUID.
typestringYesFinancial event classification. Allowed values: purchase, refund, chargeback, dispute.
userEmailstring or nullNoCustomer email when the user relation is loaded.
userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
userLastNamestring or nullNoCustomer last name when the user relation is loaded.
userUuidstring or nullNoLinked Flopay user UUID.

Errors

StatusDescription
400The payment id is not a UUID, or the Idempotency-Key header is missing or blank.
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.
403OAuth bearer callers must have a current merchant owner or admin membership. Members and revoked memberships are rejected; authenticated client Basic API-key callers remain authorized.
404No payment with the requested id exists for this merchant.
409The payment is not eligible for the requested authorization operation; the authorization has expired; another authorization operation is in progress; the Idempotency-Key was already used for a different request; the payment provider rejected the operation; or the payment reached a conflicting terminal state.
502The originating gateway could not cancel the authorization.

Payments_captureAuthorization

Capture Payment Authorization

Captures the full amount of an active manual-capture card authorization. Partial and multiple captures are not supported.

PolicyValue
OperationPUT /v1/payments/{id}/capture
Classmutating
Riskcritical
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesFlopay-issued payment transaction UUID.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
amountnumberYes
authorizationExpiresAtstring (date-time) or nullNoDeadline for capturing an active authorization.
authorizationVoidReasonstring or nullNoWhy an uncaptured authorization was voided. Allowed values: merchant_requested, expired, provider_canceled.
checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
checkoutSessionIdstring or nullNoOriginating checkout session UUID.
createdAtstring (date-time)YesRecord creation timestamp.
currencystringYes
descriptionstring or nullYes
effectiveFloFeeUsdnumber or nullYesEffective Flo platform fee in USD after adjustments. Null until the legacy base fee has been finalized.
financialEffectiveAtstring (date-time) or nullNoAuthoritative provider money-movement timestamp, when available.
floFeeAdjustmentUsdnumberYesNet append-only adjustment to the finalized Flo platform fee, in USD.
floFeeUsdnumber or nullYesFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency.
gatewayobjectNoOwning gateway (non-secret fields). Present only when the gateway relation is loaded.
gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
gateway.environmentstringYesAllowed values: stage, production.
gateway.idstringYesGateway UUID.
gateway.namestringYesHuman-readable name of the gateway account.
gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
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.
gatewayChargeIdstring or nullNoOriginal gateway charge identifier.
gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object identifier, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
gatewayRefundIdstring or nullNoProvider refund-object identifier on a refund transaction, such as a Stripe re_… id. Null on anything that is not a refund, and never a bank-trace reference.
gatewayTransactionIdstring or nullNoGateway transaction identifier.
idstringYes
metadataobject or nullYesArbitrary metadata captured with the transaction.
occurredAtstring (date-time)Yes
refundTraceReferenceobject or nullNoProvider-neutral bank-trace reference. Present on refund transactions (with a truthful availability status) and null on every other transaction type.
refundTraceReference.statusstringYesAvailability of the reference. Allowed values: unknown, absent, pending, unavailable, available.
refundTraceReference.typestring or nullYesWhich reference scheme the provider reported. A scheme Flo does not recognise is reported as other rather than assumed to be an ARN. Allowed values: acquirer_reference_number, system_trace_audit_number, retrieval_reference_number, other.
refundTraceReference.valuestring or nullYesThe bank-trace reference, preserved verbatim including any leading zeroes. Populated only when status is available.
statusstringYes
subscriptionobjectNoLinked subscription (non-secret fields incl. metadata). Present only when the subscription relation is loaded and the payment is tied to a subscription.
subscription.amountnumber or nullYesThe stored single-unit amount.
subscription.buyerBusinessDetailsobject or nullNoThe buyer's current business details at this merchant (customerType, legalName, address, taxId), or null when the buyer has none. Returned by the single-subscription read; omitted from lists.
subscription.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
subscription.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
subscription.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
subscription.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
subscription.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
subscription.createdAtstring (date-time)YesWhen the row was created.
subscription.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
subscription.endDatestring (date-time) or nullYesWhen the current subscription term ends.
subscription.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
subscription.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
subscription.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
subscription.gateway.environmentstringYesAllowed values: stage, production.
subscription.gateway.idstringYesGateway UUID.
subscription.gateway.namestringYesHuman-readable name of the gateway account.
subscription.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
subscription.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
subscription.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.
subscription.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
subscription.gatewaySubscriptionIdstringYesThe subscription identifier stored from the billing gateway. Flo-owned subscriptions hold no gateway-side subscription object, so this is a synthesized flo_<uuid> identifier that exists in the response only: it is not stored, and cannot be looked up at the gateway.
subscription.gatewayTypestringYesThe payment gateway that processes charges for the subscription. This describes the payment rails only: it does NOT say who owns the billing schedule. A Flo-owned subscription still reports the gateway its charges run through; read ownership to tell the two apart. Allowed values: stripe, paypal, worldpay_corporate_gateway.
subscription.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
subscription.metadataobject or nullYesArbitrary metadata captured with the subscription row.
subscription.meteredItemsarray of objectYesThe plan's metered items as snapshotted when this Flo-owned subscription started, with the effective unit price: a per-subscription override wins over the snapshot price. Later plan price changes do not alter it. Always empty for a provider-owned subscription.
subscription.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
subscription.meteredItems[].namestringYes
subscription.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
subscription.ownershipstringYesWho owns the billing schedule. provider means the gateway holds the subscription object and drives renewals; flo means Flopay holds the schedule and drives renewals itself, charging through the gateway named by gatewayType. Allowed values: flo, provider.
subscription.pauseStatestring or nullYesDistinguishes a pause that is in effect ('active') from one recorded to start at a future date ('scheduled'). Null when no pause is recorded. Allowed values: scheduled, active.
subscription.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
subscription.planDescriptionstring or nullYesThe stored plan description when available.
subscription.planIdstringYesThe stored plan identifier.
subscription.planNamestringYesThe stored plan name.
subscription.quantitynumberYesThe subscribed quantity.
subscription.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
subscription.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
subscription.startDatestring (date-time) or nullYesWhen the subscription started.
subscription.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
subscription.totalnumber or nullYesThe stored total amount.
subscription.trialEndstring (date-time) or nullYesWhen the trial ends.
subscription.updatedAtstring (date-time)YesWhen the row was last updated.
subscription.usagePeriodobject or nullYesThe open usage period of a Flo-owned subscription. Plans of a month or less: the billing cycle already paid for, from the last charge to the next charge date. Longer plans: the current month, anchored like the renewal date. null once the subscription has ended, before it has started, and for a provider-owned subscription.
subscription.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
subscription.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
subscription.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
subscription.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
subscription.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
subscription.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
subscription.uuidstringYesInternal Flopay subscription UUID.
subscriptionUuidstring or nullNoLinked Flopay subscription UUID.
typestringYesFinancial event classification. Allowed values: purchase, refund, chargeback, dispute.
userEmailstring or nullNoCustomer email when the user relation is loaded.
userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
userLastNamestring or nullNoCustomer last name when the user relation is loaded.
userUuidstring or nullNoLinked Flopay user UUID.

Errors

StatusDescription
400The payment id is not a UUID, or the Idempotency-Key header is missing or blank.
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.
403OAuth bearer callers must have a current merchant owner or admin membership. Members and revoked memberships are rejected; authenticated client Basic API-key callers remain authorized.
404No payment with the requested id exists for this merchant.
409The payment is not eligible for the requested authorization operation; the authorization has expired; another authorization operation is in progress; the Idempotency-Key was already used for a different request; the payment provider rejected the operation; or the payment reached a conflicting terminal state.
502The originating gateway could not capture the authorization.

Payments_exportPayments

Export Payments

Streams a point-in-time CSV or JSON export for the authenticated merchant. Requires an OAuth client_user owner/admin token; members and client Basic auth are rejected.

PolicyValue
OperationPOST /v1/payments/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: amount, createdAt, floFeeUsd, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode, subscription.uuid, subscription.gatewayType, subscription.gatewaySubscriptionId, subscription.planId, subscription.planName, subscription.quantity, subscription.rebillCount, subscription.currency, subscription.amount, subscription.total, subscription.state, subscription.startDate, subscription.endDate, subscription.canceledAt, subscription.createdAt, subscription.updatedAt. Default: createdAt DESC. Allowed values: amount, createdAt, floFeeUsd, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode, subscription.uuid, subscription.gatewayType, subscription.gatewaySubscriptionId, subscription.planId, subscription.planName, subscription.quantity, subscription.rebillCount, subscription.currency, subscription.amount, subscription.total, subscription.state, subscription.startDate, subscription.endDate, subscription.canceledAt, subscription.createdAt, subscription.updatedAt.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: gateway, subscription. Unknown aliases return 400.
amountquerynumberNoPayment amount. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
currencyquerystringNoPayment 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.
descriptionquerystringNoPayment description. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
emailquerystringNoEmail address of the user linked to the payment. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
floFeeUsdquerynumberNoFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
idquerystringNoPayment identifier. 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.
occurredAtquerystring (date-time)NoPayment occurrence timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
providerquerystringNoPayment provider. 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.
statusquerystringNoCanonical payment lifecycle state. 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, processing, succeeded, failed, refunded, partially_refunded, refund_failed, voided, reversed, unknown.
typequerystringNoFinancial event type. 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: purchase, refund, chargeback, dispute.
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.
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. Versioned length-prefixed export stream.

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.
429Export capacity exhausted. Retry-After is set to 60 seconds.
503Exports disabled or export storage unavailable.

Payments_findOne

Get Payment

Returns a single payment (Flopay transaction row) for the authenticated client. The id is the Flopay-issued transaction UUID; provider-side ids are not accepted.

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

Arguments

ArgumentInTypeRequiredDescription
idpathstringYes
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: gateway, subscription. Unknown aliases return 400.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
amountnumberYes
authorizationExpiresAtstring (date-time) or nullNoDeadline for capturing an active authorization.
authorizationVoidReasonstring or nullNoWhy an uncaptured authorization was voided. Allowed values: merchant_requested, expired, provider_canceled.
checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
checkoutSessionIdstring or nullNoOriginating checkout session UUID.
createdAtstring (date-time)YesRecord creation timestamp.
currencystringYes
descriptionstring or nullYes
effectiveFloFeeUsdnumber or nullYesEffective Flo platform fee in USD after adjustments. Null until the legacy base fee has been finalized.
financialEffectiveAtstring (date-time) or nullNoAuthoritative provider money-movement timestamp, when available.
floFeeAdjustmentUsdnumberYesNet append-only adjustment to the finalized Flo platform fee, in USD.
floFeeUsdnumber or nullYesFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency.
gatewayobjectNoOwning gateway (non-secret fields). Present only when the gateway relation is loaded.
gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
gateway.environmentstringYesAllowed values: stage, production.
gateway.idstringYesGateway UUID.
gateway.namestringYesHuman-readable name of the gateway account.
gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
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.
gatewayChargeIdstring or nullNoOriginal gateway charge identifier.
gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object identifier, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
gatewayRefundIdstring or nullNoProvider refund-object identifier on a refund transaction, such as a Stripe re_… id. Null on anything that is not a refund, and never a bank-trace reference.
gatewayTransactionIdstring or nullNoGateway transaction identifier.
idstringYes
metadataobject or nullYesArbitrary metadata captured with the transaction.
occurredAtstring (date-time)Yes
refundTraceReferenceobject or nullNoProvider-neutral bank-trace reference. Present on refund transactions (with a truthful availability status) and null on every other transaction type.
refundTraceReference.statusstringYesAvailability of the reference. Allowed values: unknown, absent, pending, unavailable, available.
refundTraceReference.typestring or nullYesWhich reference scheme the provider reported. A scheme Flo does not recognise is reported as other rather than assumed to be an ARN. Allowed values: acquirer_reference_number, system_trace_audit_number, retrieval_reference_number, other.
refundTraceReference.valuestring or nullYesThe bank-trace reference, preserved verbatim including any leading zeroes. Populated only when status is available.
statusstringYes
subscriptionobjectNoLinked subscription (non-secret fields incl. metadata). Present only when the subscription relation is loaded and the payment is tied to a subscription.
subscription.amountnumber or nullYesThe stored single-unit amount.
subscription.buyerBusinessDetailsobject or nullNoThe buyer's current business details at this merchant (customerType, legalName, address, taxId), or null when the buyer has none. Returned by the single-subscription read; omitted from lists.
subscription.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
subscription.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
subscription.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
subscription.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
subscription.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
subscription.createdAtstring (date-time)YesWhen the row was created.
subscription.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
subscription.endDatestring (date-time) or nullYesWhen the current subscription term ends.
subscription.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
subscription.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
subscription.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
subscription.gateway.environmentstringYesAllowed values: stage, production.
subscription.gateway.idstringYesGateway UUID.
subscription.gateway.namestringYesHuman-readable name of the gateway account.
subscription.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
subscription.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
subscription.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.
subscription.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
subscription.gatewaySubscriptionIdstringYesThe subscription identifier stored from the billing gateway. Flo-owned subscriptions hold no gateway-side subscription object, so this is a synthesized flo_<uuid> identifier that exists in the response only: it is not stored, and cannot be looked up at the gateway.
subscription.gatewayTypestringYesThe payment gateway that processes charges for the subscription. This describes the payment rails only: it does NOT say who owns the billing schedule. A Flo-owned subscription still reports the gateway its charges run through; read ownership to tell the two apart. Allowed values: stripe, paypal, worldpay_corporate_gateway.
subscription.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
subscription.metadataobject or nullYesArbitrary metadata captured with the subscription row.
subscription.meteredItemsarray of objectYesThe plan's metered items as snapshotted when this Flo-owned subscription started, with the effective unit price: a per-subscription override wins over the snapshot price. Later plan price changes do not alter it. Always empty for a provider-owned subscription.
subscription.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
subscription.meteredItems[].namestringYes
subscription.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
subscription.ownershipstringYesWho owns the billing schedule. provider means the gateway holds the subscription object and drives renewals; flo means Flopay holds the schedule and drives renewals itself, charging through the gateway named by gatewayType. Allowed values: flo, provider.
subscription.pauseStatestring or nullYesDistinguishes a pause that is in effect ('active') from one recorded to start at a future date ('scheduled'). Null when no pause is recorded. Allowed values: scheduled, active.
subscription.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
subscription.planDescriptionstring or nullYesThe stored plan description when available.
subscription.planIdstringYesThe stored plan identifier.
subscription.planNamestringYesThe stored plan name.
subscription.quantitynumberYesThe subscribed quantity.
subscription.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
subscription.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
subscription.startDatestring (date-time) or nullYesWhen the subscription started.
subscription.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
subscription.totalnumber or nullYesThe stored total amount.
subscription.trialEndstring (date-time) or nullYesWhen the trial ends.
subscription.updatedAtstring (date-time)YesWhen the row was last updated.
subscription.usagePeriodobject or nullYesThe open usage period of a Flo-owned subscription. Plans of a month or less: the billing cycle already paid for, from the last charge to the next charge date. Longer plans: the current month, anchored like the renewal date. null once the subscription has ended, before it has started, and for a provider-owned subscription.
subscription.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
subscription.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
subscription.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
subscription.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
subscription.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
subscription.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
subscription.uuidstringYesInternal Flopay subscription UUID.
subscriptionUuidstring or nullNoLinked Flopay subscription UUID.
typestringYesFinancial event classification. Allowed values: purchase, refund, chargeback, dispute.
userEmailstring or nullNoCustomer email when the user relation is loaded.
userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
userLastNamestring or nullNoCustomer last name when the user relation is loaded.
userUuidstring or nullNoLinked Flopay user UUID.

Errors

StatusDescription
400The sort, filter, or pagination query parameters 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.
404No payment with the requested id exists for this client.

Payments_list

List Payments

Returns paginated payments for the authenticated client from the locally persisted transaction table. Supports page, limit, sort[asc|desc], the relation aliases gateway and subscription, and whitelisted filters for id, amount, floFeeUsd, currency, description, email, occurredAt, provider, status, and userUuid. floFeeUsd is the nullable Flo platform fee in USD; unavailable values sort last. The email filter matches the email of the user linked to each payment. Invalid list parameters return 400.

PolicyValue
OperationGET /v1/payments
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: amount, createdAt, floFeeUsd, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode, subscription.uuid, subscription.gatewayType, subscription.gatewaySubscriptionId, subscription.planId, subscription.planName, subscription.quantity, subscription.rebillCount, subscription.currency, subscription.amount, subscription.total, subscription.state, subscription.startDate, subscription.endDate, subscription.canceledAt, subscription.createdAt, subscription.updatedAt. Default: createdAt DESC. Allowed values: amount, createdAt, floFeeUsd, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode, subscription.uuid, subscription.gatewayType, subscription.gatewaySubscriptionId, subscription.planId, subscription.planName, subscription.quantity, subscription.rebillCount, subscription.currency, subscription.amount, subscription.total, subscription.state, subscription.startDate, subscription.endDate, subscription.canceledAt, subscription.createdAt, subscription.updatedAt.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: gateway, subscription. Unknown aliases return 400.
amountquerynumberNoPayment amount. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
currencyquerystringNoPayment 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.
descriptionquerystringNoPayment description. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
emailquerystringNoEmail address of the user linked to the payment. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
floFeeUsdquerynumberNoFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
idquerystringNoPayment identifier. 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.
occurredAtquerystring (date-time)NoPayment occurrence timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
providerquerystringNoPayment provider. 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.
statusquerystringNoCanonical payment lifecycle state. 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, processing, succeeded, failed, refunded, partially_refunded, refund_failed, voided, reversed, unknown.
typequerystringNoFinancial event type. 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: purchase, refund, chargeback, dispute.
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.

Result

Returns 200 with a JSON body. A paginated list of locally persisted payments for the requested client.

FieldTypeRequiredDescription
dataarray of objectYes
data[].amountnumberYes
data[].authorizationExpiresAtstring (date-time) or nullNoDeadline for capturing an active authorization.
data[].authorizationVoidReasonstring or nullNoWhy an uncaptured authorization was voided. Allowed values: merchant_requested, expired, provider_canceled.
data[].checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].checkoutSessionIdstring or nullNoOriginating checkout session UUID.
data[].createdAtstring (date-time)YesRecord creation timestamp.
data[].currencystringYes
data[].descriptionstring or nullYes
data[].effectiveFloFeeUsdnumber or nullYesEffective Flo platform fee in USD after adjustments. Null until the legacy base fee has been finalized.
data[].financialEffectiveAtstring (date-time) or nullNoAuthoritative provider money-movement timestamp, when available.
data[].floFeeAdjustmentUsdnumberYesNet append-only adjustment to the finalized Flo platform fee, in USD.
data[].floFeeUsdnumber or nullYesFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency.
data[].gatewayobjectNoOwning gateway (non-secret fields). Present only when the gateway relation is loaded.
data[].gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].gateway.environmentstringYesAllowed values: stage, production.
data[].gateway.idstringYesGateway UUID.
data[].gateway.namestringYesHuman-readable name of the gateway account.
data[].gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].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[].gatewayChargeIdstring or nullNoOriginal gateway charge identifier.
data[].gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object identifier, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
data[].gatewayRefundIdstring or nullNoProvider refund-object identifier on a refund transaction, such as a Stripe re_… id. Null on anything that is not a refund, and never a bank-trace reference.
data[].gatewayTransactionIdstring or nullNoGateway transaction identifier.
data[].idstringYes
data[].metadataobject or nullYesArbitrary metadata captured with the transaction.
data[].occurredAtstring (date-time)Yes
data[].refundTraceReferenceobject or nullNoProvider-neutral bank-trace reference. Present on refund transactions (with a truthful availability status) and null on every other transaction type.
data[].refundTraceReference.statusstringYesAvailability of the reference. Allowed values: unknown, absent, pending, unavailable, available.
data[].refundTraceReference.typestring or nullYesWhich reference scheme the provider reported. A scheme Flo does not recognise is reported as other rather than assumed to be an ARN. Allowed values: acquirer_reference_number, system_trace_audit_number, retrieval_reference_number, other.
data[].refundTraceReference.valuestring or nullYesThe bank-trace reference, preserved verbatim including any leading zeroes. Populated only when status is available.
data[].statusstringYes
data[].subscriptionobjectNoLinked subscription (non-secret fields incl. metadata). Present only when the subscription relation is loaded and the payment is tied to a subscription.
data[].subscription.amountnumber or nullYesThe stored single-unit amount.
data[].subscription.buyerBusinessDetailsobject or nullNoThe buyer's current business details at this merchant (customerType, legalName, address, taxId), or null when the buyer has none. Returned by the single-subscription read; omitted from lists.
data[].subscription.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data[].subscription.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data[].subscription.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].subscription.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data[].subscription.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data[].subscription.createdAtstring (date-time)YesWhen the row was created.
data[].subscription.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data[].subscription.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data[].subscription.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
data[].subscription.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].subscription.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].subscription.gateway.environmentstringYesAllowed values: stage, production.
data[].subscription.gateway.idstringYesGateway UUID.
data[].subscription.gateway.namestringYesHuman-readable name of the gateway account.
data[].subscription.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].subscription.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].subscription.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[].subscription.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data[].subscription.gatewaySubscriptionIdstringYesThe subscription identifier stored from the billing gateway. Flo-owned subscriptions hold no gateway-side subscription object, so this is a synthesized flo_<uuid> identifier that exists in the response only: it is not stored, and cannot be looked up at the gateway.
data[].subscription.gatewayTypestringYesThe payment gateway that processes charges for the subscription. This describes the payment rails only: it does NOT say who owns the billing schedule. A Flo-owned subscription still reports the gateway its charges run through; read ownership to tell the two apart. Allowed values: stripe, paypal, worldpay_corporate_gateway.
data[].subscription.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data[].subscription.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data[].subscription.meteredItemsarray of objectYesThe plan's metered items as snapshotted when this Flo-owned subscription started, with the effective unit price: a per-subscription override wins over the snapshot price. Later plan price changes do not alter it. Always empty for a provider-owned subscription.
data[].subscription.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data[].subscription.meteredItems[].namestringYes
data[].subscription.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data[].subscription.ownershipstringYesWho owns the billing schedule. provider means the gateway holds the subscription object and drives renewals; flo means Flopay holds the schedule and drives renewals itself, charging through the gateway named by gatewayType. Allowed values: flo, provider.
data[].subscription.pauseStatestring or nullYesDistinguishes a pause that is in effect ('active') from one recorded to start at a future date ('scheduled'). Null when no pause is recorded. Allowed values: scheduled, active.
data[].subscription.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data[].subscription.planDescriptionstring or nullYesThe stored plan description when available.
data[].subscription.planIdstringYesThe stored plan identifier.
data[].subscription.planNamestringYesThe stored plan name.
data[].subscription.quantitynumberYesThe subscribed quantity.
data[].subscription.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data[].subscription.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data[].subscription.startDatestring (date-time) or nullYesWhen the subscription started.
data[].subscription.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data[].subscription.totalnumber or nullYesThe stored total amount.
data[].subscription.trialEndstring (date-time) or nullYesWhen the trial ends.
data[].subscription.updatedAtstring (date-time)YesWhen the row was last updated.
data[].subscription.usagePeriodobject or nullYesThe open usage period of a Flo-owned subscription. Plans of a month or less: the billing cycle already paid for, from the last charge to the next charge date. Longer plans: the current month, anchored like the renewal date. null once the subscription has ended, before it has started, and for a provider-owned subscription.
data[].subscription.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data[].subscription.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data[].subscription.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].subscription.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data[].subscription.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].subscription.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data[].subscription.uuidstringYesInternal Flopay subscription UUID.
data[].subscriptionUuidstring or nullNoLinked Flopay subscription UUID.
data[].typestringYesFinancial event classification. Allowed values: purchase, refund, chargeback, dispute.
data[].userEmailstring or nullNoCustomer email when the user relation is loaded.
data[].userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].userUuidstring or nullNoLinked Flopay user UUID.
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
400The sort, filter, or pagination query parameters 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.

Payments_refund

Refund Payment

Issues a full or partial refund against the payment’s originating gateway through the shared refund issuance path. Omit amount and currency to refund the full remaining refundable balance; supply both for a partial refund. The payment and every prior refund are scoped to the authenticated merchant.

PolicyValue
OperationPOST /v1/payments/{id}/refund
Classmutating
Riskcritical
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesFlopay-issued payment transaction UUID.
amountbodynumberNoPartial refund amount in major currency units. Omit both amount and currency to refund the full remaining amount. Minimum: 1. Maximum: 99999999.99.
currencybodystringNoISO-4217 currency for a partial refund. Must be supplied together with amount. Minimum length: 3. Maximum length: 3.
reasonbodystringNoOptional merchant-supplied audit reason. Maximum length: 255.

Result

Returns 201 with a JSON body. The persisted refund and canonical resulting payment status. Completed refunds transition the payment to partially_refunded or refunded; terminal provider failures use refund_failed, while an asynchronous pending refund preserves the prior payment status.

FieldTypeRequiredDescription
amountnumberYesIssued refund amount in major currency units.
createdAtstring (date-time)YesTimestamp when the refund transaction was persisted.
currencystringYesISO-4217 refund currency.
gatewayRefundIdstring or nullNoOriginating gateway refund identifier.
idstring (uuid)YesFlopay refund transaction UUID.
paymentIdstring (uuid)YesThe refunded Flopay payment transaction UUID.
reasonstring or nullNoTrimmed merchant-supplied audit reason.
refundStatusstringYesCanonical state of this refund transaction. Allowed values: pending, processing, refunded, failed, voided.
refundTraceReferenceobject or nullYesProvider-neutral bank-trace reference for this refund. Always present on a refund response; gatewayRefundId remains the provider refund-object identifier and is never the trace value.
refundTraceReference.statusstringYesAvailability of the reference. Allowed values: unknown, absent, pending, unavailable, available.
refundTraceReference.typestring or nullYesWhich reference scheme the provider reported. A scheme Flo does not recognise is reported as other rather than assumed to be an ARN. Allowed values: acquirer_reference_number, system_trace_audit_number, retrieval_reference_number, other.
refundTraceReference.valuestring or nullYesThe bank-trace reference, preserved verbatim including any leading zeroes. Populated only when status is available.
statusstringYesCanonical resulting state of the parent payment. A pending provider refund leaves the prior payment state unchanged. Allowed values: succeeded, partially_refunded, refunded, refund_failed.

Errors

StatusDescription
400The idempotency key or refund body is invalid; amount and currency were not supplied together; the amount exceeds the remaining balance or has invalid precision; or the currency does not match the payment.
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.
403OAuth bearer callers must have a current merchant owner or admin membership. Members and revoked memberships are rejected; authenticated client Basic API-key callers remain authorized.
404No payment with the requested id exists for this merchant.
409The payment is in a non-refundable state, is disputed/reversed, was already fully refunded, or the idempotency key was reused for a different request.
502The originating gateway could not issue the refund. The payment is marked refund_failed for audit and retry visibility. If the stored charge is absent from that gateway account, the response includes a stable code, the Flo gateway UUID, retry safety, and provider-neutral recovery guidance.

On this page