Aeropay · AsyncAPI Specification
Aeropay Webhooks
Version 2.0
Aeropay delivers transaction and user lifecycle events to a merchant-registered callback URL over HTTPS POST. A subscription is created with POST /v2/webhook by naming a topic and a url; the same call updates an existing subscription for that topic. Payloads carry a payloadVersion of "2.0". Aeropay retries an undelivered event up to five times with exponential backoff and jitter when the callback fails to answer HTTP 200 within 3000ms.
View Spec
View on GitHub
PaymentsPay by BankACHOpen BankingFintechBank linkingFinancial ServicesReal-Time PaymentsWebhookPayoutsMCPRisk & fraudAsyncAPIEventsWebhooks
Channels
transaction_completed
Sent when the transaction is approved by Aeropay. Approved transactions batch and settle at the next batch window (under 24 hours); the transaction stays in "pending" status until 3 business days after creation. Rails: ACH, RfP, RTP.
transaction_voided
Sent when the transaction is voided — stopped before batching, so no money moved in either direction. Rails: ACH, RfP, RTP.
transaction_refunded
Sent when the transaction is refunded. Not sent when a transaction is voided or partially voided before batching — see transaction_voided. The data object carries a refundTransaction array of reversals that already have a reversal transaction, and a queuedRefunds array of reversals still queued or abandoned; both arrays are always present and empty when not applicable. Rails: ACH, RfP, RTP.
transaction_declined
Sent when the transaction declines. Carries the NACHA ACH return code for the decline — see errors/aeropay-decline-codes.yml. Rails: ACH, RfP, RTP.
transaction_resolved
Sent when a previously declined transaction (an ACH return) has been successfully resolved, whether through Aeropay's automated retry pipeline or another resolution path such as manual recovery or an offsetting transaction. Aeropay re-delivers the merchant's ORIGINAL declined transaction rather than a new opaque one, using the same payload shape as transaction_completed and transaction_declined, one message per resolved transaction, grouped per merchant. Rail: ACH.
preauthorized_transaction_created
Sent when a preauthorized transaction is created. Rail: ACH.
user_suspended
Sent when a user is suspended. Payload carries a userId.
user_active
Sent when a previously suspended user has been reactivated. Payload carries a userId.
merchant_reputation_updated
Sent after a successful call to POST /v2/merchantReputation, carrying the users whose reputations changed.
Messages
TransactionEvent
Transaction lifecycle event
TransactionRefundedEvent
Transaction refunded event
PreauthTransactionEvent
Preauthorized transaction created
UserEvent
User status event
MerchantReputationEvent
Merchant reputation updated
Servers
https
production
api.aeropay.com
Subscribe with POST https://api.aeropay.com/v2/webhook. Aeropay delivers from source IPs 54.237.135.163 and 54.81.239.48.
https
sandbox
api.sandbox-pay.aero.inc
Subscribe with POST https://api.sandbox-pay.aero.inc/v2/webhook. Aeropay delivers from source IPs 3.223.196.167 and 34.235.82.59.
AsyncAPI Specification
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.