Webhook Events

Webhooks deliver real-time notifications to your endpoint when account, card, or transaction activity occurs. Use them to keep your application in sync without polling the API.

Green Dot BaaS Webhook Reference

All webhook events are delivered from gbos.pn.publishnotification as HTTP POST requests to your configured endpoint. The top-level structure is always:

{
  "accounts": [
    {
      "accountIdentifier": "...",
      "events": [ { "eventType": "...", ... } ]
    }
  ]
}

Payloads are sent per-event. The accountIdentifier at the top level matches the accountIdentifier inside each event.


Account & User Events

accountUpdated - Account status or KYC state changed

"eventType": "accountUpdated"


Sample Payload

Fires whenever the account status, KYC/OFAC result, or any card instrument on the account changes. The account.status field reflects the new account state (e.g., normal, suspended, closed). The statusReasons array explains the cause. All active payment instruments for all account holders are included in the payload each time it fires.

Note: isPinSet may be false immediately after card issuance and update to true after the cardholder sets a PIN. Partners should treat each accountUpdated as a full replacement of account state, not a delta.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "0c4e08bf-ced0-45b5-964f-f09f7cb5fb15",
      "events": [
        {
          "eventIdentifier": "55a6a5b9-d00c-4f16-8594-f02fc4c6393e",
          "eventType": "accountUpdated",
          "eventDateTime": "2026-04-01T23:17:15.328Z",
          "account": {
            "accountIdentifier": "784712d6-d732-4b69-9277-ff7e67bfcb52",
            "status": "normal",
            "accountStatusChangedDateTime": "2026-07-15T14:23:45.190Z",
            "statusReasons": [
              "healthy"
            ],
            "accountCycleDay": 11,
            "accountHolders": [
              {
                "user": {
                  "firstName": "Tomás",
                  "lastName": "D**",
                  "dobStatus": "matched",
                  "last4Identity": "3286",
                  "identityType": "ssn",
                  "userIdentifier": "4c6b5102-f0b1-43f6-8121-a4f3fb601c26",
                  "isPrimaryAccountHolder": true,
                  "status": "active",
                  "kycStateData": {
                    "ofacStatus": "passed",
                    "kycStatus": "passed",
                    "kycPendingGate": "healthy"
                  }
                },
                "paymentInstruments": [
                  {
                    "paymentInstrumentIdentifier": "22f44ecd-8313-4dda-8522-ab9650698577",
                    "paymentIdentifier": "ab69c2e8-0c1d-48e2-b20f-5f48a13540d4",
                    "paymentInstrumentType": "virtual",
                    "status": "activated",
                    "isPinSet": false,
                    "last4Pan": "2679",
                    "activatedDateTime": "2026-07-15T14:23:45.163Z",
                    "issuedDateTime": "2026-07-15T14:23:45.163Z"
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}

userUpdate - User profile data changed

"eventType": "userUpdate"


Sample Payload

Fires when a user's profile is updated — most commonly an address change, phone number update, or email modification. The profileData object contains only the fields that were updated; absent keys should not be interpreted as deletions. A common variant includes only addresses with no phoneNumbers key.

Note: phoneNumbers may be returned as the masked string "***" when the value is present but suppressed, or absent entirely when not updated in the triggering action.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "8d71be1a-bc3e-4621-a1a3-b857a96d6145",
      "events": [
        {
          "eventIdentifier": "e96ec95a-f7ba-4cd7-baa9-9de3a24c3e8c",
          "eventType": "userUpdate",
          "eventDateTime": "2026-04-19T13:02:01.195Z",
          "user": {
            "userIdentifier": "d232caff-96db-4989-867a-fb7fc9590aea",
            "profileData": {
              "addresses": [
                {
                  "addressLine1": "3682 Poplar Place",
                  "city": "Albuquerque",
                  "state": "TX",
                  "zipCode": "53201",
                  "countryCode": "USA",
                  "type": "home",
                  "isDefault": true,
                  "isReturned": false,
                  "lastUpdatedDateTime": "2026-07-15T14:23:45.149Z"
                }
              ]
            },
            "phoneNumbers": "***"
          }
        }
      ]
    }
  ]
}

featureUpdate - Account feature enrollment changed

"eventType": "featureUpdate"


Sample Payload

Fires when a user's enrollment status for a product feature changes — for example, enrolling in or unenrolling from overdraft protection (Od1). The features array lists each affected feature with its new enrolled state and any relevant extensionAttributes.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "17898a64-7abc-4347-b9b8-68269045abd2",
      "events": [
        {
          "eventIdentifier": "1dc0291a-31b6-4e9e-8cdc-6907a90235a4",
          "eventType": "featureUpdate",
          "eventDateTime": "2026-05-23T20:44:34.529Z",
          "features": [
            {
              "feature": "Od1",
              "enrolled": true,
              "extensionAttributes": {}
            }
          ]
        }
      ]
    }
  ]
}

idvDocumentUpload - Identity verification document submitted

"eventType": "idvDocumentUpload"


Sample Payload

Fires when a user uploads an identity verification document (front or back of a government-issued ID) through the IDV flow. The documentUpload.eventType field indicates which side was uploaded (DOCUMENT_FRONT_UPLOADED, DOCUMENT_BACK_UPLOADED). Partners can use this to track IDV progress in real time without polling.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "1054ce8d-98b2-406d-819d-3b26ce93ba2d",
      "events": [
        {
          "eventIdentifier": "f118f5c1-a983-476e-aff2-271d10534e0c",
          "eventType": "idvDocumentUpload",
          "eventDateTime": "2026-05-15T18:17:51.990Z",
          "documentUpload": {
            "registrationToken": "9e9dc0ec-7dbf-4685-a8cf-57431a4a2cdc",
            "eventType": "DOCUMENT_FRONT_UPLOADED",
            "docVTransactionToken": "8cc76d26-5e76-4702-9dd7-6fbea158b0d3"
          }
        }
      ]
    }
  ]
}

Card & Wallet Events

cardUpdate - Payment instrument status changed

"eventType": "cardUpdate"


Sample Payload

Fires whenever a card's status changes — including activation, blocking, closing, reporting lost/stolen, or reissue. The paymentInstrument.status field reflects the new card state. The statusReasons array (when present) provides additional context such as customerInitiatedHold or lostStolen. Partners should use this event to keep their own card-state cache synchronized.

Note: statusReasons is optional and may be absent when no reason code applies (e.g., a clean activation).

JSON

{
  "accounts": [
    {
      "accountIdentifier": "c49b24e9-f37d-46f6-b5bd-225048191785",
      "events": [
        {
          "eventIdentifier": "c911f34a-a5e5-496e-89ea-9ee3e4fda2d4",
          "eventType": "cardUpdate",
          "eventDateTime": "2026-04-25T05:44:27.448Z",
          "paymentInstrument": {
            "userIdentifier": "3c3a28bb-598e-4c0f-9831-12817e158556",
            "paymentInstrumentIdentifier": "ba98c2a0-5393-423a-9d08-e3976d005539",
            "accountIdentifier": "62d6a100-7f87-43e7-98d6-81e000140056",
            "paymentInstrumentType": "contactlessEmv",
            "status": "blocked",
            "statusReasons": [
              "customerInitiatedHold"
            ],
            "isPinSet": true,
            "last4Pan": "5552",
            "activatedDateTime": "2026-01-15T10:30:00Z",
            "issuedDateTime": "2025-12-15T09:00:00Z",
            "embossedName": "To**\u00e1s O**wo"
          }
        }
      ]
    }
  ]
}

atmPinReset - Card PIN was set or reset

"eventType": "atmPinReset"


Sample Payload

Fires when a cardholder successfully sets or resets their ATM PIN. Partners can use this event to confirm PIN readiness before directing cardholders to ATM transactions. The atmPinSetDateTime is the server-side timestamp of the PIN change.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "e320d1fb-d2d0-40b5-8439-380358212c11",
      "events": [
        {
          "eventIdentifier": "6e8d4954-c37e-4a2c-bf33-79532e261ce0",
          "eventType": "atmPinReset",
          "eventDateTime": "2026-06-04T02:24:06.467Z",
          "atmPinSetDetail": {
            "paymentInstrumentIdentifier": "aa8c3dbd-edca-4ee3-b548-9cfe8c667a6e",
            "paymentIdentifier": "5e174360-6830-4837-8383-8e7bd50b7a7a",
            "bin": "374619",
            "last4Pan": "5333",
            "atmPinSetDateTime": "2026-07-15T14:23:44.790Z"
          }
        }
      ]
    }
  ]
}

provisioning - Digital wallet token lifecycle event

"eventType": "provisioning"


transactionType: tokenComplete

Fires when a card token has been successfully provisioned into a digital wallet for the first time. The token status is always active. Fields DPANID, FPANID, PAR, and walletType are always present in tokenComplete events.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "95d01b0a-380a-4cc8-a55c-da9811f471c8",
      "events": [
        {
          "eventIdentifier": "a2586c8d-8e77-43fe-a76a-4feffac8f132",
          "eventType": "provisioning",
          "eventDateTime": "2026-04-24T14:34:07.487Z",
          "transactions": [
            {
              "transactionIdentifier": "570f7efe-d3e3-4d75-b141-06a9af3b6228",
              "transactionType": "tokenComplete",
              "transactionStatus": "completed",
              "accountIdentifier": "bc2f7bf8-fec3-4894-b265-e277047798be",
              "bin": "431274",
              "last4Pan": "5803",
              "paymentIdentifier": "4b734874-569c-4f44-a54a-60b09836912b",
              "paymentInstrumentIdentifier": "749b9d1f-4e48-42a3-a803-cdeb42099615",
              "tokenInformation": {
                "DPANID": "DA4AMX1USdccf1561526d8845eed3a38fecfcb50654ed6e8e",
                "FPANID": "FV4VIS1US33aba9c7f3aac33ed8da5cee2daa7630fffab2dc",
                "PAR": "SHNF877VREN93IIUC039TEX8FSV87",
                "last4DPAN": "4295",
                "wallet": "Samsung Pay",
                "status": "active",
                "walletType": "DigitalWallet"
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: tokenStatus

Fires when a previously provisioned token changes state after initial provisioning — most commonly to deactivated (card replaced or token suspended) or exception. Partners should use this event to mark digital wallet tokens as inactive in their systems. FPANID, PAR, and walletType are present in most cases but may be omitted depending on wallet type and network.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "7a065e49-a05c-4ecb-97cc-ea7c91e1ca7a",
      "events": [
        {
          "eventIdentifier": "033a66b0-1baf-40f4-9247-35150c60ac82",
          "eventType": "provisioning",
          "eventDateTime": "2026-07-22T20:23:28.629Z",
          "transactions": [
            {
              "transactionIdentifier": "279e102a-a60c-4efa-9dab-cc48fba91912",
              "transactionType": "tokenStatus",
              "transactionStatus": "completed",
              "accountIdentifier": "48ccdc5e-5eb1-44bc-96c4-6e9961602c67",
              "bin": "465923",
              "last4Pan": "2982",
              "paymentIdentifier": "09abc73c-f6b8-4d6f-92f2-ce4d059dfa8d",
              "paymentInstrumentIdentifier": "0a929387-c512-4aaf-9714-72c09eb59dcb",
              "tokenInformation": {
                "DPANID": "DM4MMC1US47c541d5dc15e42ecabb4299aaef287c549965e9",
                "FPANID": "FA4AMX1US2eb02a58add308eb6fabea441a161aeb1bc11c8e",
                "PAR": "UUBCXULJYLJEXQ77AWUDTSEMCIKPT",
                "last4DPAN": "5956",
                "wallet": "Apple Pay",
                "status": "deactivated",
                "walletType": "DigitalWallet"
              }
            }
          ]
        }
      ]
    }
  ]
}

Field Reference

FieldtokenCompletetokenStatus
transactionType"tokenComplete""tokenStatus"
tokenInformation.statusAlways "active""deactivated" or "exception"
FPANIDAlways presentOptional — may be omitted
PARAlways presentOptional — may be omitted
walletTypeAlways presentOptional — may be omitted

Transaction Events

transaction - Posted or authorized transaction on account

"eventType": "transaction"

All transaction sub-types share the same eventType: "transaction" envelope. The transactionType field inside the transactions array identifies the specific activity. The transactionStatus lifecycle values are: pending, declined, cleared, completed, reversed, removed, expired. Not all statuses apply to every sub-type.


transactionType: purchase

Fires for card-present and card-not-present purchase authorizations and settlements. When transactionStatus is declined, the networkTransactionData.authorizedTransactionData.declineReason field identifies the cause. When pending, the holdExpirationDate indicates when the hold releases if not cleared.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "f8e47e10-9ff9-449d-b3bc-d075947c9ff6",
      "events": [
        {
          "eventIdentifier": "4c579f23-bbd9-4033-96d9-4605eff580b1",
          "eventType": "transaction",
          "eventDateTime": "2026-06-22T03:56:08.370Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "04330baa-29e5-4624-b769-b551354b274b",
              "transactionIdentifier": "8b46a6cc-b168-4e20-ad69-fda560b5c8f3",
              "transactionType": "purchase",
              "transactionStatus": "declined",
              "transactionTypeDescription": "Purchase",
              "accountIdentifier": "ea9bc70a-a8a9-431d-8fc9-4de8d45b2ac1",
              "bin": "431274",
              "last4Pan": "2753",
              "currency": "USD",
              "postedDateTime": "2026-07-15T14:23:40Z",
              "transactionAmount": 357.0,
              "isCredit": false,
              "retrievalReferenceNumber": "181478158069",
              "userIdentifier": "af4820bf-b2a3-4032-a01f-07f258d4d8b4",
              "paymentIdentifier": "b06b22ce-3657-4f40-ba93-0260b39fe3bd",
              "purses": [
                {
                  "purseIdentifier": "241d8e44-08b9-4f9c-a648-4add713547c8",
                  "purseType": "primary",
                  "availableBalance": 76.73,
                  "ledgerBalance": 137.04,
                  "availableBalanceAsOfDateTime": "2026-07-15T08:30:00Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T08:30:00Z"
                }
              ],
              "networkTransactionData": {
                "authorizationDateTime": "2026-07-15T14:23:40Z",
                "cardAcceptor": {
                  "merchantId": "000111000111001    ",
                  "addressLine1": "",
                  "postalCode": "10001     ",
                  "merchantName": "WALGREENS #8812",
                  "merchantIndustryCode": "5942",
                  "merchantIndustryCategory": "Miscellaneous Stores",
                  "city": "Fresno",
                  "stateProvReg": "NY ",
                  "merchantIndustryDescription": "Bookshops"
                },
                "authorizedTransactionData": {
                  "requestAuthorizationAmount": 166.23,
                  "declineReason": "insufficientFunds",
                  "authStatusIndicator": "I",
                  "eci": "eCommerce",
                  "isPartialAuth": false
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: networkCardLoad

Fires when funds are pushed to the account via a card network (e.g., Visa Direct or Mastercard Send). Common sources include gig economy payouts, employer disbursements, and person-to-card transfers. When isCredit: true, this represents an inbound credit to the cardholder's primary purse.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "14d176c2-ec94-4a40-9f9e-bb06bd90e206",
      "events": [
        {
          "eventIdentifier": "d76f2192-9477-4fa8-8e84-e5f9d6c86ebd",
          "eventType": "transaction",
          "eventDateTime": "2026-06-17T15:16:57.966Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "ddd30c39-e3f4-4a84-aa9e-b47a8568d216",
              "retrievalReferenceNumber": "983397626000",
              "transactionIdentifier": "bd23e928-8477-433d-9e03-344aab6f535a",
              "transactionType": "networkCardLoad",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Deposit",
              "accountIdentifier": "1ac05959-f276-4a61-9d2c-5b5451b07a7e",
              "bin": "524182",
              "last4Pan": "2512",
              "currency": "USD",
              "postedDateTime": "2026-07-15T14:23:55Z",
              "transactionAmount": 305.37,
              "isCredit": true,
              "userIdentifier": "db6c66c1-6e62-45f4-a179-4e9e845a7dc2",
              "paymentIdentifier": "1ecf46b0-6d5d-4ef9-a111-40bf932e8de6",
              "purses": [
                {
                  "purseIdentifier": "8883a53c-882a-4d18-8ed6-356960995280",
                  "purseType": "primary",
                  "availableBalance": 398.51,
                  "ledgerBalance": 23.55,
                  "availableBalanceAsOfDateTime": "2026-07-15T14:23:55Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T14:23:55Z"
                }
              ],
              "networkTransactionData": {
                "authorizationDateTime": "2026-07-15T14:23:55Z",
                "cardAcceptor": {
                  "merchantName": "AMAZON.COM",
                  "merchantIndustryCode": "4829",
                  "merchantIndustryCategory": "Service Providers",
                  "city": "Columbus",
                  "stateProvReg": "CA",
                  "merchantIndustryDescription": "Wire transfers and money orders"
                },
                "postTransactionData": {
                  "localDateTime": "2026-07-15T07:23:55",
                  "postingDateTime": "2026-06-06T23:28:35.822Z",
                  "approvalCode": "123456"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: atmWithdrawal

Fires for ATM cash withdrawal authorizations and postings. The cardAcceptor block identifies the ATM operator and location. Out-of-network withdrawals may trigger a companion fee transaction. International ATM withdrawals may also trigger a foreignTransactionFee.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "45185349-3846-47b3-b84f-d1f962faed7b",
      "events": [
        {
          "eventIdentifier": "573c701e-faab-4159-9197-53f8776d2eb4",
          "eventType": "transaction",
          "eventDateTime": "2026-07-18T00:07:04.807Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "4f301e5a-78c5-4dc8-aa32-1121fadd1733",
              "transactionIdentifier": "5e6633ca-c2f5-4b82-b354-64c48ff1fbce",
              "transactionType": "atmWithdrawal",
              "transactionStatus": "completed",
              "transactionTypeDescription": "ATM Withdrawal",
              "accountIdentifier": "a96341f3-e632-4bf1-967b-b4e2d2429762",
              "bin": "476193",
              "last4Pan": "9938",
              "currency": "USD",
              "postedDateTime": "2026-07-15T14:24:48Z",
              "transactionAmount": 19.7,
              "isCredit": false,
              "retrievalReferenceNumber": "705614897071",
              "userIdentifier": "cbd28891-37c8-4146-995f-2203be63cb9c",
              "paymentIdentifier": "ba01ac71-4cbf-4173-8f23-a2cb7afd8a56",
              "purses": [
                {
                  "purseIdentifier": "70a6e7e9-0d53-4707-905f-21fbc9c0a68e",
                  "purseType": "primary",
                  "availableBalance": 178.8,
                  "ledgerBalance": 266.33,
                  "availableBalanceAsOfDateTime": "2026-07-15T14:24:48Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T14:24:48Z"
                }
              ],
              "networkTransactionData": {
                "authorizationDateTime": "2026-07-15T13:24:48Z",
                "cardAcceptor": {
                  "merchantId": "P001001",
                  "addressLine1": "7141 Maple Ave",
                  "postalCode": "",
                  "merchantName": "ACME ATM-001001",
                  "merchantIndustryCode": "6011",
                  "merchantIndustryCategory": "Service Providers",
                  "city": "Indianapolis",
                  "stateProvReg": "CO",
                  "merchantIndustryDescription": "Financial institutions -  automated cash disbursements"
                },
                "postTransactionData": {
                  "localDateTime": "2026-07-15T08:24:48",
                  "postingDateTime": "2026-06-26T01:57:22.315Z",
                  "approvalCode": "234567"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: cashReload

Fires when cash is loaded at a retail reload location (e.g., a swipe-reload terminal at a participating retailer). The postedInternalTransactionData.retailSaleData block identifies the store. No bin or last4Pan is present because cash reloads are not card-network transactions.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "41e25ac2-5d19-412f-b4ad-74d98ed1f059",
      "events": [
        {
          "eventIdentifier": "fc091f0d-ecd9-4ee7-90c2-d6f158e9a361",
          "eventType": "transaction",
          "eventDateTime": "2026-05-22T03:22:49.673Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "30a6de11-7de2-4099-8ddc-ddcb64ebee03",
              "transactionIdentifier": "7ee1b10b-3b9d-4070-a69c-8fcaa3b35b7e",
              "transactionType": "cashReload",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Cash Deposit",
              "accountIdentifier": "7556dfd5-cbe3-4538-b26a-682afac0f24f",
              "currency": "USD",
              "postedDateTime": "2026-07-15T14:26:55.348Z",
              "transactionAmount": 424.67,
              "isCredit": true,
              "purses": [
                {
                  "purseIdentifier": "d48b0818-1b72-487e-83af-11b24f523670",
                  "purseType": "primary",
                  "availableBalance": 196.55,
                  "ledgerBalance": 298.87,
                  "availableBalanceAsOfDateTime": "2026-07-15T14:26:55.347Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T14:26:55.347Z"
                }
              ],
              "postedInternalTransactionData": {
                "description": "Acme Reload 001001, Springfield TX",
                "transferType": "swipeReload",
                "retailSaleData": {
                  "city": "Columbus",
                  "state": "NC",
                  "merchantName": "Acme Reload",
                  "storeNumber": "001001"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: refund

Fires when a merchant initiates a credit back to the cardholder. When transactionStatus is removed, the refund authorization was reversed before posting (e.g., a merchant-voided refund). When completed, the funds have been credited. The authorizedTransactionData.holdExpirationDate indicates when a pending refund hold expires if not cleared.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "11b7df15-726c-4e8e-9e2a-e5f52a68603c",
      "events": [
        {
          "eventIdentifier": "d9a2f517-bad6-46b8-b3b8-c0d7bfffde0b",
          "eventType": "transaction",
          "eventDateTime": "2026-05-26T05:56:26.125Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "c822c3a8-d82e-48cc-85db-c3442c06046b",
              "transactionIdentifier": "1a3c01bd-0d0d-4219-a17f-6fb1f60481a9",
              "transactionType": "refund",
              "transactionStatus": "removed",
              "transactionTypeDescription": "Refund",
              "accountIdentifier": "5e6c648d-b14f-46b1-8ea6-040a985cdbb8",
              "bin": "476193",
              "last4Pan": "6442",
              "currency": "USD",
              "postedDateTime": "2026-07-15T14:25:48Z",
              "transactionAmount": 376.09,
              "isCredit": true,
              "retrievalReferenceNumber": "248107569007",
              "userIdentifier": "5e90d85d-f857-450c-8f4e-092caff86e72",
              "paymentIdentifier": "20f65e57-a794-4fd7-88a8-5aa59b8a33b5",
              "purses": [
                {
                  "purseIdentifier": "b885462f-8477-4c46-af8e-b0b1a14afd28",
                  "purseType": "primary",
                  "availableBalance": 199.09,
                  "ledgerBalance": 322.38,
                  "availableBalanceAsOfDateTime": "2026-07-15T14:25:48Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T14:25:48Z"
                }
              ],
              "networkTransactionData": {
                "authorizationDateTime": "2026-07-15T14:25:48Z",
                "cashBackAmount": 353.49,
                "cardAcceptor": {
                  "merchantId": "000222000222002    ",
                  "addressLine1": "",
                  "postalCode": "10002     ",
                  "merchantName": "WALGREENS #8812",
                  "merchantIndustryCode": "5734",
                  "merchantIndustryCategory": "Miscellaneous Stores",
                  "city": "Indianapolis",
                  "stateProvReg": "CA ",
                  "merchantIndustryDescription": "Computer software outlets"
                },
                "authorizedTransactionData": {
                  "holdExpirationDate": "2026-07-22",
                  "requestAuthorizationAmount": 78.52,
                  "approvalCode": "345678",
                  "eci": "eCommerce",
                  "isPartialAuth": false
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: adjustment

Fires when a manual adjustment is posted to the account, such as a dispute resolution credit, chargeback writeoff, or partner-initiated correction. The postedInternalTransactionData.adjustmentType identifies the adjustment category (e.g., disputeFinal, unknown). The partnerAdjustmentType field may provide additional partner-facing classification.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "61c23aed-f0cb-48ca-b9ac-78dcc2310a09",
      "events": [
        {
          "eventIdentifier": "9098db10-e15b-40db-815c-5bfff0b27ed0",
          "eventType": "transaction",
          "eventDateTime": "2026-04-13T01:54:30.327Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "599eb193-07ac-42e2-8458-6d3009506a03",
              "transactionIdentifier": "2f0b5caf-e189-4daa-8ba8-ec9b969f0842",
              "transactionType": "adjustment",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Adjustment",
              "accountIdentifier": "b7aeb092-f387-4add-bd0d-dabf760e9065",
              "currency": "USD",
              "postedDateTime": "2026-07-15T14:27:55.551Z",
              "transactionAmount": 97.8,
              "isCredit": true,
              "purses": [
                {
                  "purseIdentifier": "ed70cc81-604e-4e32-b66d-64a3e01d28c6",
                  "purseType": "primary",
                  "availableBalance": 441.06,
                  "ledgerBalance": 169.46,
                  "availableBalanceAsOfDateTime": "2026-07-15T14:27:55.553Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T14:27:55.553Z"
                }
              ],
              "postedInternalTransactionData": {
                "adjustmentIdentifier": "fa20614e-8801-4cda-ba76-7d5b45210564",
                "adjustmentType": "disputeFinal",
                "partnerAdjustmentType": "writeoff",
                "description": "Writeoff",
                "transferType": "adjustment"
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: fee

Fires when a fee is assessed against the account. The fees array identifies the fee type (atmWithdrawalFee, foreignTransactionFee, bankOtcFee, partnerFee, etc.) and amount. A single fee transaction may contain multiple fee entries. isCredit is always false for fee transactions.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "dc348b7a-8fa1-45df-b8af-9572d5420c5d",
      "events": [
        {
          "eventIdentifier": "59fd7d0f-c75b-4141-8e12-3f24698a70fa",
          "eventType": "transaction",
          "eventDateTime": "2026-05-08T00:42:12.508Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "3e02cb95-0a9f-4ffb-8f81-fd1de564492c",
              "transactionIdentifier": "6ac12ce7-24b1-4ff7-8678-b5fbc0f6ba95",
              "transactionType": "fee",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Fee",
              "accountIdentifier": "c62710a4-ff5d-4892-a3d8-694dc30e7abc",
              "currency": "USD",
              "postedDateTime": "2026-07-15T14:28:50Z",
              "transactionAmount": 159.25,
              "isCredit": false,
              "userIdentifier": "efe451a1-2870-4a59-a661-4e665bba2b9f",
              "paymentIdentifier": "57b18dd2-1112-4ce0-b5ee-7689db73d7e0",
              "purses": [
                {
                  "purseIdentifier": "6d3b332c-190a-4c6c-b77c-000fccde3c66",
                  "purseType": "primary",
                  "availableBalance": 415.23,
                  "ledgerBalance": 464.19,
                  "availableBalanceAsOfDateTime": "2026-07-15T14:28:50Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T14:28:50Z"
                }
              ],
              "fees": [
                {
                  "feeType": "atmWithdrawalFee",
                  "amount": 135.78,
                  "currency": "USD",
                  "description": "Out of Network ATM Withdrawal Fee"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

transactionType: interest

Fires when interest is credited to a savings or interest-bearing purse. This event fires on scheduled interest posting dates. The purseType will reflect the interest-bearing purse (e.g., savings). No bin, last4Pan, or network data is present.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "c0925af3-ac66-4109-95f0-dcc13b5a02ce",
      "events": [
        {
          "eventIdentifier": "db236b95-743a-40e1-8ecc-1bc455d0453e",
          "eventType": "transaction",
          "eventDateTime": "2026-07-22T17:21:01.218Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "cf686dcc-19c7-4e33-9a1c-1a4abf659029",
              "transactionIdentifier": "ff0c380b-604f-496d-bf8a-5d7ee846a53a",
              "transactionType": "interest",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Interest Paid",
              "accountIdentifier": "ba0ecaaf-1d73-4623-9bdb-b88661aff00a",
              "currency": "USD",
              "postedDateTime": "2026-07-15T09:14:50.612Z",
              "transactionAmount": 421.29,
              "isCredit": true,
              "purses": [
                {
                  "purseIdentifier": "aed183bb-4fb4-4bdc-ac27-f189aa0c74a6",
                  "purseType": "savings",
                  "availableBalance": 127.23,
                  "ledgerBalance": 279.73,
                  "availableBalanceAsOfDateTime": "2026-07-15T09:14:50.613Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T09:14:50.613Z"
                }
              ],
              "postedInternalTransactionData": {
                "description": "Interest Paid"
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: promo

Fires when a partner-issued promotional credit is applied to the account. The postedInternalTransactionData.partnerAdjustmentType will be partnerPromo. This event is always isCredit: true and transactionStatus: completed. No network data is present.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "dba1d725-b89b-4bd6-bc05-2e96e8c1be05",
      "events": [
        {
          "eventIdentifier": "cc7875b3-4e5a-4d95-bb8b-77572afff226",
          "eventType": "transaction",
          "eventDateTime": "2026-06-02T03:38:27.453Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "5e3f7cc7-055e-4ada-afe0-c23023f9c722",
              "transactionIdentifier": "b97e8321-38f8-4635-85c7-1b58d4a898ac",
              "transactionType": "promo",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Partner Promo",
              "accountIdentifier": "54c08bcf-8817-4f1a-93d0-761d54b91f57",
              "currency": "USD",
              "postedDateTime": "2026-07-15T17:00:00.836Z",
              "transactionAmount": 350.38,
              "isCredit": true,
              "purses": [
                {
                  "purseIdentifier": "a2fd286f-aef7-4a10-90a1-e71f80695491",
                  "purseType": "primary",
                  "availableBalance": 152.28,
                  "ledgerBalance": 291.96,
                  "availableBalanceAsOfDateTime": "2026-07-15T17:00:00.837Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T17:00:00.837Z"
                }
              ],
              "postedInternalTransactionData": {
                "partnerAdjustmentType": "partnerPromo",
                "adjustmentIdentifier": "26719a73-ab46-42a9-8609-04c78e78bb66",
                "description": "Partner Promo"
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: billPay

Fires when a bill payment is debited or reversed on the account. A transactionTypeDescription of "Bill Pay" indicates a successful debit; "Bill Pay Reversal" indicates the payment was returned or canceled and funds were credited back (isCredit: true). The postedInternalTransactionData.transferIdentifier links to the originating billPayTransfer event.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "b29f416a-abd0-4120-8179-e9be9f9daef4",
      "events": [
        {
          "eventIdentifier": "ba87397e-58f3-48dd-a59e-7e51ec0f419c",
          "eventType": "transaction",
          "eventDateTime": "2026-04-13T18:12:16.145Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "bf526951-201a-4602-ae8f-299e76e436c7",
              "transactionIdentifier": "09436ddd-48f4-4ddc-bd4e-5effde7fa316",
              "transactionType": "billPay",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Bill Pay Reversal",
              "accountIdentifier": "d1a98403-c881-4368-bad5-948af662190c",
              "currency": "USD",
              "postedDateTime": "2026-07-15T17:04:55.950Z",
              "transactionAmount": 340.94,
              "isCredit": true,
              "purses": [
                {
                  "purseIdentifier": "2f26543e-cc38-4c89-895e-10dbfd16ef31",
                  "purseType": "primary",
                  "availableBalance": 3.31,
                  "ledgerBalance": 444.46,
                  "availableBalanceAsOfDateTime": "2026-07-15T17:04:55.950Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T17:04:55.950Z"
                }
              ],
              "postedInternalTransactionData": {
                "transferIdentifier": "9731a01e-b70b-4b01-808e-02876f627af2",
                "description": "CHEVRON 00293847",
                "transferType": "billPay"
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: achOut

Fires when an outbound ACH transfer posts. The postedInternalTransactionData.bankData block contains the destination bank details (masked). When transactionStatus is reversed, funds have been returned to the account and isCredit is true. The postedInternalTransactionData.transferIdentifier links to the originating achTransfer event.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "d5135455-e9f3-4292-bbb1-67c32b675e8a",
      "events": [
        {
          "eventIdentifier": "b3a17294-37e6-4978-b2eb-1553f342178b",
          "eventType": "transaction",
          "eventDateTime": "2026-05-12T13:04:42.438Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "ff9cd9a5-c996-4a2b-a994-9fb08a05eabb",
              "transactionIdentifier": "f337219f-b80e-46b6-9281-bdfcbba568df",
              "transactionType": "achOut",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Transfer",
              "accountIdentifier": "bb550af2-37ea-46f8-850e-0a0a6f84c762",
              "currency": "USD",
              "postedDateTime": "2026-07-15T21:19:55.185Z",
              "transactionAmount": 300.06,
              "isCredit": false,
              "purses": [
                {
                  "purseIdentifier": "c80998da-b1f3-43ce-9713-5955d5734fc1",
                  "purseType": "primary",
                  "availableBalance": 319.27,
                  "ledgerBalance": 62.01,
                  "availableBalanceAsOfDateTime": "2026-07-15T21:19:55.187Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T21:19:55.187Z"
                }
              ],
              "postedInternalTransactionData": {
                "transferIdentifier": "dd9d13eb-4158-49b2-94f2-baecf7201781",
                "description": "Elena Caldwell, REGIONS BANK",
                "transferType": "achOut",
                "bankData": {
                  "bankName": "ACME SAVINGS BANK",
                  "accountNumber": "9563651637",
                  "routingNumber": "322271627",
                  "firstName": "Elena",
                  "lastName": "Herrera",
                  "accountType": "CHECKING"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: achIn

Fires when an inbound ACH debit posts against the account (the account is being debited by an external party). The postedInternalTransactionData.achCategoryCode indicates the SEC code class. Note that achIn transactions only generate a webhook when they post — there is no pending webhook for inbound ACH debits.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "23970010-810b-4f90-bfb0-a2b7e8f67ae9",
      "events": [
        {
          "eventIdentifier": "20675d25-c81e-4316-a238-855c22a798c7",
          "eventType": "transaction",
          "eventDateTime": "2026-06-13T17:53:00.411Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "9b52454f-a329-4a94-8d41-9f5776ec3b77",
              "transactionIdentifier": "4755e33f-3b6c-4c69-b0c1-2bb4ba45126a",
              "transactionType": "achIn",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Debit",
              "accountIdentifier": "b8f8229b-4030-4c55-b142-39d01b518d23",
              "currency": "USD",
              "postedDateTime": "2026-07-15T20:39:50.211Z",
              "transactionAmount": 139.5,
              "isCredit": false,
              "purses": [
                {
                  "purseIdentifier": "25dd3dac-0dd2-4590-b82d-29ac5dd82730",
                  "purseType": "primary",
                  "availableBalance": 207.77,
                  "ledgerBalance": 279.44,
                  "availableBalanceAsOfDateTime": "2026-07-15T20:39:50.210Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T20:39:50.210Z"
                }
              ],
              "postedInternalTransactionData": {
                "description": "WALMART SUPERCENTER 2918",
                "achCategoryCode": "it",
                "transferType": "None"
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: partnerTransferIn

Fires when a partner-initiated disbursement or ACH pull credit posts to the account. The postedInternalTransactionData.partnerAdjustmentType identifies the specific disbursement category (e.g., disbursement). The transferType will be achPull for ACH pull funding flows. Partners can use the adjustmentIdentifier to correlate this event with their originating disbursement request.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "a1e800f8-9a64-4a71-af63-431e3787e42a",
      "events": [
        {
          "eventIdentifier": "f4f9e444-4ce7-4c3a-adc6-5ccc49b0baa7",
          "eventType": "transaction",
          "eventDateTime": "2026-06-15T14:28:43.318Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "43526364-99b4-42c1-b96f-0d0e28e97fb8",
              "transactionIdentifier": "e9a4d73d-7d9d-4764-b95b-1143f03dba8c",
              "transactionType": "partnerTransferIn",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Transfer",
              "accountIdentifier": "c2f25617-c434-488d-b895-a073c531e2f8",
              "currency": "USD",
              "postedDateTime": "2026-07-15T21:14:55.889Z",
              "transactionAmount": 246.59,
              "isCredit": true,
              "purses": [
                {
                  "purseIdentifier": "313f154b-0ea9-433e-b5af-ceecc45ae123",
                  "purseType": "primary",
                  "availableBalance": 381.51,
                  "ledgerBalance": 460.82,
                  "availableBalanceAsOfDateTime": "2026-07-15T21:14:55.890Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T21:14:55.890Z"
                }
              ],
              "postedInternalTransactionData": {
                "partnerAdjustmentType": "disbursement",
                "adjustmentIdentifier": "354b0856-fff8-47a0-80da-394aac4b270e",
                "description": "ODP - Acme Staffing LLC",
                "transferType": "None"
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: purseTransfer

Fires when funds are moved between purses within the same account (e.g., from a savings vault to the primary spending purse). The postedInternalTransactionData.transferIdentifier links to the originating purse transfer request. The description field identifies the source purse by name.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "f50fc964-969e-4c24-83f4-221ad87158bf",
      "events": [
        {
          "eventIdentifier": "0fb73282-d3d0-46c0-af63-1f895137a84e",
          "eventType": "transaction",
          "eventDateTime": "2026-05-22T02:18:32.779Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "14c242dd-07c6-45a3-a769-3a3c76a0e17c",
              "transactionIdentifier": "e1780609-bb1a-445a-9531-3b4b3f28c1d3",
              "transactionType": "purseTransfer",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Transfer",
              "accountIdentifier": "146b0cdb-b5ee-45bf-a995-7e93bc274cba",
              "currency": "USD",
              "postedDateTime": "2026-07-15T14:29:55.836Z",
              "transactionAmount": 304.73,
              "isCredit": true,
              "purses": [
                {
                  "purseIdentifier": "2d029b6d-c5e1-436b-add6-37812fb78a47",
                  "purseType": "primary",
                  "availableBalance": 162.55,
                  "ledgerBalance": 393.3,
                  "availableBalanceAsOfDateTime": "2026-07-15T14:29:55.837Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T14:29:55.837Z"
                }
              ],
              "postedInternalTransactionData": {
                "transferIdentifier": "badbcc9b-5155-42b5-9ed2-90a5150eee41",
                "description": "Transfer from Emergency Fund",
                "transferType": "purseTransfer"
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: peerTransfer

Fires when a peer-to-peer transfer (person-to-person payment between Green Dot accounts) posts. The postedInternalTransactionData.description contains a masked recipient name. The isCredit flag indicates direction: false for the sender, true for the receiver. No network data is present.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "25c813ac-e560-4c6e-8157-4a21627f0bfd",
      "events": [
        {
          "eventIdentifier": "6606c91f-a6dc-4ea7-b060-7d4df34ef4a8",
          "eventType": "transaction",
          "eventDateTime": "2026-05-22T09:14:51.303Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "c59ff8e5-4ec4-4175-a643-ad92bc671089",
              "transactionIdentifier": "d5779fb2-25dc-4120-a32d-35f136b43cd1",
              "transactionType": "peerTransfer",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Transfer",
              "accountIdentifier": "871f27c3-6783-47b6-b9ff-4db60f018864",
              "currency": "USD",
              "postedDateTime": "2025-06-25T07:04:55.438Z",
              "transactionAmount": 72.86,
              "isCredit": false,
              "purses": [
                {
                  "purseIdentifier": "98e23af2-3e4c-4579-96ac-2b691335456b",
                  "purseType": "primary",
                  "availableBalance": 24.57,
                  "ledgerBalance": 472.33,
                  "availableBalanceAsOfDateTime": "2025-06-25T07:04:55.440Z",
                  "ledgerBalanceAsOfDateTime": "2025-06-25T07:04:55.440Z"
                }
              ],
              "postedInternalTransactionData": {
                "transferIdentifier": "841769c2-c5fe-4613-b03a-2d9b1314b517",
                "description": "Money sent to BjIyFjRA oyUhvtYN",
                "transferType": "peerTransfer"
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: eCash

Fires when an eCash transaction (barcode-based cash load at a participating retailer) posts. The postedInternalTransactionData.retailSaleData block identifies the store. This is always isCredit: true from the account holder's perspective. The transferType in postedInternalTransactionData is eCashSend.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "ca442f9e-fe75-42e0-aed9-20f9486d6698",
      "events": [
        {
          "eventIdentifier": "67edc989-ff7b-423b-b1af-3fc0585bcf0a",
          "eventType": "transaction",
          "eventDateTime": "2026-04-15T13:56:40.689Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "0abe9a13-415a-4e40-8a72-9969804f7d6a",
              "transactionIdentifier": "0580f766-74db-4fbc-975a-436fddc96853",
              "transactionType": "eCash",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Transfer",
              "accountIdentifier": "1e663d84-63f1-4490-a8f8-66af4f0233bf",
              "currency": "USD",
              "postedDateTime": "2025-06-19T11:20:14.000Z",
              "transactionAmount": 95.34,
              "isCredit": true,
              "purses": [
                {
                  "purseIdentifier": "da3e1d64-30b9-4145-8fd1-13fc22ba486e",
                  "purseType": "primary",
                  "availableBalance": 335.01,
                  "ledgerBalance": 238.57,
                  "availableBalanceAsOfDateTime": "2025-06-19T11:20:14.000Z",
                  "ledgerBalanceAsOfDateTime": "2025-06-19T11:20:14.000Z"
                }
              ],
              "postedInternalTransactionData": {
                "description": "WALGREENS #8812",
                "transferType": "eCashSend",
                "retailSaleData": {
                  "city": "Columbus",
                  "state": "AZ",
                  "merchantName": "COSTCO WHSE #0872",
                  "storeNumber": "42"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: InstantFundsTransfer

Fires when an instant funds transfer (OCT/push-to-card debit) posts against the account. This is the debit leg of an outbound Instant Transfer. The postedInternalTransactionData.partnerAdjustmentType is anyDebitOut. A companion InstantTransferFee transaction fires at the same time if a fee applies.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "7789070a-4360-4cc7-9a6d-9ae613fb5a15",
      "events": [
        {
          "eventIdentifier": "76f1432d-c023-4507-ae21-5c0bc93874ef",
          "eventType": "transaction",
          "eventDateTime": "2026-04-25T03:49:27.324Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "82809a44-36c7-4f7f-950a-7d718522a77f",
              "transactionIdentifier": "daf7737b-e773-4c30-9890-353db6ca269a",
              "transactionType": "InstantFundsTransfer",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Instant Funds Transfer",
              "accountIdentifier": "8a8b369a-791d-41ee-b8a7-c7fdbdae023d",
              "currency": "USD",
              "postedDateTime": "2026-07-15T21:15:55.626Z",
              "transactionAmount": 86.49,
              "isCredit": false,
              "purses": [
                {
                  "purseIdentifier": "6db78833-3589-4456-987e-cd46d8db6c32",
                  "purseType": "primary",
                  "availableBalance": 459.93,
                  "ledgerBalance": 249.82,
                  "availableBalanceAsOfDateTime": "2026-07-15T21:15:55.627Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T21:15:55.627Z"
                }
              ],
              "postedInternalTransactionData": {
                "partnerAdjustmentType": "anyDebitOut",
                "adjustmentIdentifier": "e9187db3-9158-447f-a43c-fbd7535d84a8",
                "description": "Partner Xfer",
                "transferType": "None"
              }
            }
          ]
        }
      ]
    }
  ]
}

transactionType: InstantTransferFee

Fires alongside InstantFundsTransfer when a fee is charged for an instant transfer. The fees array contains a single entry with feeType: "partnerFee". This is always isCredit: false.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "472a8f1a-a00a-433c-80a6-35f78323625f",
      "events": [
        {
          "eventIdentifier": "82456e78-68f8-47cf-a6f2-87274f5d2869",
          "eventType": "transaction",
          "eventDateTime": "2026-04-18T07:58:54.224Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "1ad72a2a-2d06-4e73-ba3d-33e6858197c7",
              "transactionIdentifier": "f79a2386-35c7-456d-80bc-f72a0426db8b",
              "transactionType": "InstantTransferFee",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Instant Transfer Fee",
              "accountIdentifier": "d34785c3-db97-4e85-9c53-f7d55532a283",
              "currency": "USD",
              "postedDateTime": "2026-07-15T21:14:55.498Z",
              "transactionAmount": 220.46,
              "isCredit": false,
              "purses": [
                {
                  "purseIdentifier": "004f903d-f919-4065-ab6e-a5b6286d0685",
                  "purseType": "primary",
                  "availableBalance": 385.18,
                  "ledgerBalance": 321.27,
                  "availableBalanceAsOfDateTime": "2026-07-15T21:14:55.500Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T21:14:55.500Z"
                }
              ],
              "fees": [
                {
                  "feeType": "partnerFee",
                  "amount": 474.22,
                  "currency": "USD",
                  "description": "Instant Transfer Fee"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

transactionType: tellerCashWithdrawal

Fires when a cardholder makes a cash withdrawal at a bank teller (OTC cash advance). The cardAcceptor block identifies the bank branch. This may carry a companion fee transaction if the bank charges an OTC fee. The authorization timestamp (authorizationDateTime) may precede posting by a significant interval.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "44f4e591-28f8-4192-956c-a8527449ffed",
      "events": [
        {
          "eventIdentifier": "42704a8e-3a50-4786-81c7-49a9c944898c",
          "eventType": "transaction",
          "eventDateTime": "2026-06-25T14:39:52.836Z",
          "transactions": [
            {
              "parentTransactionIdentifier": "b977f366-f69f-42f7-9a4e-b14555b2fe9e",
              "transactionIdentifier": "66700067-8f49-42cd-8b57-090bf85d230b",
              "transactionType": "tellerCashWithdrawal",
              "transactionStatus": "completed",
              "transactionTypeDescription": "Teller Cash Withdrawal",
              "accountIdentifier": "5db9d37b-6ac5-4908-b182-bed8a1788f7d",
              "bin": "543821",
              "last4Pan": "9976",
              "currency": "USD",
              "postedDateTime": "2026-07-15T14:25:34Z",
              "transactionAmount": 215.42,
              "isCredit": false,
              "retrievalReferenceNumber": "200317167123",
              "userIdentifier": "1de757f8-2d72-4e11-9224-fa116eab64e4",
              "paymentIdentifier": "d4b300a7-b680-4a60-b814-bcaea5f4be09",
              "purses": [
                {
                  "purseIdentifier": "fc63e4a3-80f8-4660-809c-9c073e3b082d",
                  "purseType": "primary",
                  "availableBalance": 78.5,
                  "ledgerBalance": 413.86,
                  "availableBalanceAsOfDateTime": "2026-07-15T16:10:00.580Z",
                  "ledgerBalanceAsOfDateTime": "2026-07-15T16:10:00.580Z"
                }
              ],
              "networkTransactionData": {
                "authorizationDateTime": "2026-07-14T19:18:29Z",
                "cardAcceptor": {
                  "merchantId": "000333000333003",
                  "addressLine1": "",
                  "postalCode": "21201",
                  "merchantName": "ACME BANK BRANCH",
                  "merchantIndustryCode": "6010",
                  "merchantIndustryCategory": "Service Providers",
                  "city": "Indianapolis",
                  "stateProvReg": "CA",
                  "merchantIndustryDescription": "Financial institutions -  manual cash disbursements"
                },
                "postTransactionData": {
                  "localDateTime": "2026-07-14T15:18:29",
                  "postingDateTime": "2026-05-27T20:17:49.896Z",
                  "approvalCode": "456789"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

Transfer Events

achTransfer - ACH transfer lifecycle status update

"eventType": "achTransfer"


Sample Payload

Fires at each lifecycle stage of an ACH transfer (both achOut and achPull). The transfer.achTransferType identifies the direction. Status values include pending, successful, and returned. When returned, the returnReasonCode and returnDateTime fields are added. A successful achPull generates a companion transaction/partnerTransferIn event when funds post.

Note: The sample below shows an achOut in pending status. The same structure applies for achPull — only achTransferType differs.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "06e8f91b-a174-4de3-ba36-df6cd7933380",
      "events": [
        {
          "eventIdentifier": "313e6ceb-a717-47de-9af5-95dbd7474184",
          "eventType": "achTransfer",
          "eventDateTime": "2026-07-21T07:17:28.179Z",
          "transfer": {
            "achTransferType": "achOut",
            "transferIdentifier": "e4b93c1a-e17a-40ec-843b-f5cde4874be3",
            "accountIdentifier": "e1e266e5-f04b-42c6-8afa-fc0892bcab30",
            "submissionDateTime": "2026-07-15T14:23:45Z",
            "effectiveDeliveryDateTime": "2026-07-16T07:00:00Z",
            "transactionAmount": 343.22,
            "achTransferStatus": "pending"
          }
        }
      ]
    }
  ]
}

singlePhaseTransfer - Single-phase transfer result

"eventType": "singlePhaseTransfer"


Sample Payload

Fires when a single-phase card transfer completes or is declined. The singlePhaseTransfer array contains the result with a response object that includes network and processor status codes. A transferStatus of Declined includes networkStatusCode and networkStatusDescription from the card network.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "8626fef1-e847-42ee-ad56-a3229ddf0d71",
      "events": [
        {
          "eventIdentifier": "0d58906d-fdb7-4377-8d9d-f93b1cb9d81e",
          "eventType": "singlePhaseTransfer",
          "eventDateTime": "2026-05-09T10:20:57.653Z",
          "singlePhaseTransfer": [
            {
              "transferIdentifier": "0dab7ca0-c1c7-41f9-9447-5ea3f10434d9",
              "transactionAmount": 40.98,
              "transferStatus": "Completed",
              "transferDateTime": "2026-07-22T16:05:33Z",
              "response": {
                "code": "0",
                "subCode": "0",
                "description": "Success",
                "processorCode": "",
                "networkStatusCode": "",
                "networkStatusDescription": ""
              }
            }
          ]
        }
      ]
    }
  ]
}

billPayTransfer - Bill payment transfer lifecycle status update

"eventType": "billPayTransfer"


Sample Payload

Fires at each lifecycle stage of a bill payment. The billPayTransfer.transferStatus reflects the payment status (completed, failed, rejected, canceled). The paymentStatus reflects the schedule state (scheduled, inProcess, failed, canceled). A companion transaction/billPay event fires when funds are debited or returned. The confirmationNumber is the Fiserv confirmation ID.

Note: deliveryDate is the Fiserv-estimated delivery date, typically 5 business days after paymentDate. paymentMemo and note are optional partner-supplied fields.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "b1f82dfa-e46a-4214-9112-ca358eda877c",
      "events": [
        {
          "eventIdentifier": "6a1a1575-625f-47ab-a640-bf6b7c1b8f30",
          "eventType": "billPayTransfer",
          "eventDateTime": "2026-05-08T12:44:09.823Z",
          "billPayTransfer": {
            "paymentIdentifier": "7bc15fcf-1a94-430b-8cad-e6d6dbbc50fc",
            "transferIdentifier": "489bc486-d73b-4f56-8ce7-4cf50572afea",
            "transferStatus": "canceled",
            "payeeIdentifier": "7fa48bd8-9b91-41ed-89e3-86c7daa574a1",
            "paymentStatus": "canceled",
            "amount": 104.66,
            "paymentDate": "2026-07-18",
            "deliveryDate": "2026-07-25",
            "paymentMemo": "Rent",
            "note": "",
            "confirmationNumber": "434083790854",
            "payeeName": "Comcast",
            "frequencyType": "monthly"
          }
        }
      ]
    }
  ]
}

aFTTransfer - Account Funding Transfer (AFT) lifecycle status update

"eventType": "aFTTransfer"


Sample Payload

Fires at each stage of an Account Funding Transfer (AFT/A2A pull). The aftTransfer.aftTransferType identifies the flow (e.g., A2AIn). Status progression: PendingComplete (funds reserved) → Completed. A companion transaction/networkCardLoad event fires when funds post to the account. The transactionFeeAmount reflects any applicable AFT fee.

Note: Some partners may not use this event type.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "044033a2-84a9-4420-94e4-82a7b7274a40",
      "events": [
        {
          "eventIdentifier": "361b3d7a-16c6-4402-bd20-b42fe25464f2",
          "eventType": "aFTTransfer",
          "eventDateTime": "2026-06-25T12:54:57.955Z",
          "aftTransfer": {
            "aftTransferType": "A2AIn",
            "transferId": "c7f9ecee-aa8b-4d67-a044-34a7bcac2f04",
            "accountIdentifier": "91c3c14d-2d04-4cc2-8363-1f4bcc0cd29c",
            "submissionDateTime": "2026-07-10T11:16:18.270Z",
            "postedDateTime": "2026-07-10T11:17:22.752Z",
            "transactionAmount": 202.58,
            "transactionFeeAmount": "0.0",
            "currency": "USD",
            "transferStatus": "Completed",
            "transferStatusReason": "TransferCompleted"
          }
        }
      ]
    }
  ]
}

oCTA2AOutTransfer - OCT outbound A2A transfer initialization

"eventType": "oCTA2AOutTransfer"


Sample Payload

Fires when an outbound OCT (Original Credit Transaction) A2A transfer is submitted. The inner gftTransfer object contains the transfer details. This event fires at submission (transferStatus: "pending") before the card network processes the OCT. A companion transaction/InstantFundsTransfer event fires when the debit posts, and transaction/InstantTransferFee fires if a fee applies.

Note: Some partners may not use this event type.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "37827cbc-8905-479a-9c05-1f86aee0654e",
      "events": [
        {
          "eventIdentifier": "3d16948d-add2-4237-bc39-8dc1a02a4aeb",
          "eventType": "oCTA2AOutTransfer",
          "eventDateTime": "2026-05-16T07:17:27.597Z",
          "gftTransfer": {
            "transferType": "a2aout",
            "transferIdentifier": "b97a30ea-8a32-4bf7-aac5-2c45bbc3d6ff",
            "accountIdentifier": "03e3d62e-9ab7-4cea-85b7-4d1549cbbabe",
            "submissionDateTime": "2026-07-25T20:44:02Z",
            "transactionAmount": 16.36,
            "transactionType": "InstantFundsTransfer",
            "transferStatus": "pending",
            "description": "Instant Transfer to card ending ****"
          }
        }
      ]
    }
  ]
}

gftTransfer - GFT outbound transfer initialization

"eventType": "gftTransfer"


Sample Payload

Fires when a GFT (Green Dot Funds Transfer) outbound transfer is submitted. The gftTransfer object shares the same payload structure as oCTA2AOutTransfer. Partners should expect transferStatus: "pending" on the initial event. A companion transaction/InstantFundsTransfer event fires when the debit posts.

Note: Sample modeled after oCTA2AOutTransfergftTransfer shares the same payload shape.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "c841d5dc-7385-4b6f-b06b-9de0f57c72ce",
      "events": [
        {
          "eventIdentifier": "bc503429-6081-4b91-992e-5413f7d56bcb",
          "eventType": "gftTransfer",
          "eventDateTime": "2026-06-22T21:51:25.841Z",
          "gftTransfer": {
            "transferType": "a2aout",
            "transferIdentifier": "f36e1ae2-6231-4a21-ac3a-0785f885a798",
            "accountIdentifier": "ad751d76-0e98-428b-b80d-5ee1fd43b760",
            "submissionDateTime": "2026-07-25T20:44:02Z",
            "transactionAmount": 81.31,
            "transactionType": "InstantFundsTransfer",
            "transferStatus": "pending",
            "description": "Instant Transfer to card ending ****"
          }
        }
      ]
    }
  ]
}

affiliateTransfer - Affiliate transfer completed or reversed

"eventType": "affiliateTransfer"


Sample Payload

Fires when an affiliate-initiated transfer (e.g., a partner financial product payment) settles or fails. The transfer.transferType identifies the direction (AffiliateTransferOut). The partnerReferenceData field carries the partner's opaque reference payload (base64-encoded). The affiliateSettlementId links to the settlement batch.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "37b27c0a-542e-42e4-8c18-d82b44e46abc",
      "events": [
        {
          "eventIdentifier": "7e9c2bd3-23c7-4281-94a8-61c66d0ab91c",
          "eventType": "affiliateTransfer",
          "eventDateTime": "2026-07-05T19:34:01.503Z",
          "transfer": {
            "transferIdentifier": "941373f7-367c-4595-89be-cd93cf7d2307",
            "transferType": "AffiliateTransferOut",
            "transferDate": "2026-07-28T01:12:31Z",
            "transactionAmount": 285.13,
            "transferStatus": "Completed",
            "transferStatusReason": "Completed",
            "currency": "USD",
            "transactionDescription": "MEI Finance Payment",
            "partnerReferenceData": "bPiDdynuWyW1qfbI/wPXPW8mbjiQKnSXkMVh09gbtR9zT==",
            "affiliateSettlementId": "6d871b51-4014-4ad0-91b5-4cf921ccccf8"
          }
        }
      ]
    }
  ]
}

p2p - Peer-to-peer transfer request status

"eventType": "p2p"


Sample Payload

Fires when a P2P transfer request is created, accepted, declined, or expires. The transfer.transferStatus reflects the current state (Declined, Pending, Completed). The source and target blocks carry opaque identifiers linking to the sending and receiving accounts. This event tracks the P2P request lifecycle before funds move; the p2pTransfer event fires when the funds transfer executes.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "3289c643-25a4-45b5-a153-bed55f9936d6",
      "events": [
        {
          "eventIdentifier": "97077b92-023d-4aba-9541-57bd2fe07611",
          "eventType": "p2p",
          "eventDateTime": "2026-04-19T22:53:40.348Z",
          "transfer": {
            "transferIdentifier": "9ccb3d37-801a-4b1a-adef-1985d2e4adef",
            "transferStatus": "Declined"
          },
          "source": {
            "identifier": "89474ff8-3103-4c5b-b01d-a5ad66029f28",
            "linkId": "0f94f9ac-2e22-4159-ac28-457c3b7aefac"
          },
          "target": {
            "identifier": "895213b0-018d-4fdb-af82-e5ce1c9479d2",
            "linkId": "fb4a53eb-a9f2-41bc-8da6-c49b86cf27ed"
          }
        }
      ]
    }
  ]
}

p2pTransfer - Peer-to-peer funds transfer executed

"eventType": "p2pTransfer"


Sample Payload

Fires when the funds leg of a P2P transfer executes. The transfer.p2pEventType describes the recipient handling type (e.g., recipientAuto for auto-accept). The source and target blocks include account identifiers and masked name fields. The memo field carries the sender's optional payment note. The expirationDateTime indicates when an unaccepted P2P request would expire.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "4b5819a7-006a-4248-a303-baf13faa3036",
      "events": [
        {
          "eventIdentifier": "24ad4bc5-c5ee-481b-b696-202e48ac705e",
          "eventType": "p2pTransfer",
          "eventDateTime": "2026-04-23T09:54:43.714Z",
          "transfer": {
            "p2pEventType": "recipientAuto",
            "transferIdentifier": "818b9e96-78e5-4e06-a69f-fec0420345b2",
            "transferStatus": "Completed",
            "transferStatusReason": "None",
            "initiator": "78789962-6c27-40a0-bd5f-64fb8552a009",
            "amount": 387.14,
            "currency": "USD",
            "memo": "Happy Birthday!!",
            "initiatedDateTime": "2025-06-21T08:37:06Z",
            "expirationDateTime": "2025-06-28T08:37:06Z"
          },
          "source": {
            "accountIdentifier": "27f2eaab-5a25-4c60-adc0-7435f81b71b0",
            "firstName": "bWgUiQdt",
            "lastName": "rhuRuhup"
          },
          "target": {
            "accountIdentifier": "b704c24b-55d8-4a11-9d86-4af975e4b6ca",
            "firstName": "Bob",
            "lastName": "Robert"
          }
        }
      ]
    }
  ]
}

failedTransfer - Transfer failed due to NSF on retry

"eventType": "failedTransfer"


Sample Payload

Fires when a retried disbursement transfer fails due to Non-Sufficient Funds (NSF). This event references the original disbursement via transfer.transferIdentifier. The transferStatusReason identifies the failure cause (e.g., insufficientFunds). Partners should use this event to trigger retry logic or customer notification flows.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "8830e27c-87d3-4b7e-8a6e-ba5ee170a8cf",
      "events": [
        {
          "eventIdentifier": "0dfbb660-bb3f-479a-a5db-656e83343061",
          "eventType": "failedTransfer",
          "eventDateTime": "2026-04-12T17:27:42.479Z",
          "transfer": {
            "transferType": "disbursementOut",
            "transferIdentifier": "9d946f42-a0c7-4c96-a3eb-51e43964cf42",
            "accountIdentifier": "c50b1087-87ff-4feb-b143-a07444d83ada",
            "transactionAmount": 35.43,
            "transferStatus": "failed",
            "transferStatusReason": "insufficientFunds"
          }
        }
      ]
    }
  ]
}

Deposits, Checks & ACH

checkDeposit - Mobile remote deposit capture (MRDC) status update

"eventType": "checkDeposit"


Sample Payload

Fires at each stage of a mobile check deposit lifecycle: submitted, under review, approved (funds scheduled), declined, canceled, or returned. The transfer.checkDeposit.checkDepositStatus reflects the current state. The postingInfos array (present when checkDepositStatus: "approved") details the scheduled posting including fundsAvailableDate. The purses block provides balance context at the time of the event.

Note: checkDepositSubStatus provides granular lifecycle detail (e.g., fundsScheduled, pendingUserAcceptance, pendingAgentReview, declinedByAgent, fundsReversed). Partners should act on checkDepositSubStatus for downstream decisioning.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "f50cd79a-2229-4aa5-b9b1-75998a36066e",
      "events": [
        {
          "eventIdentifier": "5f2fa5d6-abf3-4cf6-80ce-2290dad5e902",
          "eventType": "checkDeposit",
          "eventDateTime": "2026-06-01T13:52:31.208Z",
          "transfer": {
            "accountIdentifier": "89f2544e-6a9d-4713-85c0-48a0fea47acb",
            "transferIdentifier": "21af8ae6-8966-4721-bc15-b24ab10c3d90",
            "transferType": "MrdcX9Transfer",
            "transferStatus": "pending",
            "checkDeposit": {
              "checkDepositStatus": "approved",
              "checkDepositSubStatus": "fundsScheduled",
              "checkAmount": "247.50",
              "checkNumber": "527",
              "checkSubmitDate": "2026-07-15T14:23:43.897Z",
              "postingInfos": [
                {
                  "postingInfoToken": "1ff8ef89-ae0c-44ef-9f90-5a2bf7f12e17",
                  "postingInfoStatus": "pending",
                  "transactionAmount": 209.51,
                  "fundsAvailableDate": "2026-07-22T14:23:04Z",
                  "depositDate": "2026-07-22T14:23:04.354Z",
                  "transferType": "Scheduled"
                }
              ]
            },
            "purses": [
              {
                "purseIdentifier": "47dd2295-8acb-4325-a722-475040b8acd9",
                "purseType": "Primary",
                "availableBalance": 175.44,
                "ledgerBalance": "312.45",
                "availableBalanceAsOfDateTime": "2026-06-05T08:12:33Z",
                "ledgerBalanceAsOfDateTime": "2026-06-19T11:45:22Z"
              }
            ]
          }
        }
      ]
    }
  ]
}

directDepositSwitch - Direct deposit switch status update

"eventType": "directDepositSwitch"


Sample Payload

Fires when a direct deposit switch request (via an atomic payroll switching vendor) changes state. The directDepositSwitch.Status field reflects the outcome (Pending, Completed, Failed). The StatusReason provides the failure cause if applicable (e.g., bad-credentials). Depositor identifies the employer or payroll provider.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "14ba3ee5-274e-4917-b9fe-174d8c931da8",
      "events": [
        {
          "eventIdentifier": "f774f6d2-4cf4-4b65-a6d8-518ff95908d2",
          "eventType": "directDepositSwitch",
          "eventDateTime": "2026-07-23T04:27:11.851Z",
          "directDepositSwitch": {
            "accountIdentifier": "4998b1de-9ace-4a67-97c1-4e5c7fa42b7c",
            "switchId": "a058f43a-e644-48e7-a464-e32da435ddb5",
            "Vendor": "Atomic",
            "AmountType": "All",
            "Status": "Failed",
            "StatusReason": "bad-credentials",
            "LastEventDateUTC": "2025-06-24T23:38:43.39Z",
            "Depositor": "Paychex Flex"
          }
        }
      ]
    }
  ]
}

achNOCAlert - ACH Notification of Change received

"eventType": "achNOCAlert"


Sample Payload

Fires when the receiving bank returns a Notification of Change (NOC) for an outbound ACH transfer, indicating that account or routing information requires correction. The achNOCInfo.nocCode identifies the specific correction required (C01–C14). The encryptedAccountData block contains the corrected account number in encrypted form. Not all NOC codes return all correction fields — see the NOC code mapping for which fields are populated per code.

Note: originalCustomerName, correctedFirst15CustomerName, originalLast4AccountNumber, correctedLast4AccountNumber, originalRoutingNumber, and correctedRoutingNumber are all conditional — presence depends on the NOC code returned.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "3f347fc9-d6d3-43af-b9cb-d9a0434f98f7",
      "events": [
        {
          "eventIdentifier": "8d4163be-5933-4aa4-85cc-843b7c8514f1",
          "eventType": "achNOCAlert",
          "eventDateTime": "2026-06-20T17:49:30.576Z",
          "achNOCInfo": {
            "achTransferType": "achOut",
            "transferIdentifier": "3e0d4e2d-b7fa-43b9-8654-e6a4a3c1b121",
            "nocCode": "C28",
            "originalCustomerName": "Caleb Caldwell",
            "correctedFirst15CustomerName": "",
            "originalLast4AccountNumber": "7832",
            "correctedLast4AccountNumber": "    ",
            "encryptedAccountData": {
              "version": "EC_v1",
              "ephemeralPublicKey": "C6o+EAdv/2ep6nbUepyO6v3R5dWRHfKesLFHrhFAiRGp/Qof027XlgY2HkqibhyNJhKIukBK3FmLwUOHjY5iZCez=",
              "publicKeyHash": "s2GhqSgE3QJIfRaFXrRDBM8Xxoq=",
              "data": "eGboMkns1nmVvi082CtteR+QwYxvcJTr8Pjo1s+2Ljy4qlnzonqTnw0ubHWwnbSLPcyWp5EGtOpKOC8mC+mq+6dKOTvd5Jji7eNEFvM+QFY7y4fGrwOaRpAlO4hzlAi+="
            }
          }
        }
      ]
    }
  ]
}

adjustmentFinalStatus - Adjustment reached final disposition

"eventType": "adjustmentFinalStatus"


Sample Payload

Fires when an adjustment (disbursement, dispute, or partner credit) reaches its final status (Posted, Reversed, Failed). The adjustmentEvent.adjustmentType identifies the category (e.g., Disbursement, AnyDebitOutReversal). Partners can use this event to confirm that a previously initiated adjustment has been fully resolved without polling the adjustment API.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "f66e9081-8d69-4dd2-8dae-589914ad6c41",
      "events": [
        {
          "eventIdentifier": "be0a940c-98bf-4bf3-a168-5c90a7ee905a",
          "eventType": "adjustmentFinalStatus",
          "eventDateTime": "2026-05-27T02:17:56.561Z",
          "adjustmentEvent": {
            "adjustmentIdentifier": "f996d162-3bf2-471e-892e-d5793bcf9afa",
            "accountIdentifier": "a368af9d-7b83-4429-82a9-9b2710e90043",
            "eventDateTime": "2026-05-25T14:36:39.784Z",
            "amount": 183.47,
            "currency": "USD",
            "adjustmentType": "Disbursement",
            "adjustmentDescription": "ODP - Fictional Dental Services LLC",
            "fee": 16.2,
            "finalStatus": "Posted"
          }
        }
      ]
    }
  ]
}

Statements & Documents

statementReady - Monthly statement is available

"eventType": "statementReady"


Sample Payload

Fires when a monthly statement becomes available for an account. The statement.statementPeriod is formatted as YYYYMM. Partners should use this event to notify cardholders and to trigger any statement retrieval or archival workflows.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "f723d235-77d2-4b9b-af65-44bfc009bff1",
      "events": [
        {
          "eventIdentifier": "d194934a-2cfe-4b0f-98ce-9f12e9e1d78b",
          "eventType": "statementReady",
          "eventDateTime": "2026-06-06T15:13:22.916Z",
          "statement": {
            "accountIdentifier": "1fd15933-f532-400e-b813-3c768f168037",
            "statementPeriod": "202607",
            "statementPeriodStartDate": "2026-07-01",
            "statementPeriodEndDate": "2026-07-31"
          }
        }
      ]
    }
  ]
}

taxDocumentReady - Tax document is available

"eventType": "taxDocumentReady"


Sample Payload

Fires when an annual tax document (e.g., 1099-INT) is generated and available for the account. The taxDocument.taxDocumentYear is a four-digit year string. The taxDocumentType identifies the IRS form type. This event is seasonal and fires once per eligible account at tax document generation time (typically January–February).

JSON

{
  "accounts": [
    {
      "accountIdentifier": "f6d8823a-8926-4a1d-97f2-a38d6f8cf5d5",
      "events": [
        {
          "eventIdentifier": "5e7892d1-faa7-4288-a9e5-f4ce71fc6922",
          "eventType": "taxDocumentReady",
          "eventDateTime": "2026-06-11T08:56:38.818Z",
          "taxDocument": {
            "accountIdentifier": "d23d11cc-d03b-4d0b-8331-6a16a3a326ee",
            "taxDocumentYear": "2024",
            "taxDocumentPeriodStartDate": "2024-01-01",
            "taxDocumentPeriodEndDate": "2024-12-31",
            "taxDocumentType": "1099-INT"
          }
        }
      ]
    }
  ]
}

Notifications & Alerts

overdraftNotification - Overdraft protection event triggered

"eventType": "overdraftNotification"


Sample Payload

Fires when an overdraft protection event occurs — including enrollment, tier changes, cushion usage, and balance notifications. The notificationTypeKey identifies the specific notification subtype (e.g., "201" for a subsequent overdraft premium notification). The extensionAttributes object carries supplemental data relevant to the specific notification type, such as the triggering transaction amount or card last 4.

Note: odTier identifies the cardholder's overdraft tier (e.g., OD3). notificationMandatory indicates whether the notification is regulatory-required.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "5e23ad3b-5f92-4409-908b-73112e3d9d40",
      "events": [
        {
          "eventIdentifier": "e327feab-8f12-4416-ad73-76dcbe8dd583",
          "eventType": "overdraftNotification",
          "eventDateTime": "2026-06-18T00:33:12.187Z",
          "overdraftNotification": {
            "userIdentifier": "d2011385-2fe6-4cc0-8068-385b9d2cda72",
            "enrolled": true,
            "overdraftCushionLimit": 117.75,
            "odTier": "OD3",
            "notificationTypeDescription": "OverdraftPremiumSubsequent",
            "notificationTypeKey": "201",
            "notificationMandatory": true,
            "extensionAttributes": {
              "transactionAmount": 196.57
            }
          }
        }
      ]
    }
  ]
}

mailTracking - Physical card shipment status update

"eventType": "mailTracking"


Sample Payload

Fires at each stage of physical card delivery: shipped, delivered, returned. The deliveryStatus.deliveryStatusCode contains the machine-readable status; deliveryStatus.deliveryStatus is the human-readable description. The deliveryMethodCode identifies the shipping method (reg, onn, pse, rush, other). The trackingNumber is for internal use and is not intended for display to cardholders.

Note: paymentIdentifier is included in the deliveryStatus block in some configurations.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "cd99e3e7-039f-4803-989a-5ec97feeddea",
      "events": [
        {
          "eventIdentifier": "79110ba7-f059-4efe-902f-4b1689866fcb",
          "eventType": "mailTracking",
          "eventDateTime": "2026-05-23T15:41:45.602Z",
          "deliveryStatus": {
            "last4Pan": "8342",
            "deliveryMethod": "Regular",
            "deliveryMethodCode": "reg",
            "deliveryStatus": "Card At Local Post Office",
            "trackingNumber": "1Z2DHYLU7084285882",
            "shippedDate": "2026-06-10T07:00:00Z",
            "estimatedArrivalDate": "2026-06-24T07:00:00Z",
            "productMaterialType": "emvcdda",
            "deliveryStatusCode": "delivered",
            "bin": "374619",
            "cardHolderName": "In**id O**ei"
          }
        }
      ]
    }
  ]
}

mailTrackingSend - Card send notification triggered

"eventType": "mailTrackingSend"


Sample Payload

Fires when a card send notification event is generated — typically at the point of card production and initial shipment handoff, before standard mail tracking updates begin. The payload structure mirrors mailTracking with deliveryStatusCode: "shipped". Partners can use this event as the first signal that a physical card has entered the mail stream.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "cc6f06d5-cbc9-448c-ac34-6cc1a313f847",
      "events": [
        {
          "eventIdentifier": "e5bede8e-a9e6-47c4-a3bf-3424920657cb",
          "eventType": "mailTrackingSend",
          "eventDateTime": "2026-06-12T22:29:17.413Z",
          "deliveryStatus": {
            "last4Pan": "5118",
            "deliveryMethod": "Regular",
            "deliveryMethodCode": "reg",
            "deliveryStatus": "Card Mailed",
            "trackingNumber": "1ZIZL08Y3439042654",
            "shippedDate": "2026-07-15T07:00:00Z",
            "estimatedArrivalDate": "2026-07-22T07:00:00Z",
            "productMaterialType": "emvcdda",
            "deliveryStatusCode": "shipped",
            "bin": "465923",
            "cardHolderName": "Ca**eb O**ei"
          }
        }
      ]
    }
  ]
}

ammRule - Auto Money Movement rule executed or changed

"eventType": "ammRule"


Sample Payload

Fires for Auto Money Movement (AMM) rule lifecycle events including: ACH In triggers, date-driven scheduled executions, failed AMM executions, rule expiration reminders (3 days before end date), and goal-met/expiration notifications. The ammRule.ruleAction describes what triggered the event (Executed, Expired, Reminder). The executionResult field indicates success or failure of the attempted transfer.

Note: Some partners may not use this event type.

JSON

{
  "accounts": [
    {
      "accountIdentifier": "0a375031-30f4-449c-8d4a-ddbd7502bfdf",
      "events": [
        {
          "eventIdentifier": "d628e50f-271d-43b2-8215-fcc4de903658",
          "eventType": "ammRule",
          "eventDateTime": "2026-06-04T06:18:14.469Z",
          "ammRule": {
            "ruleID": "98520",
            "ruleType": "DateDriven",
            "ruleFrequencyType": "Monthly",
            "sourceAccountID": "3550b469-9f6c-4819-9d6e-b37c219afde0",
            "targetAccountID": "55d7c7f0-ad33-4a26-8a0f-7926fb8cf624",
            "ruleName": "SccRecurringPayment",
            "startDate": "2022-04-01T07:00:00Z",
            "endDate": "9999-12-31T23:59:59Z",
            "enrollmentDate": "2022-04-01T00:04:55Z",
            "rulePriority": 0,
            "fixedTransferAmount": 88.18,
            "scheduleDay": 26,
            "ruleStatus": "Active",
            "transferType": "SccPayment",
            "paymentAmountOption": "OtherAmount",
            "sourceOption": "DDA",
            "ruleAction": "Executed",
            "executionResult": "failed",
            "executionDate": "2025-06-26T18:09:26Z"
          }
        }
      ]
    }
  ]
}

Did this page help you?