Float Financial · AsyncAPI Specification
Float Financial Webhooks
Version
View Spec
View on GitHub
spend-managementcorporate-cardsexpense-managementaccounts-payablebill-payreimbursementsbusiness-bankingaccounting-integrationfintechcanadapaymentserp-integrationAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-16'
method: searched
source: https://docs.floatfinancial.com/docs/webhooks (HTTP 200) and openapi/float-financial-openapi.yml
api: Float Public API
event_surface:
style: webhooks
asyncapi_published: false
asyncapi_note: >-
Float publishes no AsyncAPI document and the OpenAPI 3.1 `webhooks` object is empty ([]). The event surface
below is transcribed from Float's own prose webhook documentation. No AsyncAPI is generated on Float's
behalf — an AsyncAPI pointer would assert Float ships a spec it does not.
streaming: false
polling_alternative: >-
GET /v1/card-transactions with created_at__gte / created_at__lte filters, which is what the accounting guide
shows for batch sync.
subscription:
management: API
operations:
- operationId: getWebhookSubscriptions
method: GET
path: /v1/webhooks
description: Retrieve a paginated list of webhook subscriptions.
- operationId: createWebhookSubscription
method: POST
path: /v1/webhooks
description: >-
Register a new webhook endpoint to receive card transaction events. The signing secret is only returned
once at creation time — store it securely.
delete_supported: false
note: >-
Subscriptions can be listed and created via the API, but there is no DELETE or PATCH on /v1/webhooks — a
subscription cannot be rotated or removed programmatically. WebhookSubscriptionOutputSchema exposes only
{id, url, created_at, updated_at}; there is no per-subscription event filter, so a subscriber receives all
four card-transaction event types.
events:
- name: transaction.authorized
resource: Card Transaction
description: >-
Fired when a card authorization is approved. This occurs in real-time when a cardholder makes a purchase.
follow_up_operation: getTransactionById
- name: transaction.cleared
resource: Card Transaction
description: Fired when a card transaction is captured and settled by the card network.
follow_up_operation: getTransactionById
- name: transaction.ready_to_export
resource: Card Transaction
description: >-
Fired when a transaction reaches the READY_TO_EXPORT accounting stage — after it has been reviewed and is
ready for export to the accounting system.
follow_up_operation: getTransactionById
- name: transaction.export_requested
resource: Card Transaction
description: Fired when an export has been requested for a card transaction on the Month End page.
follow_up_operation: getTransactionById
event_count: 4
coverage_note: >-
All four events are card-transaction events. Bills, reimbursements, payments, receipts, cards, users and the
accounting-coding objects (GL codes, tax codes, vendors, custom fields) have NO event coverage — those
resources can only be synchronised by polling.
payload:
style: thin
schema:
id: string — unique event identifier; use for idempotency
type: string — event type, e.g. "transaction.authorized"
created_at: string — ISO 8601 timestamp when the event was created
business_id: string — UUID of the Float business
object:
id: string — UUID of the affected resource
note: >-
The payload carries only the resource ID by design. Full detail requires a follow-up
GET https://api.floatfinancial.com/v1/card-transactions/{transaction_id} with the bearer token.
security:
signing: HMAC-SHA256
headers:
- name: Float-Signature
description: 'HMAC-SHA256 signature of the signed content, formatted sha256=<hex>'
- name: Float-Webhook-Id
description: Unique event identifier; matches event.id
- name: Float-Timestamp
description: Unix timestamp when the request was sent
secret_delivery: returned once, at subscription creation
replay_protection: >-
Float-Timestamp is provided; the docs do not state a tolerance window, so the consumer must choose one.
verification_sample_published: false
note: >-
Float documents the headers and the algorithm but publishes no worked signature-verification example and
does not state exactly what string is signed ("the signed content"), which leaves the most error-prone part
of webhook consumption to guesswork.
delivery:
retries: 10
backoff: exponential with jitter
success_criteria: HTTP 200-299
timeout_seconds: 10
ordering_guarantee: not documented
consumer_idempotency: Use the event `id` / Float-Webhook-Id header to deduplicate replays.