Documentation
MCPTool reference

Subscriptions tools

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

Subscriptions tools

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

SubscriptionChange_change

Change Subscription Plan

Changes an existing stored subscription to a different plan using the local Flopay subscription UUID. The subscription must belong to the authenticated client. For Flo-owned subscriptions, timeframe selects when the change takes effect. termEnd, or no timeframe, keeps the period-end behavior: the new snapshotted terms bill from the next renewal with no immediate charge, and the change can be withdrawn before then with POST /subscriptions/{id}/change/withdraw. now changes the plan immediately: the prorated difference for the days remaining in the paid current period ((new total - old total) x remainingDays / periodDays, rounded half-up to the minor unit) is charged off-session on the stored payment method and the renewal date is kept. A billing-cadence change charges the new total less the unused value of the current period and re-anchors the renewal to the change instant plus one new period. now is rejected with a typed error, with no charge, when the prorated amount is zero or negative (downgrades stay at the period end) or the subscription is not active with a paid current period; a declined prorated charge leaves the subscription on its old plan and returns the decline contract. A successful now change records a paid proration invoice and emits invoice.created, invoice.paid and subscription.updated, in that order. An uncertain prorated charge (for example a provider timeout) leaves the subscription unchanged and returns subscription_change_charge_uncertain: retry the same change, and the retry reconciles the earlier charge with the provider before charging again, so it never charges twice. While such a charge is unresolved, a different plan change or a withdrawal returns 409 subscription_change_in_progress; cancel and pause are not blocked. If the charge is paid but the subscription changed meanwhile (canceled, paused, renewed or changed), the change is not applied and 409 subscription_change_paid_unapplied is returned. Provider-owned subscriptions retain their existing gateway behavior.

PolicyValue
OperationPOST /v1/subscriptions/{id}/change
Classmutating
Riskhigh
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin, member
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesThe Flopay subscription UUID to update.

Result

Returns 200 with a JSON body. The stored subscription row after the plan change is applied.

FieldTypeRequiredDescription
dataobjectYesThe stored subscription row after the requested action is applied.
data.amountnumber or nullYesThe stored single-unit amount.
data.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.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data.createdAtstring (date-time)YesWhen the row was created.
data.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data.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.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.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data.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.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data.meteredItems[].namestringYes
data.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data.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.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.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data.planDescriptionstring or nullYesThe stored plan description when available.
data.planIdstringYesThe stored plan identifier.
data.planNamestringYesThe stored plan name.
data.quantitynumberYesThe subscribed quantity.
data.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data.startDatestring (date-time) or nullYesWhen the subscription started.
data.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data.totalnumber or nullYesThe stored total amount.
data.trialEndstring (date-time) or nullYesWhen the trial ends.
data.updatedAtstring (date-time)YesWhen the row was last updated.
data.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.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data.uuidstringYesInternal Flopay subscription UUID.

Errors

StatusDescription
400The subscription id or request body was 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.
424The stored subscription could not be resolved or the billing provider could not preview or apply the requested change.

SubscriptionChange_changePreview

Preview Subscription Plan Change

Previews a subscription plan change before it is applied. Use the same payload as the change endpoint to inspect proration and invoice impact. For a Flo-owned subscription the preview is computed locally, writes nothing and calls no billing provider: immediateChargeAmount is the prorated amount timeframe: now would charge today, in minor units (zero for termEnd or no timeframe), and nextChargeAt is the renewal the new terms first bill on. A now change that is not chargeable or not eligible returns the same typed error as the change endpoint.

PolicyValue
OperationPOST /v1/subscriptions/{id}/change/preview
Classread-only
Riskmedium
Confirmationnot-required
Retrysafe
Rate-limit tierrestricted
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesThe Flopay subscription UUID to preview.

Result

Returns 200 with a JSON body. A preview of the updated plan and any generated invoice calculations.

FieldTypeRequiredDescription
dataobjectYes
data.activatedAtstring (date-time)Yes
data.currencystringNoFlo-owned subscriptions only: the ISO currency of immediateChargeAmount and unitAmount.
data.idstringYes
data.immediateChargeAmountnumberNoFlo-owned subscriptions only: the prorated amount charged today, in minor units. Zero for timeframe: termEnd or no timeframe.
data.invoiceCollectionobjectYes
data.invoiceCollection.chargeInvoiceobject or nullYes
data.invoiceCollection.chargeInvoice.currencyobjectYes
data.invoiceCollection.chargeInvoice.currency.codestringYesThe ISO 4217 currency code.
data.invoiceCollection.chargeInvoice.currency.symbolstring or nullYesThe display symbol for the currency when available.
data.invoiceCollection.chargeInvoice.discountnumberYes
data.invoiceCollection.chargeInvoice.idstringYes
data.invoiceCollection.chargeInvoice.refundableAmountnumber or nullYes
data.invoiceCollection.chargeInvoice.subtotalnumberYes
data.invoiceCollection.chargeInvoice.subtotalAfterDiscountnumberYes
data.invoiceCollection.chargeInvoice.taxnumberYes
data.invoiceCollection.chargeInvoice.totalnumberYes
data.invoiceCollection.chargeInvoice.typestringYesAllowed values: charge, credit, legacy.
data.invoiceCollection.creditInvoicesarray of object or nullYes
data.invoiceCollection.creditInvoices[].currencyobjectYes
data.invoiceCollection.creditInvoices[].currency.codestringYesThe ISO 4217 currency code.
data.invoiceCollection.creditInvoices[].currency.symbolstring or nullYesThe display symbol for the currency when available.
data.invoiceCollection.creditInvoices[].discountnumberYes
data.invoiceCollection.creditInvoices[].idstringYes
data.invoiceCollection.creditInvoices[].refundableAmountnumber or nullYes
data.invoiceCollection.creditInvoices[].subtotalnumberYes
data.invoiceCollection.creditInvoices[].subtotalAfterDiscountnumberYes
data.invoiceCollection.creditInvoices[].taxnumberYes
data.invoiceCollection.creditInvoices[].totalnumberYes
data.invoiceCollection.creditInvoices[].typestringYesAllowed values: charge, credit, legacy.
data.nextChargeAtstring (date-time) or nullNoFlo-owned subscriptions only: the renewal the new terms first bill on. A billing-cadence change with timeframe: now re-anchors it to the change instant plus one new period.
data.planobjectYes
data.plan.codestringYes
data.plan.idstringYes
data.plan.namestringYes
data.quantitynumberYes
data.unitAmountnumberYes

Errors

StatusDescription
400The subscription id or request body was 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.
424The stored subscription could not be resolved or the billing provider could not preview or apply the requested change.

SubscriptionChange_withdrawChange

Withdraw Scheduled Subscription Plan Change

Withdraws a Flo-owned plan change scheduled for the period end (timeframe: termEnd or no timeframe) before it takes effect. The terms the current period was paid at are restored, the next renewal bills them, and subscription.updated is emitted. Returns subscription_no_pending_change when no change is pending or the boundary has already renewed, and 409 subscription_change_in_progress while an immediate change has an unresolved prorated charge. Provider-owned subscriptions are not supported.

PolicyValue
OperationPOST /v1/subscriptions/{id}/change/withdraw
Classmutating
Riskhigh
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin, member
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesThe Flopay subscription UUID whose scheduled plan change is withdrawn.

Result

Returns 200 with a JSON body. The stored subscription row after the scheduled plan change is withdrawn.

FieldTypeRequiredDescription
dataobjectYesThe stored subscription row after the requested action is applied.
data.amountnumber or nullYesThe stored single-unit amount.
data.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.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data.createdAtstring (date-time)YesWhen the row was created.
data.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data.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.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.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data.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.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data.meteredItems[].namestringYes
data.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data.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.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.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data.planDescriptionstring or nullYesThe stored plan description when available.
data.planIdstringYesThe stored plan identifier.
data.planNamestringYesThe stored plan name.
data.quantitynumberYesThe subscribed quantity.
data.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data.startDatestring (date-time) or nullYesWhen the subscription started.
data.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data.totalnumber or nullYesThe stored total amount.
data.trialEndstring (date-time) or nullYesWhen the trial ends.
data.updatedAtstring (date-time)YesWhen the row was last updated.
data.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.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data.uuidstringYesInternal Flopay subscription UUID.

Errors

StatusDescription
400The subscription id or request body was 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.
424The stored subscription could not be resolved or the billing provider could not preview or apply the requested change.

SubscriptionControl_cancel

Cancel Subscription

Cancel an active subscription using the local Flopay subscription UUID. The subscription must belong to the authenticated client. Flo-owned subscriptions are changed locally without calling a provider subscription API.

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

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesThe Flopay subscription UUID to cancel.

Result

Returns 200 with a JSON body. The stored subscription row after the cancellation request is recorded.

FieldTypeRequiredDescription
dataobjectYesThe stored subscription row after the requested action is applied.
data.amountnumber or nullYesThe stored single-unit amount.
data.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.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data.createdAtstring (date-time)YesWhen the row was created.
data.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data.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.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.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data.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.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data.meteredItems[].namestringYes
data.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data.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.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.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data.planDescriptionstring or nullYesThe stored plan description when available.
data.planIdstringYesThe stored plan identifier.
data.planNamestringYesThe stored plan name.
data.quantitynumberYesThe subscribed quantity.
data.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data.startDatestring (date-time) or nullYesWhen the subscription started.
data.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data.totalnumber or nullYesThe stored total amount.
data.trialEndstring (date-time) or nullYesWhen the trial ends.
data.updatedAtstring (date-time)YesWhen the row was last updated.
data.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.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data.uuidstringYesInternal Flopay subscription UUID.

Errors

StatusDescription
400The subscription id or request body was invalid, or the billing provider rejected the lifecycle transition (for example, reactivating a subscription that is not pending cancellation, pausing a PayPal subscription with a future date, or extending past a non-extendable state).
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.
424The stored subscription could not be resolved for the authenticated client.

SubscriptionControl_extend

Extend Subscription Term End

Push an active or trialing subscription's term end out to a future date using the local Flopay subscription UUID. The subscription must belong to the authenticated client. Use this for manual term extensions (for example, granting a free month) without generating a proration invoice. The new date must be strictly after the current period end. Flo-owned subscriptions move their local renewal boundary without calling a provider subscription API.

PolicyValue
OperationPUT /v1/subscriptions/{id}/extend
Classmutating
Riskhigh
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin, member
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesThe Flopay subscription UUID to extend.

Result

Returns 200 with a JSON body. The stored subscription row after the extension is applied.

FieldTypeRequiredDescription
dataobjectYesThe stored subscription row after the requested action is applied.
data.amountnumber or nullYesThe stored single-unit amount.
data.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.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data.createdAtstring (date-time)YesWhen the row was created.
data.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data.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.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.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data.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.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data.meteredItems[].namestringYes
data.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data.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.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.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data.planDescriptionstring or nullYesThe stored plan description when available.
data.planIdstringYesThe stored plan identifier.
data.planNamestringYesThe stored plan name.
data.quantitynumberYesThe subscribed quantity.
data.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data.startDatestring (date-time) or nullYesWhen the subscription started.
data.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data.totalnumber or nullYesThe stored total amount.
data.trialEndstring (date-time) or nullYesWhen the trial ends.
data.updatedAtstring (date-time)YesWhen the row was last updated.
data.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.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data.uuidstringYesInternal Flopay subscription UUID.

Errors

StatusDescription
400The subscription id or request body was invalid, or the billing provider rejected the lifecycle transition (for example, reactivating a subscription that is not pending cancellation, pausing a PayPal subscription with a future date, or extending past a non-extendable state).
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.
424The stored subscription could not be resolved for the authenticated client.

SubscriptionControl_pause

Pause Subscription

Pause a subscription using the local Flopay subscription UUID. The subscription must belong to the authenticated client. Flo-owned subscriptions are paused locally at the requested effective time without calling a provider subscription API.

PolicyValue
OperationPUT /v1/subscriptions/{id}/pause
Classmutating
Riskhigh
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin, member
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesThe Flopay subscription UUID to pause.

Result

Returns 200 with a JSON body. The stored subscription row after the pause is applied. pauseState distinguishes a pause that is already in effect ('active') from a future-dated one that is only recorded to start at pausedAt ('scheduled').

FieldTypeRequiredDescription
dataobjectYesThe stored subscription row after the requested action is applied.
data.amountnumber or nullYesThe stored single-unit amount.
data.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.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data.createdAtstring (date-time)YesWhen the row was created.
data.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data.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.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.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data.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.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data.meteredItems[].namestringYes
data.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data.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.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.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data.planDescriptionstring or nullYesThe stored plan description when available.
data.planIdstringYesThe stored plan identifier.
data.planNamestringYesThe stored plan name.
data.quantitynumberYesThe subscribed quantity.
data.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data.startDatestring (date-time) or nullYesWhen the subscription started.
data.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data.totalnumber or nullYesThe stored total amount.
data.trialEndstring (date-time) or nullYesWhen the trial ends.
data.updatedAtstring (date-time)YesWhen the row was last updated.
data.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.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data.uuidstringYesInternal Flopay subscription UUID.

Errors

StatusDescription
400The subscription id or request body was invalid, or the billing provider rejected the lifecycle transition (for example, reactivating a subscription that is not pending cancellation, pausing a PayPal subscription with a future date, or extending past a non-extendable state).
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.
424The stored subscription could not be resolved for the authenticated client.

SubscriptionControl_reactivate

Reactivate Subscription

Reactivate a subscription pending deferred cancellation using the local Flopay subscription UUID. The subscription must belong to the authenticated client. Flo-owned subscriptions are changed locally without calling a provider subscription API.

PolicyValue
OperationPUT /v1/subscriptions/{id}/reactivate
Classmutating
Riskhigh
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin, member
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesThe Flopay subscription UUID to reactivate.

Result

Returns 200 with a JSON body. The stored subscription row after the reactivation is applied.

FieldTypeRequiredDescription
dataobjectYesThe stored subscription row after the requested action is applied.
data.amountnumber or nullYesThe stored single-unit amount.
data.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.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data.createdAtstring (date-time)YesWhen the row was created.
data.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data.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.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.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data.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.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data.meteredItems[].namestringYes
data.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data.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.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.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data.planDescriptionstring or nullYesThe stored plan description when available.
data.planIdstringYesThe stored plan identifier.
data.planNamestringYesThe stored plan name.
data.quantitynumberYesThe subscribed quantity.
data.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data.startDatestring (date-time) or nullYesWhen the subscription started.
data.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data.totalnumber or nullYesThe stored total amount.
data.trialEndstring (date-time) or nullYesWhen the trial ends.
data.updatedAtstring (date-time)YesWhen the row was last updated.
data.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.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data.uuidstringYesInternal Flopay subscription UUID.

Errors

StatusDescription
400The subscription id or request body was invalid, or the billing provider rejected the lifecycle transition (for example, reactivating a subscription that is not pending cancellation, pausing a PayPal subscription with a future date, or extending past a non-extendable state).
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.
424The stored subscription could not be resolved for the authenticated client.

SubscriptionControl_resume

Resume Subscription

Resume a paused subscription using the local Flopay subscription UUID. The subscription must belong to the authenticated client. Flo-owned subscriptions restore local billing eligibility from the effective resume time without calling a provider subscription API.

PolicyValue
OperationPUT /v1/subscriptions/{id}/resume
Classmutating
Riskhigh
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin, member
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstring (uuid)YesThe Flopay subscription UUID to resume.

Result

Returns 200 with a JSON body. The stored subscription row after the resume is applied.

FieldTypeRequiredDescription
dataobjectYesThe stored subscription row after the requested action is applied.
data.amountnumber or nullYesThe stored single-unit amount.
data.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.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data.createdAtstring (date-time)YesWhen the row was created.
data.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data.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.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.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data.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.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data.meteredItems[].namestringYes
data.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data.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.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.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data.planDescriptionstring or nullYesThe stored plan description when available.
data.planIdstringYesThe stored plan identifier.
data.planNamestringYesThe stored plan name.
data.quantitynumberYesThe subscribed quantity.
data.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data.startDatestring (date-time) or nullYesWhen the subscription started.
data.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data.totalnumber or nullYesThe stored total amount.
data.trialEndstring (date-time) or nullYesWhen the trial ends.
data.updatedAtstring (date-time)YesWhen the row was last updated.
data.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.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data.uuidstringYesInternal Flopay subscription UUID.

Errors

StatusDescription
400The subscription id or request body was invalid, or the billing provider rejected the lifecycle transition (for example, reactivating a subscription that is not pending cancellation, pausing a PayPal subscription with a future date, or extending past a non-extendable state).
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.
424The stored subscription could not be resolved for the authenticated client.

SubscriptionCreate_create

Create Subscription

Creates a new subscription for an existing Flopay user. The endpoint cascades through the user's gateways (ordered by most-recently-active) and stops on the first provider that successfully creates the subscription. Returns 422 when the user has no user_gateway rows tied to an active gateway and 424 with an attempts[] array when every gateway rejected the request (including payment_method_not_found when the gateway-side customer has no payment method on file).

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

Arguments

This tool takes no arguments.

Result

Returns 201 with a JSON body. The stored subscription row returned by the first provider that succeeded.

FieldTypeRequiredDescription
dataobjectYesThe stored subscription row after the requested action is applied.
data.amountnumber or nullYesThe stored single-unit amount.
data.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.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data.createdAtstring (date-time)YesWhen the row was created.
data.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data.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.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.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data.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.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data.meteredItems[].namestringYes
data.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data.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.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.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data.planDescriptionstring or nullYesThe stored plan description when available.
data.planIdstringYesThe stored plan identifier.
data.planNamestringYesThe stored plan name.
data.quantitynumberYesThe subscribed quantity.
data.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data.startDatestring (date-time) or nullYesWhen the subscription started.
data.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data.totalnumber or nullYesThe stored total amount.
data.trialEndstring (date-time) or nullYesWhen the trial ends.
data.updatedAtstring (date-time)YesWhen the row was last updated.
data.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.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data.uuidstringYesInternal Flopay subscription UUID.

Errors

StatusDescription
400The request body failed validation.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
422The user has no user_gateway rows tied to an active gateway. The response body shape matches the failure DTO with an empty attempts[] array.
424Every eligible gateway rejected the subscription, or a Flo-owned start remains unresolved. The response includes attempts[]; an unresolved start uses subscription_start_pending as both the message and attempt reason, without declaring the subscription failed.

SubscriptionPlan_getAll

List Subscription Plans

List all active subscription plans available for the authenticated client and resolved product provider credentials.

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

Arguments

This tool takes no arguments.

Result

Returns 200 with a JSON body. The active subscription plans available for the authenticated client.

FieldTypeRequiredDescription
dataarray of objectYes
data[].codestringYes
data[].currenciesarray of objectYes
data[].currencies[].amountnumberYes
data[].currencies[].codestringYesThe ISO 4217 currency code.
data[].currencies[].setupFeenumberYes
data[].currencies[].symbolstring or nullYesThe display symbol for the currency when available.
data[].descriptionstringYes
data[].idstringYes
data[].intervalLengthnumberYes
data[].intervalUnitstringYesAllowed values: day, month, week.
data[].namestringYes
data[].totalBillingCyclesnumberYes
data[].trialLengthnumberYes
data[].trialUnitstringYesAllowed values: day, month, week.

Errors

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

SubscriptionPreview_getAllActiveV2

List Active Stored Subscriptions

Get all active subscriptions stored in the local Flopay subscription table for a user email. The email lookup is scoped to the authenticated client.

PolicyValue
OperationGET /v2/subscriptions/active
Classread-only
Risklow
Confirmationnot-required
Retrysafe
Rate-limit tierread
Rolesowner, admin, member
Scopesmcp:read

Arguments

ArgumentInTypeRequiredDescription
emailquerystringYesUser email used to find stored subscriptions for the authenticated client.

Result

Returns 200 with a JSON body. The active subscription rows stored in Flopay for the requested user email.

FieldTypeRequiredDescription
dataarray of objectYesSubscription rows stored for the requested user.
data[].amountnumber or nullYesThe stored single-unit amount.
data[].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[].cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data[].canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data[].checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data[].clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data[].createdAtstring (date-time)YesWhen the row was created.
data[].currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data[].endDatestring (date-time) or nullYesWhen the current subscription term ends.
data[].gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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[].gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data[].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[].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[].gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data[].metadataobject or nullYesArbitrary metadata captured with the subscription row.
data[].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[].meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data[].meteredItems[].namestringYes
data[].meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data[].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[].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[].pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data[].planDescriptionstring or nullYesThe stored plan description when available.
data[].planIdstringYesThe stored plan identifier.
data[].planNamestringYesThe stored plan name.
data[].quantitynumberYesThe subscribed quantity.
data[].rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data[].resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data[].startDatestring (date-time) or nullYesWhen the subscription started.
data[].statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data[].totalnumber or nullYesThe stored total amount.
data[].trialEndstring (date-time) or nullYesWhen the trial ends.
data[].updatedAtstring (date-time)YesWhen the row was last updated.
data[].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[].usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data[].usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data[].userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data[].userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data[].uuidstringYesInternal Flopay subscription UUID.

Errors

StatusDescription
400The email query parameter was missing or invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
424Throws in cases where Billing service cannot get data from billing provider.

SubscriptionRead_exportSubscriptions

Export subscriptions

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/subscriptions/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, endDate, rebillCount, startDate, state, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode. Default: createdAt DESC. Allowed values: createdAt, endDate, rebillCount, startDate, state, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: gateway. Unknown aliases return 400.
createdAtquerystring (date) or string (date-time)NoSubscription creation timestamp. Date-only range bounds use UTC calendar dates: [gte] starts at 00:00 UTC on the selected date and [lte] includes the complete selected date. Full timestamps compare as exact instants. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
emailquerystringNoEmail address of the user that owns the subscription. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
endDatequerystring (date-time)NoCurrent subscription term end timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
gatewayTypequerystringNoThe billing provider that recorded this subscription. 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.
ownershipquerystringNoWho drives the renewals: provider (the gateway holds the subscription object) or flo (Flopay holds the schedule and charges through gatewayType). 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: flo, provider.
planCodequerystringNoThe plan identifier recorded on the subscription (alias for planId). Equality filter. Pass without operator for exact match or pass any of the following operators: [in] [search]. [in] accepts comma-separated values; blank entries return 400. [search] is case-insensitive text contains matching.
planIdquerystringNoThe plan identifier recorded on the subscription. Equality filter. Pass without operator for exact match or pass any of the following operators: [in] [search]. [in] accepts comma-separated values; blank entries return 400. [search] is case-insensitive text contains matching.
planNamequerystringNoThe plan name recorded on the subscription. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
rebillCountquerynumberNoNumber of successful renewal charges recorded for the subscription. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
startDatequerystring (date-time)NoSubscription start timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
statequerystringNoSubscription 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: active, canceled, expired, failed, future, paused, past_due.
updatedAtquerystring (date-time)NoSubscription 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 subscription 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.

SubscriptionRead_findOne

Get Subscription

Returns a single stored subscription for the authenticated client.

PolicyValue
OperationGET /v1/subscriptions/{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. Unknown aliases return 400.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
amountnumber or nullYesThe stored single-unit amount.
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.
cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
createdAtstring (date-time)YesWhen the row was created.
currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
endDatestring (date-time) or nullYesWhen the current subscription term ends.
gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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.
gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
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.
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.
gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
metadataobject or nullYesArbitrary metadata captured with the subscription row.
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.
meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
meteredItems[].namestringYes
meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
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.
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.
pausedAtstring (date-time) or nullYesWhen the subscription was paused.
planDescriptionstring or nullYesThe stored plan description when available.
planIdstringYesThe stored plan identifier.
planNamestringYesThe stored plan name.
quantitynumberYesThe subscribed quantity.
rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
resumeAtstring (date-time) or nullYesWhen the subscription will resume.
startDatestring (date-time) or nullYesWhen the subscription started.
statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
totalnumber or nullYesThe stored total amount.
trialEndstring (date-time) or nullYesWhen the trial ends.
updatedAtstring (date-time)YesWhen the row was last updated.
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.
usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
userLastNamestring or nullNoCustomer last name when the user relation is loaded.
userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
uuidstringYesInternal Flopay subscription UUID.

Errors

StatusDescription
400The supplied path, query, or filter values 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 subscription with the requested id exists for this client.

SubscriptionRead_list

List Subscriptions

Returns paginated subscriptions for the authenticated client. Supports page, limit, sort[asc|desc], optional email, and whitelisted filters for uuid, state, gatewayType, planCode/planId, planName, rebillCount, startDate, endDate, createdAt, and updatedAt.

PolicyValue
OperationGET /v1/subscriptions
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, endDate, rebillCount, startDate, state, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode. Default: createdAt DESC. Allowed values: createdAt, endDate, rebillCount, startDate, state, updatedAt, gateway.id, gateway.code, gateway.name, gateway.providerType, gateway.environment, gateway.currency, gateway.sessionMode.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: gateway. Unknown aliases return 400.
createdAtquerystring (date) or string (date-time)NoSubscription creation timestamp. Date-only range bounds use UTC calendar dates: [gte] starts at 00:00 UTC on the selected date and [lte] includes the complete selected date. Full timestamps compare as exact instants. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
emailquerystringNoEmail address of the user that owns the subscription. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
endDatequerystring (date-time)NoCurrent subscription term end timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
gatewayTypequerystringNoThe billing provider that recorded this subscription. 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.
ownershipquerystringNoWho drives the renewals: provider (the gateway holds the subscription object) or flo (Flopay holds the schedule and charges through gatewayType). 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: flo, provider.
planCodequerystringNoThe plan identifier recorded on the subscription (alias for planId). Equality filter. Pass without operator for exact match or pass any of the following operators: [in] [search]. [in] accepts comma-separated values; blank entries return 400. [search] is case-insensitive text contains matching.
planIdquerystringNoThe plan identifier recorded on the subscription. Equality filter. Pass without operator for exact match or pass any of the following operators: [in] [search]. [in] accepts comma-separated values; blank entries return 400. [search] is case-insensitive text contains matching.
planNamequerystringNoThe plan name recorded on the subscription. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.
rebillCountquerynumberNoNumber of successful renewal charges recorded for the subscription. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
startDatequerystring (date-time)NoSubscription start timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
statequerystringNoSubscription 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: active, canceled, expired, failed, future, paused, past_due.
updatedAtquerystring (date-time)NoSubscription 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 subscription 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[].amountnumber or nullYesThe stored single-unit amount.
data[].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[].cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data[].canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data[].checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data[].clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data[].createdAtstring (date-time)YesWhen the row was created.
data[].currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data[].endDatestring (date-time) or nullYesWhen the current subscription term ends.
data[].gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
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[].gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data[].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[].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[].gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data[].metadataobject or nullYesArbitrary metadata captured with the subscription row.
data[].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[].meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data[].meteredItems[].namestringYes
data[].meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data[].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[].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[].pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data[].planDescriptionstring or nullYesThe stored plan description when available.
data[].planIdstringYesThe stored plan identifier.
data[].planNamestringYesThe stored plan name.
data[].quantitynumberYesThe subscribed quantity.
data[].rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data[].resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data[].startDatestring (date-time) or nullYesWhen the subscription started.
data[].statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data[].totalnumber or nullYesThe stored total amount.
data[].trialEndstring (date-time) or nullYesWhen the trial ends.
data[].updatedAtstring (date-time)YesWhen the row was last updated.
data[].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[].usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data[].usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data[].userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data[].userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data[].uuidstringYesInternal Flopay subscription UUID.
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

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

SubscriptionRecovery_list

List Subscription Recovery Campaigns

Returns the authenticated client subscription recovery campaigns most recent first, including every persisted recovery round. The response uses the shared paginated list contract.

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

Arguments

ArgumentInTypeRequiredDescription
idpathstringYes
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: billingCycleAt, createdAt, nextRetryAt, status. Default: billingCycleAt DESC. Allowed values: billingCycleAt, createdAt, nextRetryAt, status.
relationquerystringNoThis endpoint does not support relation aliases. Supplying relation returns 400.
billingCycleAtquerystring (date-time)NoOriginal billing-cycle timestamp for the recovery campaign. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
createdAtquerystring (date-time)NoRecovery campaign creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
nextRetryAtquerystring (date-time)NoNext persisted recovery retry timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
policyVersionquerystringNoFrozen policy version used by the campaign. 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.
statusquerystringNoRecovery campaign lifecycle status. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: active, operational_retry, recovered, exhausted, non_retryable, manual_review, stopped.
uuidquerystringNoRecovery campaign 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[].billingCycleAtstring (date-time)YesOriginal failed billing-cycle timestamp.
data[].createdAtstring (date-time)Yes
data[].exhaustedAtstring (date-time) or nullYes
data[].intervalstringYesFrozen subscription billing cadence. Allowed values: day, week, month, year.
data[].intervalCountnumberYesFrozen number of cadence units per billing cycle.
data[].manualReviewAtstring (date-time) or nullYes
data[].nextRetryAtstring (date-time) or nullYesNext persisted recovery retry, when one remains.
data[].originalAmountnumberYesOriginal invoice amount in major currency units.
data[].originalCurrencystringYesOriginal ISO-4217 invoice currency.
data[].policyVersionstringYesFrozen policy version used for this campaign.
data[].recoveredAtstring (date-time) or nullYes
data[].roundsarray of objectYes
data[].rounds[].attemptCountnumberYesNumber of provider attempts recorded within this round.
data[].rounds[].completedAtstring (date-time) or nullYes
data[].rounds[].normalizedDeclineReasonstring or nullYesAllowed values: INSUFFICIENT_FUNDS, DO_NOT_HONOUR, TOO_MANY_ATTEMPTS, PARTIAL_APPROVAL, PAYMENT_GATEWAY_ERROR, TECHNICAL_ERROR, RETRYABLE_DECLINE, UNSUPPORTED_CARD_PURCHASE, USER_ERROR, CVV_INVALID, AVS_FAIL, POSTCODE_INVALID, 3DS_FAIL, EXCEEDS_CARD_LIMIT, CLIENT_ERROR, UNKNOWN_DECLINE_REASON.
data[].rounds[].roundNumbernumberYesZero-based original attempt or positive scheduled recovery-round number.
data[].rounds[].scheduledAtstring (date-time)YesPersisted timestamp committed for this round.
data[].rounds[].startedAtstring (date-time) or nullYes
data[].rounds[].statusstringYesAllowed values: scheduled, processing, retryable, non_retryable, operationally_uncertain, succeeded, canceled.
data[].statusstringYesAllowed values: active, operational_retry, recovered, exhausted, non_retryable, manual_review, stopped.
data[].stoppedAtstring (date-time) or nullYes
data[].uuidstring (uuid)Yes
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

StatusDescription
400The subscription id or list query parameters were invalid.
401Client Basic authentication or OAuth2 bearer authentication with the required scope is required.
404No subscription with the requested id exists for this client.

SubscriptionStats_get

Subscription rebill stats

Returns successful rebill count, gross revenue, period-end average rebill length, terminal churn, and gross-rebill lifetime value for one half-open period.

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

Arguments

ArgumentInTypeRequiredDescription
toquerystringYesExclusive reporting-period end as an offset ISO-8601 instant.
fromquerystringYesInclusive reporting-period start as an offset ISO-8601 instant.
ownershipquerystringNoLimit the complete snapshot to canonical Flo-managed renewals. Omit to preserve the provider-neutral historical population. Allowed values: flo.

Result

Returns 200 with a JSON body. One coherent subscription rebill snapshot.

FieldTypeRequiredDescription
averageLifetimeValueobject or nullYes
averageLifetimeValue.amountnumberNoMinimum: 0.
averageLifetimeValue.currencystringNoMinimum length: 3. Maximum length: 3.
averageRebillLengthnumber or nullYesMinimum: 0.
contextobjectYes
context.appliedFiltersarray of objectYesAdditional filters applied after the authoritative tenant boundary. Empty for merchant calls.
context.appliedFilters[].fieldstringYes
context.appliedFilters[].operatorstringYesAllowed values: eq.
context.appliedFilters[].valuestringYes
context.authoritativeLinksarray of objectYesRelative authenticated Flo API links for verifying authoritative source records.
context.authoritativeLinks[].hrefstringYes
context.authoritativeLinks[].relstringYes
context.consistencyobjectYesThe consistency model and its operator-facing freshness caveat.
context.consistency.modelstringYesAllowed values: eventual.
context.consistency.notestringYes
context.currencyobjectYesReporting-currency basis and immutable daily FX snapshots for home/platform totals. Source amounts remain separately segmented.
context.currency.fxobjectYes
context.currency.fx.appliedbooleanYesWhether this aggregate contains monetary values that were FX-valued.
context.currency.fx.effectiveDateTimezonestringYesAllowed values: UTC.
context.currency.fx.methodstringYesAllowed values: daily-exact-or-prior.
context.currency.fx.provisionalbooleanYes
context.currency.fx.snapshotsarray of objectYes
context.currency.fx.snapshots[].provisionalbooleanYes
context.currency.fx.snapshots[].valuationDatestring (date)Yes
context.currency.fx.snapshots[].versionintegerYesMinimum: 1.
context.currency.homeCurrencystring or nullYesMinimum length: 3. Maximum length: 3.
context.currency.reportingCurrencystringYesMinimum length: 3. Maximum length: 3.
context.currency.reportingCurrencyBasisstringYesAllowed values: client-home, platform-usd.
context.dataAsOfstring (date-time)YesThe persisted-data observation boundary for this response.
context.generatedAtstring (date-time)YesWhen the API generated this response.
context.statusSemanticsarray of objectYesCanonical definitions and time bases for statuses and outcomes used in the response.
context.statusSemantics[].appliesToarray of stringYes
context.statusSemantics[].codestringYes
context.statusSemantics[].descriptionstringYes
context.statusSemantics[].timeBasisstringYesAllowed values: created-at, financial-effective-at, billing-cycle-at, attempt-outcome-at.
context.tenantScopeobjectYesThe explicit client-selection mode used by the authenticated backend query.
context.tenantScope.clientIdstring or nullYes
context.tenantScope.kindstringYesAllowed values: authenticated-client, selected-client, all-clients.
context.timeRangeobjectYesThe explicit half-open UTC reporting window applied to the aggregate.
context.timeRange.boundsstringYesAllowed values: [from,to).
context.timeRange.fromstring (date-time)Yes
context.timeRange.timezonestringYesAllowed values: UTC.
context.timeRange.tostring (date-time)Yes
dunningRecoveryobjectYesGross successful rebills recovered by Flo-owned dunning retry rounds. This is an additive subset of rebillCount and rebillRevenue; ordinary first-attempt rebills and provider-managed retries are excluded.
dunningRecovery.recoveredRebillCountintegerYesMinimum: 0.
dunningRecovery.recoveredRebillRevenueobjectYes
dunningRecovery.recoveredRebillRevenue.amountnumberYesMinimum: 0.
dunningRecovery.recoveredRebillRevenue.currencystringYesMinimum length: 3. Maximum length: 3.
dunningTimingPerformanceobjectYesClient-scoped comparison of default and evidence-optimized dunning campaigns whose original billing-cycle due instant falls in the requested half-open period.
dunningTimingPerformance.baselineobjectYes
dunningTimingPerformance.baseline.attemptsintegerYesMinimum: 0.
dunningTimingPerformance.baseline.averageTimeToRecoveryHoursnumber or nullYesMinimum: 0.
dunningTimingPerformance.baseline.campaignCountintegerYesMinimum: 0.
dunningTimingPerformance.baseline.isProvisionalbooleanYesWhether this cohort revenue used provisional FX. This does not change the existing top-level isProvisional semantics.
dunningTimingPerformance.baseline.recoveredRevenueobjectYes
dunningTimingPerformance.baseline.recoveredRevenue.amountnumberYesMinimum: 0.
dunningTimingPerformance.baseline.recoveredRevenue.currencystringYesMinimum length: 3. Maximum length: 3.
dunningTimingPerformance.baseline.successfulRecoveriesintegerYesMinimum: 0.
dunningTimingPerformance.cohortBasisstringYesAllowed values: billing_cycle_at.
dunningTimingPerformance.optimizedobjectYes
dunningTimingPerformance.optimized.attemptsintegerYesMinimum: 0.
dunningTimingPerformance.optimized.averageTimeToRecoveryHoursnumber or nullYesMinimum: 0.
dunningTimingPerformance.optimized.campaignCountintegerYesMinimum: 0.
dunningTimingPerformance.optimized.isProvisionalbooleanYesWhether this cohort revenue used provisional FX. This does not change the existing top-level isProvisional semantics.
dunningTimingPerformance.optimized.recoveredRevenueobjectYes
dunningTimingPerformance.optimized.recoveredRevenue.amountnumberYesMinimum: 0.
dunningTimingPerformance.optimized.recoveredRevenue.currencystringYesMinimum length: 3. Maximum length: 3.
dunningTimingPerformance.optimized.successfulRecoveriesintegerYesMinimum: 0.
fromstring (date-time)Yes
isProvisionalbooleanYes
rebillChargebacksobjectYesDeprecated compatibility alias for rebillDisputes. Same values as rebillDisputes. Removal is tracked separately.
rebillChargebacks.amountnumberNoFX-valued charged-back amount in the same reporting currency as rebillRevenue, each chargeback money movement valued at its own effective date.
rebillChargebacks.countintegerNoChargeback events reversing rebills in this period. Minimum: 0.
rebillChargebacks.percentageOfRebillRevenuenumber or nullNoCharged-back amount divided by gross rebill revenue from exact unrounded totals, HALF_UP to two places; null when gross rebill revenue is zero and not clamped above 100%.
rebillChargebacks.percentageOfRebillsnumber or nullNoChargeback count divided by the gross rebill count, HALF_UP to two places; null when the gross rebill count is zero and not clamped above 100%.
rebillChurnCoverageobject or nullYes
rebillChurnCoverage.coveredintegerNoMinimum: 0.
rebillChurnCoverage.representedintegerNoMinimum: 0.
rebillChurnRatenumber or nullYesMinimum: 0. Maximum: 100.
rebillChurnUnavailableReasonstring or nullYesAllowed values: insufficient_lifecycle_coverage.
rebillCountnumberYesMinimum: 0.
rebillDisputesobjectYesDisputes (actual Stripe and PayPal chargebacks) attributed to subscription renewal charges by their own money-movement effective date (issued-period / occurrence basis). A dispute against the first charge of a subscription is a checkout sale and is reported on the checkout figures, not here. Each dispute money movement is counted once. Network warnings are Pre-Dispute Alerts and are not included.
rebillDisputes.amountnumberNoFX-valued disputed amount in the same reporting currency as rebillRevenue, each Dispute money movement valued at its own effective date.
rebillDisputes.countintegerNoDispute events reversing rebills in this period. Minimum: 0.
rebillDisputes.percentageOfRebillRevenuenumber or nullNoDisputed amount divided by gross rebill revenue from exact unrounded totals, HALF_UP to two places; null when gross rebill revenue is zero and not clamped above 100%.
rebillDisputes.percentageOfRebillsnumber or nullNoDispute count divided by the gross rebill count, HALF_UP to two places; null when the gross rebill count is zero and not clamped above 100%.
rebillRefundsobjectYesRefunds attributed to subscription renewal charges by their own financial effective date (issued-period / occurrence basis). A refund against the first charge of a subscription (including a trial conversion) is a checkout sale and is reported on the checkout figures, not here. Each refund is counted once.
rebillRefunds.amountnumberNoFX-valued refunded amount in the same reporting currency as rebillRevenue, each refund valued at its own financial effective date.
rebillRefunds.countintegerNoRefund events reversing rebills in this period. Minimum: 0.
rebillRefunds.percentageOfRebillRevenuenumber or nullNoRefunded amount divided by gross rebill revenue from exact unrounded totals, HALF_UP to two places; null when gross rebill revenue is zero and not clamped above 100%.
rebillRefunds.percentageOfRebillsnumber or nullNoRefund count divided by the gross rebill count, HALF_UP to two places; null when the gross rebill count is zero and not clamped above 100%.
rebillRevenueobjectYes
rebillRevenue.amountnumberNoMinimum: 0.
rebillRevenue.currencystringNoMinimum length: 3. Maximum length: 3.
renewalOutcomesobjectYesAuthoritative current outcomes for distinct reportable renewal billing cycles whose immutable scheduled due instant is in the requested half-open period. Opening charges, trial conversions, and retries are excluded as separate cycles.
renewalOutcomes.overdueCycleCountintegerYesMinimum: 0.
renewalOutcomes.overduePercentagenumber or nullYesOverdue cycles divided by all reportable renewal cycles, as a percentage rounded HALF_UP to two decimal places; null when there are no reportable cycles. Minimum: 0. Maximum: 100.
renewalOutcomes.rebilledPercentagenumber or nullYesSuccessful cycles divided by successful plus terminally failed cycles, as a percentage rounded HALF_UP to two decimal places; null when there are no settled cycles. Minimum: 0. Maximum: 100.
renewalOutcomes.successfulCycleCountintegerYesMinimum: 0.
renewalOutcomes.terminallyFailedCycleCountintegerYesMinimum: 0.
renewalOutcomes.totalCycleCountintegerYesMinimum: 0.
sourceCurrencySegmentsarray of objectYesGross source amounts grouped by uppercase ISO currency. Amounts are summed exactly then rounded once to that source currency minor unit; no counts are repeated here.
sourceCurrencySegments[].currencystringYesMinimum length: 3. Maximum length: 3.
sourceCurrencySegments[].disputeAmountnumberYes
sourceCurrencySegments[].dunningTimingRecoveredAmountsobjectNo
sourceCurrencySegments[].dunningTimingRecoveredAmounts.baselinenumberYes
sourceCurrencySegments[].dunningTimingRecoveredAmounts.optimizednumberYes
sourceCurrencySegments[].rebillAmountnumberYes
sourceCurrencySegments[].recoveredRebillAmountnumberYes
sourceCurrencySegments[].refundAmountnumberYes
tostring (date-time)Yes

Errors

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

On this page