Airtm · AsyncAPI Specification
Airtm Webhooks
Version
View Spec
View on GitHub
paymentspayoutscross-border-paymentsfintechdigital-walletstablecoinusdcstellarmass-payoutsremittanceslatin-americaemerging-marketsmoney-services-businessoauth2openid-connectAsyncAPIWebhooksEvents
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.