Documentation
MCPTool reference

Webhooks tools

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

Webhooks tools

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

ClientWebhook_create

Create Webhook

Creates a webhook endpoint and signing secret. filter is optional: omission, null, {}, and empty selector arrays canonicalize to null (event-type-only delivery). Selector values use any-match within each set; when both sets are populated, one associated product must satisfy both its selected product id and at least one exact, case-sensitive tag. Events without product context do not match a configured filter.

PolicyValue
OperationPOST /v1/webhooks
Classmutating
Riskhigh
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tierrestricted
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
eventsbodyarray of stringYesThe Flo webhook events that should be delivered to this endpoint. Allowed values: dispute.created, dispute.updated, dispute.won, dispute.lost, pre_dispute_alert.created, pre_dispute_alert.updated, subscription.created, subscription.updated, subscription.cancelled, subscription.renewed, subscription.reactivated, subscription.paused, subscription.resumed, subscription.expired, item.purchased, item.refunded, item.charged_back, item.reversed, invoice.created, invoice.deleted, invoice.updated, invoice.payment_failed, invoice.paid, invoice.overdue, payment.authorized, payment.capture_failed, payment.authorization_voided, payment.authorization_expired, customer.merged, payment_method.added, payment_method.removed, payment_method.default_changed. Minimum items: 1.
filterbodyobject or nullNoOptional product eligibility filter. Values within each selector use any-match; populated productIds and productTags combine with AND on the same associated product. Omit, null, {}, or empty arrays for event-type-only delivery. Events lacking product context do not match. PATCH omission preserves the current filter; null/empty clears it.
filter.productIdsbodyarray of string (uuid)NoUp to 50 active product UUIDs owned by the authenticated client. Maximum items: 50.
filter.productTagsbodyarray of stringNoUp to 50 exact, case-sensitive tags present on active products owned by the client. Maximum items: 50.
urlbodystring (uri)YesThe client URL that should receive webhook deliveries.

Result

Returns 201 with a JSON body.

FieldTypeRequiredDescription
clientIdstringYesOwning client UUID.
createdAtstring (date-time)Yes
disabledAtstring (date-time) or nullYes
eventsarray of stringYes
failedSendAtstring (date-time) or nullYes
filterobject or nullYesOptional product filter. At least one associated product must match every populated selector set. Null delivers every subscribed event.
filter.productIdsarray of string (uuid)NoUp to 50 active product UUIDs owned by the authenticated client. Maximum items: 50.
filter.productTagsarray of stringNoUp to 50 exact, case-sensitive tags present on active products owned by the client. Maximum items: 50.
idstringYes
signingSecretstringYesSecret used to sign outbound webhook deliveries with the Flo-Signature header.
updatedAtstring (date-time)Yes
urlstringYes

Errors

StatusDescription
400The URL, event subscriptions, or filter shape is malformed; selectors are duplicated or exceed their limits; or a selected product id/tag is unavailable in the authenticated client’s active catalog. Unknown, inactive, deleted, stale, and foreign selectors share the same tenant-safe unavailable-selector response.
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.

ClientWebhook_delete

Delete Webhook

Deletes a client webhook endpoint and its delivery log entries.

PolicyValue
OperationDELETE /v1/webhooks/{id}
Classmutating
Riskcritical
Confirmationrequired
Retrysame-idempotency-key
Rate-limit tierrestricted
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstringYes

Result

Returns 204 with no body.

Errors

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

ClientWebhook_list

List Webhooks

Lists webhook endpoints configured for the authenticated client. Supports page, limit, sort[asc|desc], no relation aliases, and whitelisted filters for id, url, createdAt, updatedAt, failedSendAt, and disabledAt. Invalid list parameters return 400.

PolicyValue
OperationGET /v1/webhooks
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, disabledAt, failedSendAt, updatedAt, url. Default: createdAt DESC. Allowed values: createdAt, disabledAt, failedSendAt, updatedAt, url.
relationquerystringNoThis endpoint does not support relation aliases. Supplying relation returns 400.
createdAtquerystring (date-time)NoWebhook endpoint creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
disabledAtquerystring (date-time)NoWebhook endpoint disabled timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
failedSendAtquerystring (date-time)NoWebhook endpoint last failed delivery timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
idquerystringNoWebhook endpoint id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
updatedAtquerystring (date-time)NoWebhook endpoint update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
urlquerystringNoWebhook endpoint URL. Equality filter. Pass without operator for exact match or pass any of the following operators: [search]. [search] is case-insensitive text contains matching.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
dataarray of objectYes
data[].clientIdstringYesOwning client UUID.
data[].createdAtstring (date-time)Yes
data[].disabledAtstring (date-time) or nullYes
data[].eventsarray of stringYes
data[].failedSendAtstring (date-time) or nullYes
data[].filterobject or nullYesOptional product filter. At least one associated product must match every populated selector set. Null delivers every subscribed event.
data[].filter.productIdsarray of string (uuid)NoUp to 50 active product UUIDs owned by the authenticated client. Maximum items: 50.
data[].filter.productTagsarray of stringNoUp to 50 exact, case-sensitive tags present on active products owned by the client. Maximum items: 50.
data[].idstringYes
data[].signingSecretstringYesSecret used to sign outbound webhook deliveries with the Flo-Signature header.
data[].updatedAtstring (date-time)Yes
data[].urlstringYes
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

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

ClientWebhook_update

Update Webhook

Updates the webhook URL, subscriptions, and/or product filter. Omitting filter preserves it; null, {}, or empty selector arrays clear it; a non-empty object replaces both selector sets. Any update also clears failed/disabled markers so the endpoint can receive new eligible deliveries.

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

Arguments

ArgumentInTypeRequiredDescription
idpathstringYes
eventsbodyarray of stringNoThe Flo webhook events that should be delivered to this endpoint. Allowed values: dispute.created, dispute.updated, dispute.won, dispute.lost, pre_dispute_alert.created, pre_dispute_alert.updated, subscription.created, subscription.updated, subscription.cancelled, subscription.renewed, subscription.reactivated, subscription.paused, subscription.resumed, subscription.expired, item.purchased, item.refunded, item.charged_back, item.reversed, invoice.created, invoice.deleted, invoice.updated, invoice.payment_failed, invoice.paid, invoice.overdue, payment.authorized, payment.capture_failed, payment.authorization_voided, payment.authorization_expired, customer.merged, payment_method.added, payment_method.removed, payment_method.default_changed. Minimum items: 1.
filterbodyobject or nullNoOptional product eligibility filter. Values within each selector use any-match; populated productIds and productTags combine with AND on the same associated product. Omit, null, {}, or empty arrays for event-type-only delivery. Events lacking product context do not match. PATCH omission preserves the current filter; null/empty clears it.
filter.productIdsbodyarray of string (uuid)NoUp to 50 active product UUIDs owned by the authenticated client. Maximum items: 50.
filter.productTagsbodyarray of stringNoUp to 50 exact, case-sensitive tags present on active products owned by the client. Maximum items: 50.
urlbodystring (uri)NoThe client URL that should receive webhook deliveries.

Result

Returns 200 with a JSON body.

FieldTypeRequiredDescription
clientIdstringYesOwning client UUID.
createdAtstring (date-time)Yes
disabledAtstring (date-time) or nullYes
eventsarray of stringYes
failedSendAtstring (date-time) or nullYes
filterobject or nullYesOptional product filter. At least one associated product must match every populated selector set. Null delivers every subscribed event.
filter.productIdsarray of string (uuid)NoUp to 50 active product UUIDs owned by the authenticated client. Maximum items: 50.
filter.productTagsarray of stringNoUp to 50 exact, case-sensitive tags present on active products owned by the client. Maximum items: 50.
idstringYes
signingSecretstringYesSecret used to sign outbound webhook deliveries with the Flo-Signature header.
updatedAtstring (date-time)Yes
urlstringYes

Errors

StatusDescription
400The request or filter shape is malformed; selectors are duplicated or exceed their limits; or a selected product id/tag is unavailable in the authenticated client’s active catalog. Unknown, inactive, deleted, stale, and foreign selectors share the same tenant-safe unavailable-selector response.
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.

ClientWebhookEvent_exportEvents

Export webhook-events

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/webhooks/events/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, eventType, retryCount, sentAt, skipReason, status, updatedAt, invoice.id, invoice.gatewayInvoiceId, invoice.gatewayType, invoice.state, invoice.billingReason, invoice.transactionType, invoice.currency, invoice.total, invoice.userUuid, invoice.transactionUuid, invoice.paidAt, invoice.createdAt, invoice.updatedAt, original.id, original.eventType, original.status, original.retryCount, original.gatewayEventId, original.responseCode, original.sentAt, original.originalUuid, original.userUuid, original.transactionUuid, original.subscriptionUuid, original.invoiceUuid, original.createdAt, original.updatedAt, subscription.uuid, subscription.gatewayType, subscription.gatewaySubscriptionId, subscription.planId, subscription.planName, subscription.quantity, subscription.rebillCount, subscription.currency, subscription.amount, subscription.total, subscription.state, subscription.startDate, subscription.endDate, subscription.canceledAt, subscription.createdAt, subscription.updatedAt, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId, user.id, user.email, user.firstName, user.lastName, user.createdAt, user.updatedAt, webhook.id, webhook.clientId, webhook.url, webhook.failedSendAt, webhook.disabledAt, webhook.createdAt, webhook.updatedAt. Default: createdAt DESC. Allowed values: createdAt, eventType, retryCount, sentAt, skipReason, status, updatedAt, invoice.id, invoice.gatewayInvoiceId, invoice.gatewayType, invoice.state, invoice.billingReason, invoice.transactionType, invoice.currency, invoice.total, invoice.userUuid, invoice.transactionUuid, invoice.paidAt, invoice.createdAt, invoice.updatedAt, original.id, original.eventType, original.status, original.retryCount, original.gatewayEventId, original.responseCode, original.sentAt, original.originalUuid, original.userUuid, original.transactionUuid, original.subscriptionUuid, original.invoiceUuid, original.createdAt, original.updatedAt, subscription.uuid, subscription.gatewayType, subscription.gatewaySubscriptionId, subscription.planId, subscription.planName, subscription.quantity, subscription.rebillCount, subscription.currency, subscription.amount, subscription.total, subscription.state, subscription.startDate, subscription.endDate, subscription.canceledAt, subscription.createdAt, subscription.updatedAt, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId, user.id, user.email, user.firstName, user.lastName, user.createdAt, user.updatedAt, webhook.id, webhook.clientId, webhook.url, webhook.failedSendAt, webhook.disabledAt, webhook.createdAt, webhook.updatedAt.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: invoice, original, subscription, transaction, user, webhook. Unknown aliases return 400.
createdAtquerystring (date-time)NoWebhook delivery creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
eventTypequerystringNoFlo webhook event type. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: dispute.created, dispute.updated, dispute.won, dispute.lost, pre_dispute_alert.created, pre_dispute_alert.updated, subscription.created, subscription.updated, subscription.cancelled, subscription.renewed, subscription.reactivated, subscription.paused, subscription.resumed, subscription.expired, item.purchased, item.refunded, item.charged_back, item.reversed, invoice.created, invoice.deleted, invoice.updated, invoice.payment_failed, invoice.paid, invoice.overdue, payment.authorized, payment.capture_failed, payment.authorization_voided, payment.authorization_expired, customer.merged, payment_method.added, payment_method.removed, payment_method.default_changed.
disputeUuidquerystringNoFlo dispute this event relates to. 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.
gatewayEventIdquerystringNoProvider event id. 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.
idquerystringNoWebhook delivery id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
invoiceUuidquerystringNoFlo invoice this event relates to. 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.
originalUuidquerystringNoOriginal webhook delivery id for resend attempts. 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.
preDisputeAlertUuidquerystringNoFlo Pre-Dispute Alert this event relates to. 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.
responseCodequerystringNoLast client response code. 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.
retryCountquerynumberNoDelivery retry count. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
sentAtquerystring (date-time)NoWebhook delivery sent timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
skipReasonquerystringNoIntentional webhook delivery exclusion reason. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: endpoint_disabled, event_not_subscribed, endpoint_created_after_event, filter_context_missing, filter_not_matched.
statusquerystringNoWebhook delivery status. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: pending, success, failed, retrying, skipped.
subscriptionUuidquerystringNoFlo subscription this event relates to. 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.
transactionUuidquerystringNoFlo transaction this event relates to. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
updatedAtquerystring (date-time)NoWebhook delivery update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
userUuidquerystringNoFlo user this event relates to. 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.

ClientWebhookEvent_findOne

Get Webhook Event

Returns a single webhook delivery attempt for the authenticated client. 404 when the event id does not belong to one of the client’s webhooks.

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

Arguments

ArgumentInTypeRequiredDescription
idpathstringYes

Result

Returns 200 with a JSON body.

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

Errors

StatusDescription
400The supplied path or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
404No webhook event with the requested id exists for this client.

ClientWebhookEvent_list

List Webhook Events

Lists every endpoint delivery decision owned by the authenticated client. Filter exclusions are terminal skipped rows with skipReason set to filter_not_matched or filter_context_missing, zero attempts, and no delivery failure. Supports page, limit, sort[asc|desc], and whitelisted filters including skipReason.

PolicyValue
OperationGET /v1/webhooks/events
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, eventType, retryCount, sentAt, skipReason, status, updatedAt, invoice.id, invoice.gatewayInvoiceId, invoice.gatewayType, invoice.state, invoice.billingReason, invoice.transactionType, invoice.currency, invoice.total, invoice.userUuid, invoice.transactionUuid, invoice.paidAt, invoice.createdAt, invoice.updatedAt, original.id, original.eventType, original.status, original.retryCount, original.gatewayEventId, original.responseCode, original.sentAt, original.originalUuid, original.userUuid, original.transactionUuid, original.subscriptionUuid, original.invoiceUuid, original.createdAt, original.updatedAt, subscription.uuid, subscription.gatewayType, subscription.gatewaySubscriptionId, subscription.planId, subscription.planName, subscription.quantity, subscription.rebillCount, subscription.currency, subscription.amount, subscription.total, subscription.state, subscription.startDate, subscription.endDate, subscription.canceledAt, subscription.createdAt, subscription.updatedAt, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId, user.id, user.email, user.firstName, user.lastName, user.createdAt, user.updatedAt, webhook.id, webhook.clientId, webhook.url, webhook.failedSendAt, webhook.disabledAt, webhook.createdAt, webhook.updatedAt. Default: createdAt DESC. Allowed values: createdAt, eventType, retryCount, sentAt, skipReason, status, updatedAt, invoice.id, invoice.gatewayInvoiceId, invoice.gatewayType, invoice.state, invoice.billingReason, invoice.transactionType, invoice.currency, invoice.total, invoice.userUuid, invoice.transactionUuid, invoice.paidAt, invoice.createdAt, invoice.updatedAt, original.id, original.eventType, original.status, original.retryCount, original.gatewayEventId, original.responseCode, original.sentAt, original.originalUuid, original.userUuid, original.transactionUuid, original.subscriptionUuid, original.invoiceUuid, original.createdAt, original.updatedAt, subscription.uuid, subscription.gatewayType, subscription.gatewaySubscriptionId, subscription.planId, subscription.planName, subscription.quantity, subscription.rebillCount, subscription.currency, subscription.amount, subscription.total, subscription.state, subscription.startDate, subscription.endDate, subscription.canceledAt, subscription.createdAt, subscription.updatedAt, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId, user.id, user.email, user.firstName, user.lastName, user.createdAt, user.updatedAt, webhook.id, webhook.clientId, webhook.url, webhook.failedSendAt, webhook.disabledAt, webhook.createdAt, webhook.updatedAt.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: invoice, original, subscription, transaction, user, webhook. Unknown aliases return 400.
createdAtquerystring (date-time)NoWebhook delivery creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
eventTypequerystringNoFlo webhook event type. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: dispute.created, dispute.updated, dispute.won, dispute.lost, pre_dispute_alert.created, pre_dispute_alert.updated, subscription.created, subscription.updated, subscription.cancelled, subscription.renewed, subscription.reactivated, subscription.paused, subscription.resumed, subscription.expired, item.purchased, item.refunded, item.charged_back, item.reversed, invoice.created, invoice.deleted, invoice.updated, invoice.payment_failed, invoice.paid, invoice.overdue, payment.authorized, payment.capture_failed, payment.authorization_voided, payment.authorization_expired, customer.merged, payment_method.added, payment_method.removed, payment_method.default_changed.
disputeUuidquerystringNoFlo dispute this event relates to. 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.
gatewayEventIdquerystringNoProvider event id. 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.
idquerystringNoWebhook delivery id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
invoiceUuidquerystringNoFlo invoice this event relates to. 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.
originalUuidquerystringNoOriginal webhook delivery id for resend attempts. 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.
preDisputeAlertUuidquerystringNoFlo Pre-Dispute Alert this event relates to. 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.
responseCodequerystringNoLast client response code. 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.
retryCountquerynumberNoDelivery retry count. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
sentAtquerystring (date-time)NoWebhook delivery sent timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
skipReasonquerystringNoIntentional webhook delivery exclusion reason. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: endpoint_disabled, event_not_subscribed, endpoint_created_after_event, filter_context_missing, filter_not_matched.
statusquerystringNoWebhook delivery status. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: pending, success, failed, retrying, skipped.
subscriptionUuidquerystringNoFlo subscription this event relates to. 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.
transactionUuidquerystringNoFlo transaction this event relates to. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
updatedAtquerystring (date-time)NoWebhook delivery update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
userUuidquerystringNoFlo user this event relates to. 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[].createdAtstring (date-time)Yes
data[].disputeUuidstring or nullNoFlo dispute this event relates to, when resolvable.
data[].eventTypestringYes
data[].gatewayEventIdstring or nullNo
data[].idstringYes
data[].invoiceobject or nullNoRelated invoice. Present only when requested with relation=invoice.
data[].invoice.billingReasonstring or nullNoProvider-reported billing reason.
data[].invoice.buyerBusinessDetailsobject or nullNoThe buyer's business details at this merchant as they stood when Flo created the invoice: customerType (business or individual), legalName, address (street1, street2, city, region, postalCode, ISO 3166-1 alpha-2 country) and taxId (type, normalised value). A later change to the buyer's details reaches only the next invoice. null when the buyer had none, and for invoices issued by a payment provider.
data[].invoice.createdAtstring (date-time)YesWhen the invoice was created.
data[].invoice.currencystring or nullNo
data[].invoice.gatewayobject or nullNoOwning gateway (non-secret fields). Present when the gateway relation is loaded.
data[].invoice.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].invoice.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].invoice.gateway.environmentstringYesAllowed values: stage, production.
data[].invoice.gateway.idstringYesGateway UUID.
data[].invoice.gateway.namestringYesHuman-readable name of the gateway account.
data[].invoice.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].invoice.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].invoice.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[].invoice.gatewayInvoiceIdstring or nullNoThe invoice identifier in the billing provider (e.g. Stripe in_…). Null only briefly while a one-time purchase invoice is being minted at the gateway.
data[].invoice.gatewayTypestringYesThe billing provider that produced this invoice. Allowed values: stripe, paypal, worldpay_corporate_gateway.
data[].invoice.hostedInvoiceUrlstring or nullNoThe invoice's hosted page: no sign-in, behind an unguessable token. For invoices FloPay issues itself it shows both parties' identity, each line, the total and the tax note. Provider invoices carry the provider's page. null when the invoice has none.
data[].invoice.idstringYesThe Flopay invoice UUID.
data[].invoice.invoiceNumberstring or nullNoThe invoice number. FloPay numbers the invoices it issues itself per merchant as <prefix><sequence> (the merchant's prefix, default INV-, and a sequence zero-padded to 6 digits, e.g. INV-000001); a number is never reused or changed. Provider invoices keep the provider's number. null when the invoice has none.
data[].invoice.invoicePdfUrlstring or nullNoThe invoice's PDF, a sibling of hostedInvoiceUrl with the same content and the same access rule. null when the invoice has none.
data[].invoice.paidAtstring (date-time) or nullNoWhen the invoice was paid by the provider.
data[].invoice.statestringYesThe current invoice state. Allowed values: open, pending, processing, pastDue, paid, closed, failed, voided, unknown.
data[].invoice.totalnumber or nullNo
data[].invoice.transactionobjectNoLinked Flopay transaction (non-secret fields incl. metadata). Present only when the transaction relation is loaded and a transaction settled this invoice.
data[].invoice.transaction.amountnumberYes
data[].invoice.transaction.authorizationExpiresAtstring (date-time) or nullNoDeadline for capturing an active authorization.
data[].invoice.transaction.authorizationVoidReasonstring or nullNoWhy an uncaptured authorization was voided. Allowed values: merchant_requested, expired, provider_canceled.
data[].invoice.transaction.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].invoice.transaction.checkoutSessionIdstring or nullNoOriginating checkout session UUID.
data[].invoice.transaction.createdAtstring (date-time)YesRecord creation timestamp.
data[].invoice.transaction.currencystringYes
data[].invoice.transaction.descriptionstring or nullYes
data[].invoice.transaction.effectiveFloFeeUsdnumber or nullYesEffective Flo platform fee in USD after adjustments. Null until the legacy base fee has been finalized.
data[].invoice.transaction.financialEffectiveAtstring (date-time) or nullNoAuthoritative provider money-movement timestamp, when available.
data[].invoice.transaction.floFeeAdjustmentUsdnumberYesNet append-only adjustment to the finalized Flo platform fee, in USD.
data[].invoice.transaction.floFeeUsdnumber or nullYesFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency.
data[].invoice.transaction.gatewayobjectNoOwning gateway (non-secret fields). Present only when the gateway relation is loaded.
data[].invoice.transaction.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].invoice.transaction.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].invoice.transaction.gateway.environmentstringYesAllowed values: stage, production.
data[].invoice.transaction.gateway.idstringYesGateway UUID.
data[].invoice.transaction.gateway.namestringYesHuman-readable name of the gateway account.
data[].invoice.transaction.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].invoice.transaction.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].invoice.transaction.gateway.sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
data[].invoice.transaction.gatewayChargeIdstring or nullNoOriginal gateway charge identifier.
data[].invoice.transaction.gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object identifier, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
data[].invoice.transaction.gatewayRefundIdstring or nullNoProvider refund-object identifier on a refund transaction, such as a Stripe re_… id. Null on anything that is not a refund, and never a bank-trace reference.
data[].invoice.transaction.gatewayTransactionIdstring or nullNoGateway transaction identifier.
data[].invoice.transaction.idstringYes
data[].invoice.transaction.metadataobject or nullYesArbitrary metadata captured with the transaction.
data[].invoice.transaction.occurredAtstring (date-time)Yes
data[].invoice.transaction.refundTraceReferenceobject or nullNoProvider-neutral bank-trace reference. Present on refund transactions (with a truthful availability status) and null on every other transaction type.
data[].invoice.transaction.refundTraceReference.statusstringYesAvailability of the reference. Allowed values: unknown, absent, pending, unavailable, available.
data[].invoice.transaction.refundTraceReference.typestring or nullYesWhich reference scheme the provider reported. A scheme Flo does not recognise is reported as other rather than assumed to be an ARN. Allowed values: acquirer_reference_number, system_trace_audit_number, retrieval_reference_number, other.
data[].invoice.transaction.refundTraceReference.valuestring or nullYesThe bank-trace reference, preserved verbatim including any leading zeroes. Populated only when status is available.
data[].invoice.transaction.statusstringYes
data[].invoice.transaction.subscriptionobjectNoLinked subscription (non-secret fields incl. metadata). Present only when the subscription relation is loaded and the payment is tied to a subscription.
data[].invoice.transaction.subscription.amountnumber or nullYesThe stored single-unit amount.
data[].invoice.transaction.subscription.buyerBusinessDetailsobject or nullNoThe buyer's current business details at this merchant (customerType, legalName, address, taxId), or null when the buyer has none. Returned by the single-subscription read; omitted from lists.
data[].invoice.transaction.subscription.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data[].invoice.transaction.subscription.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data[].invoice.transaction.subscription.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].invoice.transaction.subscription.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data[].invoice.transaction.subscription.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data[].invoice.transaction.subscription.createdAtstring (date-time)YesWhen the row was created.
data[].invoice.transaction.subscription.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data[].invoice.transaction.subscription.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data[].invoice.transaction.subscription.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
data[].invoice.transaction.subscription.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data[].invoice.transaction.subscription.gatewaySubscriptionIdstringYesThe subscription identifier stored from the billing gateway. Flo-owned subscriptions hold no gateway-side subscription object, so this is a synthesized flo_<uuid> identifier that exists in the response only: it is not stored, and cannot be looked up at the gateway.
data[].invoice.transaction.subscription.gatewayTypestringYesThe payment gateway that processes charges for the subscription. This describes the payment rails only: it does NOT say who owns the billing schedule. A Flo-owned subscription still reports the gateway its charges run through; read ownership to tell the two apart. Allowed values: stripe, paypal, worldpay_corporate_gateway.
data[].invoice.transaction.subscription.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data[].invoice.transaction.subscription.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data[].invoice.transaction.subscription.meteredItemsarray of objectYesThe plan's metered items as snapshotted when this Flo-owned subscription started, with the effective unit price: a per-subscription override wins over the snapshot price. Later plan price changes do not alter it. Always empty for a provider-owned subscription.
data[].invoice.transaction.subscription.ownershipstringYesWho owns the billing schedule. provider means the gateway holds the subscription object and drives renewals; flo means Flopay holds the schedule and drives renewals itself, charging through the gateway named by gatewayType. Allowed values: flo, provider.
data[].invoice.transaction.subscription.pauseStatestring or nullYesDistinguishes a pause that is in effect ('active') from one recorded to start at a future date ('scheduled'). Null when no pause is recorded. Allowed values: scheduled, active.
data[].invoice.transaction.subscription.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data[].invoice.transaction.subscription.planDescriptionstring or nullYesThe stored plan description when available.
data[].invoice.transaction.subscription.planIdstringYesThe stored plan identifier.
data[].invoice.transaction.subscription.planNamestringYesThe stored plan name.
data[].invoice.transaction.subscription.quantitynumberYesThe subscribed quantity.
data[].invoice.transaction.subscription.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data[].invoice.transaction.subscription.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data[].invoice.transaction.subscription.startDatestring (date-time) or nullYesWhen the subscription started.
data[].invoice.transaction.subscription.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data[].invoice.transaction.subscription.totalnumber or nullYesThe stored total amount.
data[].invoice.transaction.subscription.trialEndstring (date-time) or nullYesWhen the trial ends.
data[].invoice.transaction.subscription.updatedAtstring (date-time)YesWhen the row was last updated.
data[].invoice.transaction.subscription.usagePeriodobject or nullYesThe open usage period of a Flo-owned subscription. Plans of a month or less: the billing cycle already paid for, from the last charge to the next charge date. Longer plans: the current month, anchored like the renewal date. null once the subscription has ended, before it has started, and for a provider-owned subscription.
data[].invoice.transaction.subscription.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].invoice.transaction.subscription.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data[].invoice.transaction.subscription.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].invoice.transaction.subscription.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data[].invoice.transaction.subscription.uuidstringYesInternal Flopay subscription UUID.
data[].invoice.transaction.subscriptionUuidstring or nullNoLinked Flopay subscription UUID.
data[].invoice.transaction.typestringYesFinancial event classification. Allowed values: purchase, refund, chargeback, dispute.
data[].invoice.transaction.userEmailstring or nullNoCustomer email when the user relation is loaded.
data[].invoice.transaction.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].invoice.transaction.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].invoice.transaction.userUuidstring or nullNoLinked Flopay user UUID.
data[].invoice.transactionTypestring or nullNoProvider-reported transaction type.
data[].invoice.transactionUuidstring or nullNoLinked Flopay transaction UUID.
data[].invoice.updatedAtstring (date-time)YesWhen the invoice was last updated.
data[].invoice.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].invoice.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].invoice.userUuidstring or nullNoLinked Flopay user UUID.
data[].invoiceUuidstring or nullNoFlo invoice this event relates to, when resolvable.
data[].originalobject or nullNoOriginal delivery record. Present only when requested with relation=original.
data[].originalUuidstring or nullNo
data[].preDisputeAlertUuidstring or nullNoFlo Pre-Dispute Alert this event relates to, when Flo retains the alert.
data[].requestBodyobjectYesThe Flo webhook payload that will be POSTed to the client.
data[].responseBodyobject or nullNoThe last response body returned by the client endpoint.
data[].responseCodestring or nullNo
data[].retryCountnumberYes
data[].sentAtstring (date-time) or nullNo
data[].skipReasonstring or nullNoMachine-readable reason an event was intentionally excluded before any delivery attempt. Allowed values: endpoint_disabled, event_not_subscribed, endpoint_created_after_event, filter_context_missing, filter_not_matched.
data[].sourcestring or nullNoAllowed values: STRIPE, PAYPAL, WORLDPAY_CORPORATE_GATEWAY, CHARGEBACK, FLO.
data[].statusstringYesAllowed values: pending, success, failed, retrying, skipped.
data[].subscriptionobject or nullNoRelated subscription. Present only when requested with relation=subscription.
data[].subscription.amountnumber or nullYesThe stored single-unit amount.
data[].subscription.buyerBusinessDetailsobject or nullNoThe buyer's current business details at this merchant (customerType, legalName, address, taxId), or null when the buyer has none. Returned by the single-subscription read; omitted from lists.
data[].subscription.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data[].subscription.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data[].subscription.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].subscription.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data[].subscription.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data[].subscription.createdAtstring (date-time)YesWhen the row was created.
data[].subscription.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data[].subscription.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data[].subscription.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
data[].subscription.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].subscription.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].subscription.gateway.environmentstringYesAllowed values: stage, production.
data[].subscription.gateway.idstringYesGateway UUID.
data[].subscription.gateway.namestringYesHuman-readable name of the gateway account.
data[].subscription.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].subscription.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].subscription.gateway.sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
data[].subscription.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data[].subscription.gatewaySubscriptionIdstringYesThe subscription identifier stored from the billing gateway. Flo-owned subscriptions hold no gateway-side subscription object, so this is a synthesized flo_<uuid> identifier that exists in the response only: it is not stored, and cannot be looked up at the gateway.
data[].subscription.gatewayTypestringYesThe payment gateway that processes charges for the subscription. This describes the payment rails only: it does NOT say who owns the billing schedule. A Flo-owned subscription still reports the gateway its charges run through; read ownership to tell the two apart. Allowed values: stripe, paypal, worldpay_corporate_gateway.
data[].subscription.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data[].subscription.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data[].subscription.meteredItemsarray of objectYesThe plan's metered items as snapshotted when this Flo-owned subscription started, with the effective unit price: a per-subscription override wins over the snapshot price. Later plan price changes do not alter it. Always empty for a provider-owned subscription.
data[].subscription.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data[].subscription.meteredItems[].namestringYes
data[].subscription.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data[].subscription.ownershipstringYesWho owns the billing schedule. provider means the gateway holds the subscription object and drives renewals; flo means Flopay holds the schedule and drives renewals itself, charging through the gateway named by gatewayType. Allowed values: flo, provider.
data[].subscription.pauseStatestring or nullYesDistinguishes a pause that is in effect ('active') from one recorded to start at a future date ('scheduled'). Null when no pause is recorded. Allowed values: scheduled, active.
data[].subscription.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data[].subscription.planDescriptionstring or nullYesThe stored plan description when available.
data[].subscription.planIdstringYesThe stored plan identifier.
data[].subscription.planNamestringYesThe stored plan name.
data[].subscription.quantitynumberYesThe subscribed quantity.
data[].subscription.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data[].subscription.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data[].subscription.startDatestring (date-time) or nullYesWhen the subscription started.
data[].subscription.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data[].subscription.totalnumber or nullYesThe stored total amount.
data[].subscription.trialEndstring (date-time) or nullYesWhen the trial ends.
data[].subscription.updatedAtstring (date-time)YesWhen the row was last updated.
data[].subscription.usagePeriodobject or nullYesThe open usage period of a Flo-owned subscription. Plans of a month or less: the billing cycle already paid for, from the last charge to the next charge date. Longer plans: the current month, anchored like the renewal date. null once the subscription has ended, before it has started, and for a provider-owned subscription.
data[].subscription.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data[].subscription.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data[].subscription.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].subscription.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data[].subscription.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].subscription.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data[].subscription.uuidstringYesInternal Flopay subscription UUID.
data[].subscriptionUuidstring or nullNoFlo subscription this event relates to, when resolvable.
data[].transactionobject or nullNoRelated payment. Present only when requested with relation=transaction.
data[].transaction.amountnumberYes
data[].transaction.authorizationExpiresAtstring (date-time) or nullNoDeadline for capturing an active authorization.
data[].transaction.authorizationVoidReasonstring or nullNoWhy an uncaptured authorization was voided. Allowed values: merchant_requested, expired, provider_canceled.
data[].transaction.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].transaction.checkoutSessionIdstring or nullNoOriginating checkout session UUID.
data[].transaction.createdAtstring (date-time)YesRecord creation timestamp.
data[].transaction.currencystringYes
data[].transaction.descriptionstring or nullYes
data[].transaction.effectiveFloFeeUsdnumber or nullYesEffective Flo platform fee in USD after adjustments. Null until the legacy base fee has been finalized.
data[].transaction.financialEffectiveAtstring (date-time) or nullNoAuthoritative provider money-movement timestamp, when available.
data[].transaction.floFeeAdjustmentUsdnumberYesNet append-only adjustment to the finalized Flo platform fee, in USD.
data[].transaction.floFeeUsdnumber or nullYesFlo's platform fee for this transaction, always in USD: distinct from the shopper amount and currency.
data[].transaction.gatewayobjectNoOwning gateway (non-secret fields). Present only when the gateway relation is loaded.
data[].transaction.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].transaction.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].transaction.gateway.environmentstringYesAllowed values: stage, production.
data[].transaction.gateway.idstringYesGateway UUID.
data[].transaction.gateway.namestringYesHuman-readable name of the gateway account.
data[].transaction.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].transaction.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].transaction.gateway.sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
data[].transaction.gatewayChargeIdstring or nullNoOriginal gateway charge identifier.
data[].transaction.gatewayPaymentIntentIdstring or nullNoOpaque provider payment-object identifier, such as a Stripe PaymentIntent or PayPal Order/subscription id. The legacy field name is preserved for compatibility.
data[].transaction.gatewayRefundIdstring or nullNoProvider refund-object identifier on a refund transaction, such as a Stripe re_… id. Null on anything that is not a refund, and never a bank-trace reference.
data[].transaction.gatewayTransactionIdstring or nullNoGateway transaction identifier.
data[].transaction.idstringYes
data[].transaction.metadataobject or nullYesArbitrary metadata captured with the transaction.
data[].transaction.occurredAtstring (date-time)Yes
data[].transaction.refundTraceReferenceobject or nullNoProvider-neutral bank-trace reference. Present on refund transactions (with a truthful availability status) and null on every other transaction type.
data[].transaction.refundTraceReference.statusstringYesAvailability of the reference. Allowed values: unknown, absent, pending, unavailable, available.
data[].transaction.refundTraceReference.typestring or nullYesWhich reference scheme the provider reported. A scheme Flo does not recognise is reported as other rather than assumed to be an ARN. Allowed values: acquirer_reference_number, system_trace_audit_number, retrieval_reference_number, other.
data[].transaction.refundTraceReference.valuestring or nullYesThe bank-trace reference, preserved verbatim including any leading zeroes. Populated only when status is available.
data[].transaction.statusstringYes
data[].transaction.subscriptionobjectNoLinked subscription (non-secret fields incl. metadata). Present only when the subscription relation is loaded and the payment is tied to a subscription.
data[].transaction.subscription.amountnumber or nullYesThe stored single-unit amount.
data[].transaction.subscription.buyerBusinessDetailsobject or nullNoThe buyer's current business details at this merchant (customerType, legalName, address, taxId), or null when the buyer has none. Returned by the single-subscription read; omitted from lists.
data[].transaction.subscription.cancelAtstring (date-time) or nullYesWhen the subscription is scheduled to cancel.
data[].transaction.subscription.canceledAtstring (date-time) or nullYesWhen the subscription was canceled.
data[].transaction.subscription.checkoutMetadataobjectNoImmutable non-sensitive client context inherited from the originating checkout.
data[].transaction.subscription.checkoutSessionIdstring or nullYesThe originating checkout session UUID when available.
data[].transaction.subscription.clientIdstring or nullYesThe authenticated client UUID associated with the subscription row.
data[].transaction.subscription.createdAtstring (date-time)YesWhen the row was created.
data[].transaction.subscription.currencystring or nullYesThe ISO 4217 currency code recorded for the subscription.
data[].transaction.subscription.endDatestring (date-time) or nullYesWhen the current subscription term ends.
data[].transaction.subscription.gatewayobject or nullNoOwning gateway (non-secret fields). Present only when the gateway relation is requested.
data[].transaction.subscription.gateway.codestringYesGateway account identifier (e.g. the Stripe connected account acct_…).
data[].transaction.subscription.gateway.currencystringYes3-letter ISO default currency code (e.g. "USD") used by this gateway account.
data[].transaction.subscription.gateway.environmentstringYesAllowed values: stage, production.
data[].transaction.subscription.gateway.idstringYesGateway UUID.
data[].transaction.subscription.gateway.namestringYesHuman-readable name of the gateway account.
data[].transaction.subscription.gateway.providerTypestringYesAllowed values: stripe, paypal, worldpay_corporate_gateway.
data[].transaction.subscription.gateway.publishableKeystringNoPublic API key used by frontend clients to identify the gateway account. Not a secret.
data[].transaction.subscription.gateway.sessionModestringYesWhether this gateway may serve buyer-present payments (on_session), merchant-initiated payments (off_session), or both. Allowed values: both, on_session, off_session.
data[].transaction.subscription.gatewayIdstring or nullYesThe gateway configuration UUID used for this subscription when available.
data[].transaction.subscription.gatewaySubscriptionIdstringYesThe subscription identifier stored from the billing gateway. Flo-owned subscriptions hold no gateway-side subscription object, so this is a synthesized flo_<uuid> identifier that exists in the response only: it is not stored, and cannot be looked up at the gateway.
data[].transaction.subscription.gatewayTypestringYesThe payment gateway that processes charges for the subscription. This describes the payment rails only: it does NOT say who owns the billing schedule. A Flo-owned subscription still reports the gateway its charges run through; read ownership to tell the two apart. Allowed values: stripe, paypal, worldpay_corporate_gateway.
data[].transaction.subscription.gatewayUserIdstring or nullYesThe billing gateway customer identifier when one is known.
data[].transaction.subscription.metadataobject or nullYesArbitrary metadata captured with the subscription row.
data[].transaction.subscription.meteredItemsarray of objectYesThe plan's metered items as snapshotted when this Flo-owned subscription started, with the effective unit price: a per-subscription override wins over the snapshot price. Later plan price changes do not alter it. Always empty for a provider-owned subscription.
data[].transaction.subscription.meteredItems[].itemIdstring (uuid)YesThe metered item: the catalogue price attached to the plan.
data[].transaction.subscription.meteredItems[].namestringYes
data[].transaction.subscription.meteredItems[].unitPricestringYesEffective unit price as an exact decimal string (up to 6 places) in the subscription currency.
data[].transaction.subscription.ownershipstringYesWho owns the billing schedule. provider means the gateway holds the subscription object and drives renewals; flo means Flopay holds the schedule and drives renewals itself, charging through the gateway named by gatewayType. Allowed values: flo, provider.
data[].transaction.subscription.pauseStatestring or nullYesDistinguishes a pause that is in effect ('active') from one recorded to start at a future date ('scheduled'). Null when no pause is recorded. Allowed values: scheduled, active.
data[].transaction.subscription.pausedAtstring (date-time) or nullYesWhen the subscription was paused.
data[].transaction.subscription.planDescriptionstring or nullYesThe stored plan description when available.
data[].transaction.subscription.planIdstringYesThe stored plan identifier.
data[].transaction.subscription.planNamestringYesThe stored plan name.
data[].transaction.subscription.quantitynumberYesThe subscribed quantity.
data[].transaction.subscription.rebillCountinteger (int32)YesThe number of successful renewal charges recorded for the subscription. Minimum: 0.
data[].transaction.subscription.resumeAtstring (date-time) or nullYesWhen the subscription will resume.
data[].transaction.subscription.startDatestring (date-time) or nullYesWhen the subscription started.
data[].transaction.subscription.statestringYesThe current subscription state stored in Flopay. Allowed values: active, canceled, expired, failed, future, paused, past_due.
data[].transaction.subscription.totalnumber or nullYesThe stored total amount.
data[].transaction.subscription.trialEndstring (date-time) or nullYesWhen the trial ends.
data[].transaction.subscription.updatedAtstring (date-time)YesWhen the row was last updated.
data[].transaction.subscription.usagePeriodobject or nullYesThe open usage period of a Flo-owned subscription. Plans of a month or less: the billing cycle already paid for, from the last charge to the next charge date. Longer plans: the current month, anchored like the renewal date. null once the subscription has ended, before it has started, and for a provider-owned subscription.
data[].transaction.subscription.usagePeriod.endstring (date-time)YesEnd of the open usage period (exclusive).
data[].transaction.subscription.usagePeriod.startstring (date-time)YesStart of the open usage period (inclusive).
data[].transaction.subscription.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].transaction.subscription.userGatewayIdstring or nullYesThe linked internal user gateway row UUID when available.
data[].transaction.subscription.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].transaction.subscription.userUuidstring or nullYesThe Flopay user UUID associated with the subscription.
data[].transaction.subscription.uuidstringYesInternal Flopay subscription UUID.
data[].transaction.subscriptionUuidstring or nullNoLinked Flopay subscription UUID.
data[].transaction.typestringYesFinancial event classification. Allowed values: purchase, refund, chargeback, dispute.
data[].transaction.userEmailstring or nullNoCustomer email when the user relation is loaded.
data[].transaction.userFirstNamestring or nullNoCustomer first name when the user relation is loaded.
data[].transaction.userLastNamestring or nullNoCustomer last name when the user relation is loaded.
data[].transaction.userUuidstring or nullNoLinked Flopay user UUID.
data[].transactionUuidstring or nullNoFlo transaction this event relates to, when resolvable.
data[].updatedAtstring (date-time)Yes
data[].userobject or nullNoRelated user. Present only when requested with relation=user.
data[].user.clientUserIdstring or nullNo
data[].user.createdAtstring (date-time)Yes
data[].user.emailstringYes
data[].user.firstNamestringYes
data[].user.idstringYes
data[].user.lastNamestringYes
data[].user.updatedAtstring (date-time)Yes
data[].userUuidstring or nullNoFlo user this event relates to, when resolvable.
data[].webhookobjectNoParent webhook endpoint. Present only when requested with relation=webhook.
data[].webhook.clientIdstringYes
data[].webhook.createdAtstring (date-time)Yes
data[].webhook.disabledAtstring (date-time) or nullNo
data[].webhook.eventsarray of stringYes
data[].webhook.failedSendAtstring (date-time) or nullNo
data[].webhook.idstringYes
data[].webhook.updatedAtstring (date-time)Yes
data[].webhook.urlstringYes
limitnumberYes
pagenumberYes
pagesnumberYes
totalnumberYes

Errors

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

ClientWebhookEvent_resend

Resend Webhook Event

Resets the selected delivery in place under its stable event id and republishes it. The delivery must belong to the authenticated client, its endpoint must be enabled, and its persisted initial filter decision must not be excluded.

PolicyValue
OperationPUT /v1/webhooks/events/{id}/resend
Classmutating
Riskhigh
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin
Scopesmcp:write

Arguments

ArgumentInTypeRequiredDescription
idpathstringYes

Result

Returns 202 with a JSON body.

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

Errors

StatusDescription
400The supplied path or list query is invalid.
401Client Basic authentication or OAuth2 bearer authentication is required. For Basic, use client.uuid as the username and client.api_key as the password; for bearer, send a valid OAuth2 access token with the required scope.
409The endpoint is disabled, source provenance is unavailable, or the delivery was excluded by its persisted initial product-filter decision.

ClientWebhookEvent_resendMany

Resend Webhook Events

Resends every webhook delivery owned by the authenticated client that matches the supplied list query. Eligible deliveries are reset in place to pending under their stable event ids and republished. Disabled endpoints and deliveries excluded by their persisted initial filter decision are returned in skippedIds; they are not queued. Supports the same whitelisted filters as the list endpoint.

PolicyValue
OperationPOST /v1/webhooks/events/resend
Classmutating
Riskhigh
Confirmationrequired
Retrymanual-reconciliation
Rate-limit tierrestricted
Rolesowner, admin
Scopesmcp:write

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, eventType, retryCount, sentAt, skipReason, status, updatedAt, invoice.id, invoice.gatewayInvoiceId, invoice.gatewayType, invoice.state, invoice.billingReason, invoice.transactionType, invoice.currency, invoice.total, invoice.userUuid, invoice.transactionUuid, invoice.paidAt, invoice.createdAt, invoice.updatedAt, original.id, original.eventType, original.status, original.retryCount, original.gatewayEventId, original.responseCode, original.sentAt, original.originalUuid, original.userUuid, original.transactionUuid, original.subscriptionUuid, original.invoiceUuid, original.createdAt, original.updatedAt, subscription.uuid, subscription.gatewayType, subscription.gatewaySubscriptionId, subscription.planId, subscription.planName, subscription.quantity, subscription.rebillCount, subscription.currency, subscription.amount, subscription.total, subscription.state, subscription.startDate, subscription.endDate, subscription.canceledAt, subscription.createdAt, subscription.updatedAt, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId, user.id, user.email, user.firstName, user.lastName, user.createdAt, user.updatedAt, webhook.id, webhook.clientId, webhook.url, webhook.failedSendAt, webhook.disabledAt, webhook.createdAt, webhook.updatedAt. Default: createdAt DESC. Allowed values: createdAt, eventType, retryCount, sentAt, skipReason, status, updatedAt, invoice.id, invoice.gatewayInvoiceId, invoice.gatewayType, invoice.state, invoice.billingReason, invoice.transactionType, invoice.currency, invoice.total, invoice.userUuid, invoice.transactionUuid, invoice.paidAt, invoice.createdAt, invoice.updatedAt, original.id, original.eventType, original.status, original.retryCount, original.gatewayEventId, original.responseCode, original.sentAt, original.originalUuid, original.userUuid, original.transactionUuid, original.subscriptionUuid, original.invoiceUuid, original.createdAt, original.updatedAt, subscription.uuid, subscription.gatewayType, subscription.gatewaySubscriptionId, subscription.planId, subscription.planName, subscription.quantity, subscription.rebillCount, subscription.currency, subscription.amount, subscription.total, subscription.state, subscription.startDate, subscription.endDate, subscription.canceledAt, subscription.createdAt, subscription.updatedAt, transaction.id, transaction.amount, transaction.currency, transaction.status, transaction.description, transaction.createdAt, transaction.userUuid, transaction.checkoutSessionId, transaction.subscriptionUuid, transaction.gatewayTransactionId, transaction.gatewayPaymentIntentId, user.id, user.email, user.firstName, user.lastName, user.createdAt, user.updatedAt, webhook.id, webhook.clientId, webhook.url, webhook.failedSendAt, webhook.disabledAt, webhook.createdAt, webhook.updatedAt.
relationquerystringNoComma-separated relation aliases to include. Allowed aliases: invoice, original, subscription, transaction, user, webhook. Unknown aliases return 400.
createdAtquerystring (date-time)NoWebhook delivery creation timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
eventTypequerystringNoFlo webhook event type. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: dispute.created, dispute.updated, dispute.won, dispute.lost, pre_dispute_alert.created, pre_dispute_alert.updated, subscription.created, subscription.updated, subscription.cancelled, subscription.renewed, subscription.reactivated, subscription.paused, subscription.resumed, subscription.expired, item.purchased, item.refunded, item.charged_back, item.reversed, invoice.created, invoice.deleted, invoice.updated, invoice.payment_failed, invoice.paid, invoice.overdue, payment.authorized, payment.capture_failed, payment.authorization_voided, payment.authorization_expired, customer.merged, payment_method.added, payment_method.removed, payment_method.default_changed.
disputeUuidquerystringNoFlo dispute this event relates to. 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.
gatewayEventIdquerystringNoProvider event id. 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.
idquerystringNoWebhook delivery id. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
invoiceUuidquerystringNoFlo invoice this event relates to. 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.
originalUuidquerystringNoOriginal webhook delivery id for resend attempts. 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.
preDisputeAlertUuidquerystringNoFlo Pre-Dispute Alert this event relates to. 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.
responseCodequerystringNoLast client response code. 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.
retryCountquerynumberNoDelivery retry count. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
sentAtquerystring (date-time)NoWebhook delivery sent timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
skipReasonquerystringNoIntentional webhook delivery exclusion reason. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: endpoint_disabled, event_not_subscribed, endpoint_created_after_event, filter_context_missing, filter_not_matched.
statusquerystringNoWebhook delivery status. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400. Allowed values: pending, success, failed, retrying, skipped.
subscriptionUuidquerystringNoFlo subscription this event relates to. 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.
transactionUuidquerystringNoFlo transaction this event relates to. Equality filter. Pass without operator for exact match or pass any of the following operators: [in]. [in] accepts comma-separated values; blank entries return 400.
updatedAtquerystring (date-time)NoWebhook delivery update timestamp. Equality filter. Pass without operator for exact match or pass any of the following operators: [gt] [gte] [lt] [lte].
userUuidquerystringNoFlo user this event relates to. 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 202 with a JSON body.

FieldTypeRequiredDescription
failedCountnumberYesNumber of matched webhook events that were reset to pending but whose re-queue onto the outbox broker failed. They remain pending and can be resent again.
failedIdsarray of stringYesIds of the matched webhook events that were reset to pending but could not be re-queued onto the outbox broker. Resend them again to complete redelivery.
resentCountnumberYesNumber of matched webhook events that were reset to pending and re-queued for delivery.
resentIdsarray of stringYesIds of the matched webhook events that were re-queued for delivery.
skippedCountnumberYesNumber of matched webhook events that were skipped because their webhook endpoint is disabled.
skippedIdsarray of stringYesIds of the matched webhook events that were skipped because their webhook endpoint is disabled.

Errors

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

On this page