Airtm · AsyncAPI Specification

Airtm Webhooks

Version

View Spec View on GitHub PaymentsPayoutsCross-Border PaymentsFintechDigital WalletStablecoinsUSDCStellarMass PayoutsRemittancesLatin AmericaEmerging Marketsmoney-services-businessAuthenticationOpenID ConnectAsyncAPIEvents

AsyncAPI Specification

Raw ↑
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.
All 92 tools →

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.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.