---
title: "Get a webhook event"
method: GET
path: "/api/v1/webhook-events/{webhookEventId}"
tags: ["WebhookEvents"]
---

# Get a webhook event

`GET /api/v1/webhook-events/{webhookEventId}`

## Request

- Base URL: `https://merchant-api.accruesavings.com`
- URL: `https://merchant-api.accruesavings.com/api/v1/webhook-events/{webhookEventId}`
- Auth: none declared. Required headers: `Client-ID`, `Authorization`
- TypeScript: <https://skmtc.dev/byaccrue/apis/accrue-merchant-api/docs/api/v1/webhook-events/:webhookEventId/get.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `webhookEventId` string, uuid, required: WebhookEvent id

## Headers

- `Client-ID` string, uuid, required: The unique identifier of the client making the request. This header is required to retrieve the client-specific configuration and ensure that the response is tailored to the client's settings and permissions.
- `Authorization` string, uuid, required: Secure secret to access privileged endpoints.

## Response `200`

OK

- GetWebhookEventResponse
  - `data` WebhookEvent, required
    - `id` string, uuid, required: Unique identifier for the object.
    - `type` 'WebhookEvent', required
    - `attributes` object, required
      - `id` string, uuid, required: The webhook event ID
      - `topic` string, required: The webhook topic/event type
      - `clientId` string, uuid, required: The client ID associated with this webhook event
      - `userId` string, uuid: The user ID associated with this webhook event (if applicable)
      - `walletId` string, uuid: The wallet ID associated with this webhook event (if applicable)
      - `updatedAt` string, date-time, required
      - `createdAt` string, date-time, required
    - `relationships` object, required
      - `event` object
        - `data` object, required: The related event resource (PaymentIntent, Payment, Refund, Capture, or ApplicationEvent)
          - `id` string, uuid, required
          - `type` string, required
  - `included` WebhookIncluded[]
    - union: Polymorphic schema for webhook included resources. Uses discriminator on 'type' field for runtime deserialization.
      - object: PaymentIntent entity as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'PaymentIntent', required
        - `attributes` object, required
          - `id` string, uuid, required
          - `status` 'Promotable' | 'PromotedToPayment' | 'Invalid' | 'Expired' | 'Canceled', required
          - `error` 'LinkedAccountUnverified' | 'LinkedAccountDisconnected' | 'LinkedAccountMissing' | 'InsufficientBalance' | 'MissingFullName' | 'WrongEmail' | 'InvalidKycStatus', nullable, required
          - `userId` string, uuid, required
          - `walletId` string, uuid, nullable, required
          - `fullName` string, nullable, required
          - `email` string, email, nullable, required
          - `phoneNumber` string, nullable, required
          - `billingAddress` object, nullable, required
          - `reference` string, nullable
          - `expiresAt` string, date-time, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
      - object: Payment entity as stored in webhook payload (includes walletId/userId from PaymentIntent). All Prisma Payment fields may be present.
        - `id` string, uuid, required
        - `type` 'Payment', required
        - `attributes` object, required
          - `id` string, uuid, required
          - `status` 'Canceled' | 'Created' | 'Failed' | 'Processing' | 'Returned' | 'Sent', required
          - `amount` integer, required
          - `reference` string, nullable
          - `expiresAt` string, date-time, nullable, required
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `paymentIntentId` string, uuid
          - `channelId` string, nullable
          - `channel` string, nullable
          - `error` string, nullable
          - `secondaryAuthorizationType` 'Card', nullable
          - `secondaryAuthorizationId` string, nullable
          - `secondaryAuthorizationAmount` integer, nullable
          - `walletId` string, uuid, nullable
          - `userId` string, uuid
      - object: Refund entity as stored in webhook payload. Includes charges/deductions via shared mapRefundCharges utility.
        - `id` string, uuid, required
        - `type` 'Refund', required
        - `attributes` object, required
          - `id` string, uuid, required
          - `paymentId` string, uuid
          - `amount` integer, required
          - `status` 'Failed' | 'Pending' | 'Sent' | 'Waiting', required
          - `message` string, required
          - `reference` string, nullable
          - `charges` object: Charges applied to this refund.
            - `fee` object: Processing fee details for this refund
              - …
            - `rewards` integer: Rewards amount. Always 0 for refunds.
          - `deductions` object: Legacy charges breakdown. Use `charges` instead.
            - `rewards` integer, required: Rewards amount. Always 0 for refunds.
            - `fees` integer, required: Processing fees charged for this refund, in cents.
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
      - object: Capture entity as stored in webhook payload (includes externalPayments)
        - `id` string, uuid, required
        - `type` 'Capture', required
        - `attributes` object, required
          - `id` string, uuid, required
          - `method` 'Direct' | 'BankRails' | 'VirtualDebitCard', required
          - `amount` integer, required
          - `reference` string, nullable
          - `externalPayments` unknown
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
      - object: KycCreated event data as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'KycCreated', required
        - `attributes` object, required
          - `application` BankApplicationLite, required: Bank application data
            - `type` 'Lite', required: The type of KYC application
            - `firstName` string, required: First name
            - `lastName` string, required: Last name
            - `email` string, email, required: Email address
            - `dateOfBirth` string, required: Date of birth
            - `phone` string, required: Phone number
            - `street` string: Street address
            - `street2` string: Street address line 2
            - `city` string: City
            - `state` string: State
            - `postalCode` string: Postal code
          - `userId` string, uuid, required: The user ID associated with this event
          - `provider` string, required: Bank provider (e.g., 'Unit', 'ModernTreasury')
          - `reference` string, nullable
          - `email` string, email, nullable
          - `fullName` string, nullable
          - `phoneNumber` string, nullable
          - `error` string, nullable
          - `walletId` string, uuid, nullable
          - `billingAddress` object, nullable
      - object: KycApproved event data as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'KycApproved', required
        - `attributes` object, required
          - `userId` string, uuid, required: The user ID associated with this event
          - `priorStatus` 'Approved' | 'AwaitingDocuments' | 'Denied' | 'ManualReview' | 'NotStarted' | 'Pending' | 'Unknown': Optional previous KYC status before approval
          - `reference` string, nullable
          - `email` string, email, nullable
          - `fullName` string, nullable
          - `phoneNumber` string, nullable
          - `error` string, nullable
          - `walletId` string, uuid, nullable
          - `billingAddress` object, nullable
      - object: KYC status event data (KycDeclined, KycPending, KycAwaitingDocuments, KycManualReview) as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'KycDeclined' | 'KycPending' | 'KycAwaitingDocuments' | 'KycManualReview', required
        - `attributes` object, required
          - `userId` string, uuid, required: The user ID associated with this event
          - `reason` string: Optional reason for KYC decline (only present for KycDeclined events)
          - `reference` string, nullable
          - `email` string, email, nullable
          - `fullName` string, nullable
          - `phoneNumber` string, nullable
          - `error` string, nullable
          - `walletId` string, uuid, nullable
          - `billingAddress` object, nullable
      - object: TransactionCleared event data as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'TransactionCleared', required
        - `attributes` object, required
          - `transactionId` string, uuid, required: The transaction ID associated with this event
          - `walletId` string, uuid, required: The wallet ID associated with this transaction
          - `rewardIds` string[]: Optional array of reward IDs associated with this transaction
          - `reference` string, nullable
          - `email` string, email, nullable
          - `fullName` string, nullable
          - `phoneNumber` string, nullable
          - `error` string, nullable
          - `billingAddress` object, nullable
          - `fee` object, required: Fee breakdown applied to this transaction.
            - `type` string, nullable, required: The fee type applied to this transaction (for example, a specific FeeType name). This value can be null when no fee type applies or the fee type cannot be determined.
            - `amount` integer, required: The fee amount applied to this transaction, represented in the smallest currency unit (e.g., cents for USD). This value can be 0 when no fee was charged.
      - object: TransactionFailed event data as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'TransactionFailed', required
        - `attributes` object, required
          - `transactionId` string, uuid, required: The transaction ID associated with this event
          - `walletId` string, uuid, required: The wallet ID associated with this transaction
          - `rewardIds` string[]: Optional array of reward IDs associated with this transaction
          - `reference` string, nullable
          - `email` string, email, nullable
          - `fullName` string, nullable
          - `phoneNumber` string, nullable
          - `error` string, nullable
          - `billingAddress` object, nullable
          - `fee` object, required: Fee breakdown applied to this transaction.
            - `type` string, nullable, required: The fee type applied to this transaction (for example, a specific FeeType name). This value can be null when no fee type applies or the fee type cannot be determined.
            - `amount` integer, required: The fee amount applied to this transaction, represented in the smallest currency unit (e.g., cents for USD). This value can be 0 when no fee was charged.
          - `failureReason` 'Canceled' | 'HardDecline' | 'SoftDecline' | 'Expired' | 'InsufficientFunds' | 'Reversed' | 'Unknown': Transaction failure reason (TransactionFailureReason). - **Canceled**: The transaction was canceled. - **HardDecline**: The request was declined (hard decline). - **SoftDecline**: The payment request was declined; subsequent attempts may succeed. - **Expired**: The transaction or authorization expired. - **InsufficientFunds**: Insufficient funds to complete the transaction. - **Reversed**: The transaction was reversed. - **Unknown**: The failure reason is unknown.
      - object: CounterpartyIncomingPayment event data as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'CounterpartyIncomingPayment', required
        - `attributes` object, required
          - `counterpartyId` string, uuid, required: The counterparty whose account received the payment
          - `merchantId` string, uuid, required: The merchant that owns the counterparty
          - `amount` integer, required: The payment amount, represented in the smallest currency unit (e.g., cents for USD).
          - `currency` string, required: ISO 4217 currency code of the payment
          - `direction` 'credit' | 'debit', required: Direction of the movement on the counterparty account. - **credit**: funds were received into the counterparty account. - **debit**: funds were withdrawn from the counterparty account.
          - `method` string, required: The bank rail the payment arrived over, for example `ach`, `wire`, or `rtp`. Treat this as an open set — new values may be added without notice.
          - `originatorName` string, nullable, required: Who sent the payment, as the originating bank named them. Null when the rail carried no originator name.
          - `description` string, nullable, required: The description the originating bank stamped on the payment, unmodified — on ACH this is the company entry description, so it is often a reference code rather than prose. Null when the rail carried none.
          - `asOfDate` string, required: The date the payment settled at the bank, as `YYYY-MM-DD`
          - `externalIncomingPaymentId` string, required: Identifier for this incoming payment at the banking provider. Stable for the life of the payment and safe to use for reconciliation against your bank records.
          - `reference` string, nullable
          - `email` string, email, nullable
          - `fullName` string, nullable
          - `phoneNumber` string, nullable
          - `error` string, nullable
          - `walletId` string, uuid, nullable
          - `billingAddress` object, nullable
      - object: Counterparty payout lifecycle event data (CounterpartyPayoutCreated, CounterpartyPayoutSent, CounterpartyPayoutCompleted) as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'CounterpartyPayoutCreated' | 'CounterpartyPayoutSent' | 'CounterpartyPayoutCompleted', required
        - `attributes` object, required
          - `payoutId` string, required: The payout id, identical to the one the payouts API returns
          - `counterpartyId` string, uuid, required: The counterparty being paid out
          - `merchantId` string, uuid, required: The merchant that owns the counterparty
          - `amount` integer, required: The payout amount, represented in the smallest currency unit (e.g., cents for USD).
          - `currency` string, required: ISO 4217 currency code of the payout
          - `status` 'Approved' | 'Cancelled' | 'Completed' | 'Denied' | 'Failed' | 'NeedsApproval' | 'Pending' | 'Processing' | 'Returned' | 'Reversed' | 'Sent', required: The payout status at the time the event fired. This is the same status the payouts API reports, so a webhook and a subsequent read always agree.
          - `description` string, nullable, required: Description recorded on the payout
          - `effectiveDate` string, required: The date the payout is scheduled to settle, as `YYYY-MM-DD`
          - `createdAt` string, required: ISO 8601 timestamp
          - `updatedAt` string, required: ISO 8601 timestamp
          - `reference` string, nullable
          - `email` string, email, nullable
          - `fullName` string, nullable
          - `phoneNumber` string, nullable
          - `error` string, nullable
          - `walletId` string, uuid, nullable
          - `billingAddress` object, nullable
      - object: CounterpartyPayoutReturned event data as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'CounterpartyPayoutReturned', required
        - `attributes` object, required
          - `payoutId` string, required: The payout id, identical to the one the payouts API returns
          - `counterpartyId` string, uuid, required: The counterparty being paid out
          - `merchantId` string, uuid, required: The merchant that owns the counterparty
          - `amount` integer, required: The payout amount, represented in the smallest currency unit (e.g., cents for USD).
          - `currency` string, required: ISO 4217 currency code of the payout
          - `status` 'Approved' | 'Cancelled' | 'Completed' | 'Denied' | 'Failed' | 'NeedsApproval' | 'Pending' | 'Processing' | 'Returned' | 'Reversed' | 'Sent', required: The payout status at the time the event fired. This is the same status the payouts API reports, so a webhook and a subsequent read always agree.
          - `description` string, nullable, required: Description recorded on the payout
          - `effectiveDate` string, required: The date the payout is scheduled to settle, as `YYYY-MM-DD`
          - `createdAt` string, required: ISO 8601 timestamp
          - `updatedAt` string, required: ISO 8601 timestamp
          - `returnCode` string, nullable, required: Bank return code when the payout was returned by the receiving bank (for example `R01`). Null for the other terminal failures, which carry no bank return. See [ACH Return Codes](/docs/webhooks/ach-return-codes).
          - `returnReason` string, nullable, required: Human-readable reason for the return, when the bank supplied one
          - `reference` string, nullable
          - `email` string, email, nullable
          - `fullName` string, nullable
          - `phoneNumber` string, nullable
          - `error` string, nullable
          - `walletId` string, uuid, nullable
          - `billingAddress` object, nullable
      - object: Counterparty ledger movement event data (CounterpartyTransactionCreated, CounterpartyTransactionUpdated) as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'CounterpartyTransactionCreated' | 'CounterpartyTransactionUpdated', required
        - `attributes` object, required
          - `transactionId` string, required: The movement id, identical to the `id` the counterparty transactions API returns for the same movement
          - `counterpartyId` string, uuid, required: The counterparty whose balance moved
          - `merchantId` string, uuid, required: The merchant that owns the counterparty
          - `amount` integer, required: The amount moved, in the smallest currency unit (e.g. cents for USD). Always positive; **direction** carries the sign.
          - `currency` string, required: ISO 4217 currency code of the movement
          - `direction` 'Credit' | 'Debit', required: Relative to the counterparty: `Credit` increased its balance, `Debit` reduced it.
          - `type` 'Deposit' | 'Payout' | 'Transfer' | 'Adjustment' | 'Other', required: What moved the money. `Other` means the movement could not be classified — it is still real money on the balance, so read **description** for what it was.
          - `status` 'Pending' | 'Posted' | 'Archived', required: `Pending` counts toward the pending balance, `Posted` toward the available balance, and `Archived` was voided before posting and counts toward neither.
          - `description` string, nullable, required: Description recorded on the movement. For a deposit this is the description the originating bank stamped on the payment, which on ACH is the company entry description and is often a reference code rather than prose.
          - `originatorName` string, nullable, required: Who sent the money, as the originating bank named them. Only a deposit carries one; every other movement is null, as is a deposit whose rail carried no originator name.
          - `effectiveAt` string, date-time, required: When the movement takes effect on the ledger. The counterparty transactions list is ordered by this field.
          - `postedAt` string, date-time, nullable, required: When the movement posted. Null while the movement is still `Pending`.
          - `createdAt` string, date-time, required: When the movement was recorded
          - `updatedAt` string, date-time, required: When the movement was last changed
          - `reference` string, nullable
          - `email` string, email, nullable
          - `fullName` string, nullable
          - `phoneNumber` string, nullable
          - `error` string, nullable
          - `walletId` string, uuid, nullable
          - `billingAddress` object, nullable
      - object: YieldPayoutCreated event data as stored in webhook payload
        - `id` string, uuid, required
        - `type` 'YieldPayoutCreated', required
        - `attributes` object, required
          - `yieldPayoutId` string, uuid, required: The payout id, as returned by the yield payouts API
          - `merchantId` string, uuid, required: The merchant the payout belongs to
          - `amount` integer, required: Float revenue earned over the period, in cents. This is the merchant's own revenue, not the gross interest received from the bank.
          - `currency` string, required: ISO 4217 currency code
          - `periodStart` string, required: First day the payout covers, as `YYYY-MM-DD`. Inclusive.
          - `periodEnd` string, required: Last day the payout covers, as `YYYY-MM-DD`. Inclusive.
          - `paidAt` string, required: ISO 8601 timestamp of when the payout was paid
          - `reference` string, nullable
          - `email` string, email, nullable
          - `fullName` string, nullable
          - `phoneNumber` string, nullable
          - `error` string, nullable
          - `walletId` string, uuid, nullable
          - `billingAddress` object, nullable

## Other responses

- `404`: Not Found
- `500`: Internal Server Error

---

[API](https://skmtc.dev/byaccrue/apis/accrue-merchant-api.md) - [All operations](https://skmtc.dev/byaccrue/apis/accrue-merchant-api/llms.txt) - [OpenAPI document](https://skmtc.dev/byaccrue/apis/accrue-merchant-api/revisions/3e2d97ef2e6e?raw)
