Airtm · AsyncAPI Specification
Airtm Webhooks
Version
View Spec
View on GitHub
PaymentsPayoutsCross-Border PaymentsFintechDigital WalletStablecoinsUSDCStellarMass PayoutsRemittancesLatin AmericaEmerging Marketsmoney-services-businessAuthenticationOpenID ConnectAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-06'
method: searched
source: >-
https://api.enterprise.airtm.com/openapi.json (the `webhooks` object of the V2 OpenAPI, plus the
"Webhooks & Notifications" and Wallet Resource API "Webhooks" guides in info.description)
docs: https://docs.airtm.com/
spec_type: Webhooks
asyncapi_published: false
asyncapi_note: >-
Airtm publishes NO AsyncAPI document — /asyncapi.json and /asyncapi.yaml return 404 on the API
host. The event surface is real and machine-readable only insofar as the V2 OpenAPI declares a
top-level `webhooks` object with eight events carrying full request-body schemas. That is captured
verbatim in openapi/airtm-enterprise-v2-openapi.json; this file is the catalog view.
delivery:
provider: Svix
migrated: '2025-07'
configuration_url: https://enterprise.airtm.com/settings/webhooks
portal_operation: GetPortalUrl (GET /v2/embedded/webhooks/portal-url)
signature_verification: true
retries: automatic retries for failed deliveries
transport: HTTPS POST
acknowledgement: return a 2xx status
source_ips_published: true
source_ips_docs_section: 'Connecting → IP Addresses'
events:
- name: payout.created
summary: Payout Created
description: Triggered when a payout has been created.
payload_schema: PayoutResponse
envelope: {type: string, data: PayoutResponse}
declared_in: openapi/airtm-enterprise-v2-openapi.json#/webhooks/payout.created
- name: payout.completed
summary: Payout completed
description: A payout has completed.
payload_schema: PayoutResponse
declared_in: openapi/airtm-enterprise-v2-openapi.json#/webhooks/payout.completed
- name: payout.failed
summary: Payout failed
payload_schema: PayoutResponse
declared_in: openapi/airtm-enterprise-v2-openapi.json#/webhooks/payout.failed
- name: payout.canceled
summary: Payout canceled
payload_schema: PayoutResponse
declared_in: openapi/airtm-enterprise-v2-openapi.json#/webhooks/payout.canceled
- name: payin.created
summary: Payin created
payload_schema: PayinResponse
declared_in: openapi/airtm-enterprise-v2-openapi.json#/webhooks/payin.created
- name: payin.confirmed
summary: Payin confirmed
payload_schema: PayinResponse
declared_in: openapi/airtm-enterprise-v2-openapi.json#/webhooks/payin.confirmed
- name: payin.failed
summary: Payin failed
payload_schema: PayinResponse
declared_in: openapi/airtm-enterprise-v2-openapi.json#/webhooks/payin.failed
- name: payin.canceled
summary: Payin canceled
payload_schema: PayinResponse
declared_in: openapi/airtm-enterprise-v2-openapi.json#/webhooks/payin.canceled
wallet_resource_events:
note: >-
The OAuth-gated Wallet Resource (Connect) API emits four further events over the same Svix
delivery. These are documented in prose only — they are NOT declared in the OpenAPI `webhooks`
object, so no machine-readable payload schema is published for them.
events:
- {name: oidc.transaction.created, fired_when: 'A transaction is registered (status created or pending_user_confirmation).'}
- {name: oidc.transaction.pendingSettlement, fired_when: 'The Stellar transaction is broadcast and observed (status pending_settlement).'}
- {name: oidc.transaction.completed, fired_when: 'The transaction settles successfully (status completed).'}
- {name: oidc.transaction.failed, fired_when: 'The transaction fails terminally (status failed).'}
payload_note: >-
Every event wraps the same transaction object returned by the REST endpoints. On a terminal event
where the underlying quote can no longer be loaded, amountToSend / amountToReceive / fees are
delivered as null so the status change is never dropped; the REST read endpoints never return
those as null.
consumer_guidance:
- Return a 2xx HTTP status to acknowledge receipt.
- Implement signature verification (Svix).
- Use HTTPS for all webhook URLs.
- Handle idempotency to prevent duplicate processing.
- Implement retry logic for temporary failures.
- Allowlist the published Airtm egress IPs.
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/airtm-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.