---
title: "Payment succeeded"
method: POST
path: "PAYMENT_SUCCEEDED"
tags: ["Webhooks"]
---

# Payment succeeded

`POST PAYMENT_SUCCEEDED` (webhook)

Sent when a hosted payment page reaches the PAID state.

## Payload

- object
  - `type` 'PAYMENT_SUCCEEDED', required
  - `data` PaymentPageStatusChangedWebhookData, required — `data` for PAYMENT_CREATED / PAYMENT_SUCCEEDED / PAYMENT_EXPIRED.
    - `pageId` string, required
    - `billingEmail` string
    - `currency` string, required
    - `amount` number, required — Integer, in the currency's minor unit (e.g. 641 = 6.41).
    - `clientReferenceId` string
    - `status` 'UNPAID' | 'PAID' | 'EXPIRED' | 'CANCELED', required
    - `flexibleAmount` object — Present only for flexible-amount pages.
      - `requested` number, required
      - `received` number, required
    - `payment` object — Present only for flexible-amount pages.
      - `currency` string, required
      - `requested` string, required
      - `received` string, required
      - `receivedPercentage` string, required
    - `customer` object
      - `id` string, required
      - `referenceId` string, required
      - `email` string
    - `payinDetails` object
      - `type` 'card' | 'crypto' | 'apple_pay' | 'google_pay'
      - `amount` number
      - `grossAmount` number
      - `currency` string
      - `scheme` string — See `Payment.scheme` — may contain legacy un-normalized values from historical documents.
      - `bin` string
      - `last4` string
      - `issuer` string
      - `issuerCountry` string
      - `cardType` 'CREDIT' | 'DEBIT' | 'PREPAID' | 'CHARGE' | 'DEFERRED DEBIT'
      - `acquirerReferenceNumber` string
      - `firstName` string
      - `lastName` string
      - `expiryMonth` number
      - `expiryYear` number
      - `threeDS` object
        - `requested` boolean, required
        - `flow` 'CHALLENGE' | 'FRICTIONLESS'
        - `eci` string
        - `authentication_status_code` string
      - `taxAmount` number
      - `taxProductCategory` string
      - `taxZipcode` string
      - `taxCountry` string
      - `network` string
      - `token` string
      - `transactionHash` string
      - `fromAddress` string
    - `source` 'direct' | 'iap' | 'subscription' | 'card-verification' | 'consumer-onramp'
  - `signature` string, required — Base64-encoded HMAC-SHA256 of the `data` object, signed with your webhook secret. Use it to verify authenticity.

## Acknowledgement `200`

Return any 2xx status to acknowledge receipt. Non-2xx or timeout triggers retries.

---

[API](https://skmtc.dev/breeze/apis/breeze-api.md) · [All operations](https://skmtc.dev/breeze/apis/breeze-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/breeze/breeze-api/revisions/8911892bdf29/schema)
