Webhooks

About Aeropay Webhooks

Aeropay allows you to subscribe to a number of webhooks which will send information about transactions when they update. These webhooks allow you to understand in real-time when transactions are created, succeed, decline, or are refunded.

Webhook Topics

Topic NamePayment RailsDescription
transaction_completedACH, RfP, RTP

This topic will send a payload of a transaction object when the transaction is approved by Aeropay.

Note: Approved transactions will batch and settle at the next batch window, < 24 hours. When approved, a transaction will be in "Pending" status until 3 business days after the transaction was created.

transaction_voidedACH, RfP, RTPThis topic will send a payload of a transaction object when the transaction is voided.
transaction_refundedACH, RfP, RTPThis topic will send a payload of a transaction object when the transaction is refunded. If a transaction is voided or partially voided before the payment is batched, this topic will not be sent. Please see transaction_voided topic. The data object's refundTransaction array lists reversals that already have a reversal transaction created, and queuedRefunds lists reversals that are still queued or were abandoned (e.g. NSF/void) - the status on each item distinguishes the two. Both arrays are always present and are empty when not applicable.
transaction_declinedACH, RfP, RTPThis topic will send a payload of a transaction object when the transaction declines.
preauthorized_transaction_createdACHThis topic will send a payload of a preauthorized transaction object when the preauthorized transaction is created.
user_suspendedN/AThis topic will send a payload of a userid when a user is suspended.
user_activeN/AThis topic will send a payload of a userid when a previously suspended user has been reactivated.
merchant_reputation_updatedN/AThis topic will send a payload of a users whose reputations have been updated after a successful call to POST /merchantReputation.

Webhook Flowchart for ACH Payment

Webhook Flowchart for RfP Payment

Aeropay Webhook Outbound IP Addresses to Whitelist (if Applicable)

Sandbox Server

  • 3.223.196.167
  • 34.235.82.59

Production Server

  • 54.237.135.163
  • 54.81.239.48

Webhook Retries

If your webhook endpoint temporarily can't process events, Aeropay will automatically resends the undelivered events to your endpoint, increasing the time for your webhook endpoint, with exponential backoff and jitter, to eventually receive and process all events.

Aeropay will retry webhooks if:

  • Callback URL fails to respond within 3000ms
  • Callback URL fails to respond with 200 status code

Aeropay will attempt up to 5 total retries.

In the case of a major outage event of your platform, you can contact your dedicated Aeropay CSM to handle missed events during your downtime.

Subscribing to a webhook

HTTP request

Sandbox - POST https://api.sandbox-pay.aero.inc/v2/webhook

Production - POST https://api.aeropay.com/v2/webhook

Code Example - Request

curl --request POST \
     --url https://api.sandbox-pay.aero.inc/v2/webhook \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --header 'authorization: Bearer {{merchantScopedToken}}' \
     --data '
{
  "topic": "transaction_declined",
  "url": "https://your-callback-url.com"
}
'

Code Example - Payload from Webhook

{
  "topic": "transaction_completed",
  "data": {
    "id": "b1ebceb4-74f3-4702-928f-df655798084f",
    "amount": {
      "amount": 123,
      "currency": "USD"
    },
    "status": "pending",
    "paymentType": "payment",
    "userId": "0908b07b-01a3-4226-b48a-44c0984b2906",
    "title": "Online Transaction",
    "referenceId": "newReferenceID-TestinMatt21",
    "apFee": "0.02",
    "createdDate": "2026-01-23T18:53:03+00:00",
    "isRtp": false,
    "merchantId": 582,
    "locationId": 541,
    "userAccountId": 192637
  },
  "payloadVersion": "2.0",
  "date": "2026-01-23 18:53:13"
}
{
  "topic": "user_suspended",
  "data": {
    "userid": "a1b2c3d4-5e6f-7890-abcd-ef1234567890"
  },
  "payloadVersion": "2.0",
  "date": "2024-04-05 15:25:49"
}

Webhook Responses

WebhookWebhook response
transaction_completed
{
  "topic": "transaction_completed",
  "data": {
    "id": "b1ebceb4-74f3-4702-928f-df655798084f",
    "amount": {
      "amount": 123,
      "currency": "USD"
    },
    "status": "pending",
    "paymentType": "payment",
    "userId": "0908b07b-01a3-4226-b48a-44c0984b2906",
    "title": "Online Transaction",
    "referenceId": "newReferenceID-TestinMatt21",
    "apFee": "0.02",
    "createdDate": "2026-01-23T18:53:03+00:00",
    "isRtp": false,
    "merchantId": 582,
    "locationId": 541,
    "userAccountId": 1139036
  },
  "payloadVersion": "2.0",
  "date": "2026-01-23 18:53:13"
}
transaction_refunded
{
  "topic": "transaction_refunded",
  "data": {
    "transaction": {
      "id": "93438fb2-eb5a-4f79-ad00-d2581fa9cc06",
      "amount": {
        "amount": 100,
        "currency": "USD"
      },
      "status": "processed",
      "paymentType": "payment+",
      "userId": "2ac82269-9315-4bb6-8a19-f37e20d50238",
      "title": "Online Transaction",
      "referenceId": "0123456789",
      "attributes": [
        {
          "value": "1",
          "name": "tip",
          "description": "flat"
        },
        {
          "value": "ATTRIBUTE VALUE",
          "name": "ATTRIBUTE NAME",
          "description": "ATTRIBUTE DESCRIPTION"
        }
      ],
      "apFee": "0.02",
      "createdDate": "2026-01-21T02:20:43+00:00",
      "modifiedDate": "2026-01-23T15:15:20+00:00",
      "isRtp": false,
      "merchantId": 582,
      "locationId": 541,
      "userAccountId": 1139036
    },
    "refundTransaction": [
      {
        "id": "b7d8f2a1-5e3c-4d9b-bf1a-234567890abc",
        "amount": {
          "amount": 100,
          "currency": "USD"
        },
        "status": "processed",
        "paymentType": "reversal",
        "userId": "2ac82269-9315-4bb6-8a19-f37e20d50238",
        "title": "2547333",
        "referenceId": "REF-0001",
        "apFee": "0.25",
        "createdDate": "2026-01-23T15:15:20+00:00",
        "modifiedDate": "2026-01-23T15:15:20+00:00",
        "isRtp": false,
        "merchantId": 582,
        "locationId": 541,
        "userAccountId": 1139036
      }
    ],
    "queuedRefunds": [
      {
        "id": "d4f5a6b7-8c9d-4e0f-a1b2-c3d4e5f60718",
        "referenceId": null,
        "amount": {
          "amount": 50,
          "currency": "USD"
        },
        "status": "queued"
      }
    ]
  },
  "payloadVersion": "2.0",
  "date": "2026-01-23 19:08:05"
}
transaction_voided
{
  "topic": "transaction_voided",
  "data": {
    "id": "b1ebceb4-74f3-4702-928f-df655798084f",
    "amount": {
      "amount": 123,
      "currency": "USD"
    },
    "status": "pending",
    "paymentType": "payment",
    "userId": "65d7c207-aafc-490a-b7b5-185576a370e8",
    "title": "Online Transaction",
    "referenceId": "newReferenceID-TestinMatt21",
    "apFee": "0.02",
    "createdDate": "2026-01-23T18:53:03+00:00",
    "modifiedDate": "2026-01-23T18:53:03+00:00",
    "isRtp": false,
    "merchantId": 582,
    "locationId": 541,
    "userAccountId": 1076686
  },
  "payloadVersion": "2.0",
  "date": "2026-01-23 18:54:46"
}
transaction_declined
{
  "topic": "transaction_declined",
  "data": {
    "id": "8bc20976-2e18-4c5c-93b4-20fd853d78a4",
    "amount": {
      "amount": 400,
      "currency": "USD"
    },
    "status": "nsf",
    "paymentType": "payment+",
    "userId": "0908b07b-01a3-4226-b48a-44c0984b2906",
    "title": "Online Transaction",
    "attributes": [
      {
        "value": "1",
        "name": "tip",
        "description": "flat"
      },
      {
        "value": "ATTRIBUTE VALUE",
        "name": "ATTRIBUTE NAME",
        "description": "ATTRIBUTE DESCRIPTION"
      }
    ],
    "apFee": "0.28",
    "referenceId": "REF-0001",
    "createdDate": "2026-01-23T18:53:03+00:00",
    "modifiedDate": "2026-01-23T18:53:03+00:00",
    "isRtp": false,
    "merchantId": 582,
    "locationId": 794,
    "userAccountId": 1139036,
    "returnCode": "R01"
  },
  "payloadVersion": "2.0",
  "date": "2024-04-05 15:25:49"
}
preauthorized_transaction_created
{
  "topic": "preauthorized_transaction_created",
  "data": {
    "id": "b76cfd31-2ef5-44ad-9697-5f0d263fe115",
    "amount": {
      "currency": "USD",
      "amount": 222
    },
    "status": "live",
    "userId": "a1b2c3d4-5e6f-7890-abcd-ef1234567890",
    "referenceId": "merchant-order-98765",
    "description": "Online Transaction",
    "attributes": {
      "key": {
        "value": "example-value",
        "description": "Example attribute description"
      }
    },
    "createdDate": "2026-06-24T19:56:51+00:00",
    "expiryDate": "2026-06-27T19:56:51+00:00",
    "userName": "Jane Smith",
    "userEmail": "[email protected]",
    "merchantId": 1994,
    "userAccountId": 1895840,
    "locationId": 3416
  },
  "payloadVersion": "2.0",
  "date": "2026-06-24 19:56:55"
}
user_suspended
{
  "topic": "user_suspended",
  "data": {
    "userid": "a1b2c3d4-5e6f-7890-abcd-ef1234567890"
  },
  "payloadVersion": "2.0",
  "date": "2024-08-15 15:41:33"
}
user_active
{
  "topic": "user_active",
  "data": {
    "userid": "a1b2c3d4-5e6f-7890-abcd-ef1234567890"
  },
  "payloadVersion": "2.0",
  "date": "2024-08-15 15:42:17"
}
merchant_reputation_updated
{
  "topic": "merchant_reputation_updated",
  "data": {
    "totalUsersUpdated": 3,
    "totalFailures": 0,
    "totalNotEligibleUsers": 0,
    "failedReputationUpdates": [],
    "notEligibleUsers": [],
    "successfulReputationUpdates": [
      {"userId": 12695, "previousReputation": null, "currentReputation": 1},
      {"userId": 1103154, "previousReputation": 1, "currentReputation": 0},
      {"userId": 13055, "previousReputation": 2, "currentReputation": 0}
    ]
  },
  "payloadVersion": "2.0",
  "date": "2024-07-31 21:36:16"
}