---
title: "Payment Refund"
method: POST
path: "/payment-refund"
tags: ["Payment Webhooks"]
---

# Payment Refund

`POST /payment-refund`

Primer notifies you with a `PAYMENT.REFUND` Webhook when a refund request has been fully processed by a payment processor and the refund has reached a final state.

Check the transaction with the most recent `transactionType: "REFUND"` in the `transactions` array:
- if `processorStatus` is `SETTLED`, the refund was successful and the funds have been returned to the customer
- if `processorStatus` is `FAILED`, the refund was unsuccessful

Learn more about [how Primer handles webhooks](/docs/api-reference/get-started/configure-webhooks).

## Headers

- `X-Signature-Primary` string, required
- `X-Signature-Secondary` string, required

## Request body

- PaymentRefundWebhookPayload
  - `eventType` string, required — The type of the webhook raised. `PAYMENT.REFUND` in this case.
  - `date` string, date-time, required — The date-time that the webhook was sent.
  - `signedAt` string, required — The Unix timestamp at which the webhook payload was signed.
  - `notificationConfig` object, required — The notification configuration details.
    - `id` string, uuid, required — The notification configuration ID.
    - `description` string, required — The notification configuration description.
  - `version` string — The payload version
  - `payment` object, required
    - `id` string, required — The unique payment ID. You can use this ID to retrieve the payment details, or perform downstream operations.
    - `date` string, date-time, required — The date and time at which the payment was created in UTC format.
    - `dateUpdated` string, date-time, required — The date-time that the update related to the webhook has happened.
    - `status` 'PENDING' | 'FAILED' | 'AUTHORIZED' | 'SETTLING' | 'PARTIALLY_SETTLED' | 'SETTLED' | 'DECLINED' | 'CANCELLED', required — An enumeration.
    - `orderId` string, required — Your reference for the payment.
    - `currencyCode` string, required — The 3-letter currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217#Active_codes). e.g. use `USD` for US dollars.
    - `amount` integer, required — The amount you charged the customer, in minor units.
    - `customerId` string — The unique identifier for your customer.
    - `metadata` object — Additional data to be used throughout the payment lifecycle.
    - `customer` object
      - `emailAddress` string, email — Customer email address.
      - `mobileNumber` string — The customer's mobile number
      - `firstName` string — The customer's first name
      - `lastName` string — The customer's last name
      - `billingAddress` OptionalAddressAPISchema
        - `firstName` string
        - `lastName` string
        - `addressLine1` string — Street name, Company name or PO Box
        - `addressLine2` string — Apartment, Unit or Building number
        - `city` string — Name of the city, district, town or village
        - `state` string — State, County or Province
        - `countryCode` 'AW' | 'AF' | 'AO' | 'AI' | 'AX' | 'AL' | 'AD' | 'AE' | 'AR' | 'AM' | 'AS' | 'AQ' | 'TF' | 'AG' | 'AU' | 'AT' | 'AZ' | 'BI' | 'BE' | 'BJ' | 'BQ' | 'BF' | 'BD' | 'BG' | 'BH' | 'BS' | 'BA' | 'BL' | 'BY' | 'BZ' | 'BM' | 'BO' | 'BR' | 'BB' | 'BN' | 'BT' | 'BV' | 'BW' | 'CF' | 'CA' | 'CC' | 'CH' | 'CL' | 'CN' | 'CI' | 'CM' | 'CD' | 'CG' | 'CK' | 'CO' | 'KM' | 'CV' | 'CR' | 'CU' | 'CW' | 'CX' | 'KY' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DM' | 'DK' | 'DO' | 'DZ' | 'EC' | 'EG' | 'ER' | 'EH' | 'ES' | 'EE' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FR' | 'FO' | 'FM' | 'GA' | 'GB' | 'GE' | 'GG' | 'GH' | 'GI' | 'GN' | 'GP' | 'GM' | 'GW' | 'GQ' | 'GR' | 'GD' | 'GL' | 'GT' | 'GF' | 'GU' | 'GY' | 'HK' | 'HM' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IM' | 'IN' | 'IO' | 'IE' | 'IR' | 'IQ' | 'IS' | 'IL' | 'IT' | 'JM' | 'JE' | 'JO' | 'JP' | 'KZ' | 'KE' | 'KG' | 'KH' | 'KI' | 'KN' | 'KR' | 'KW' | 'LA' | 'LB' | 'LR' | 'LY' | 'LC' | 'LI' | 'LK' | 'LS' | 'LT' | 'LU' | 'LV' | 'MO' | 'MF' | 'MA' | 'MC' | 'MD' | 'MG' | 'MV' | 'MX' | 'MH' | 'MK' | 'ML' | 'MT' | 'MM' | 'ME' | 'MN' | 'MP' | 'MZ' | 'MR' | 'MS' | 'MQ' | 'MU' | 'MW' | 'MY' | 'YT' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NU' | 'NL' | 'NO' | 'NP' | 'NR' | 'NZ' | 'OM' | 'PK' | 'PA' | 'PN' | 'PE' | 'PH' | 'PW' | 'PG' | 'PL' | 'PR' | 'KP' | 'PT' | 'PY' | 'PS' | 'PF' | 'QA' | 'RE' | 'RO' | 'RU' | 'RW' | 'SA' | 'SD' | 'SN' | 'SG' | 'GS' | 'SH' | 'SJ' | 'SB' | 'SL' | 'SV' | 'SM' | 'SO' | 'PM' | 'RS' | 'SS' | 'ST' | 'SR' | 'SK' | 'SI' | 'SE' | 'SZ' | 'SX' | 'SC' | 'SY' | 'TC' | 'TD' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TM' | 'TL' | 'TO' | 'TT' | 'TN' | 'TR' | 'TV' | 'TW' | 'TZ' | 'UG' | 'UA' | 'UM' | 'UY' | 'US' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'YE' | 'ZA' | 'ZM' | 'ZW' — An enumeration.
        - `postalCode` string — Postal or ZIP code
      - `shippingAddress` OptionalAddressAPISchema
        - `firstName` string
        - `lastName` string
        - `addressLine1` string — Street name, Company name or PO Box
        - `addressLine2` string — Apartment, Unit or Building number
        - `city` string — Name of the city, district, town or village
        - `state` string — State, County or Province
        - `countryCode` 'AW' | 'AF' | 'AO' | 'AI' | 'AX' | 'AL' | 'AD' | 'AE' | 'AR' | 'AM' | 'AS' | 'AQ' | 'TF' | 'AG' | 'AU' | 'AT' | 'AZ' | 'BI' | 'BE' | 'BJ' | 'BQ' | 'BF' | 'BD' | 'BG' | 'BH' | 'BS' | 'BA' | 'BL' | 'BY' | 'BZ' | 'BM' | 'BO' | 'BR' | 'BB' | 'BN' | 'BT' | 'BV' | 'BW' | 'CF' | 'CA' | 'CC' | 'CH' | 'CL' | 'CN' | 'CI' | 'CM' | 'CD' | 'CG' | 'CK' | 'CO' | 'KM' | 'CV' | 'CR' | 'CU' | 'CW' | 'CX' | 'KY' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DM' | 'DK' | 'DO' | 'DZ' | 'EC' | 'EG' | 'ER' | 'EH' | 'ES' | 'EE' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FR' | 'FO' | 'FM' | 'GA' | 'GB' | 'GE' | 'GG' | 'GH' | 'GI' | 'GN' | 'GP' | 'GM' | 'GW' | 'GQ' | 'GR' | 'GD' | 'GL' | 'GT' | 'GF' | 'GU' | 'GY' | 'HK' | 'HM' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IM' | 'IN' | 'IO' | 'IE' | 'IR' | 'IQ' | 'IS' | 'IL' | 'IT' | 'JM' | 'JE' | 'JO' | 'JP' | 'KZ' | 'KE' | 'KG' | 'KH' | 'KI' | 'KN' | 'KR' | 'KW' | 'LA' | 'LB' | 'LR' | 'LY' | 'LC' | 'LI' | 'LK' | 'LS' | 'LT' | 'LU' | 'LV' | 'MO' | 'MF' | 'MA' | 'MC' | 'MD' | 'MG' | 'MV' | 'MX' | 'MH' | 'MK' | 'ML' | 'MT' | 'MM' | 'ME' | 'MN' | 'MP' | 'MZ' | 'MR' | 'MS' | 'MQ' | 'MU' | 'MW' | 'MY' | 'YT' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NU' | 'NL' | 'NO' | 'NP' | 'NR' | 'NZ' | 'OM' | 'PK' | 'PA' | 'PN' | 'PE' | 'PH' | 'PW' | 'PG' | 'PL' | 'PR' | 'KP' | 'PT' | 'PY' | 'PS' | 'PF' | 'QA' | 'RE' | 'RO' | 'RU' | 'RW' | 'SA' | 'SD' | 'SN' | 'SG' | 'GS' | 'SH' | 'SJ' | 'SB' | 'SL' | 'SV' | 'SM' | 'SO' | 'PM' | 'RS' | 'SS' | 'ST' | 'SR' | 'SK' | 'SI' | 'SE' | 'SZ' | 'SX' | 'SC' | 'SY' | 'TC' | 'TD' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TM' | 'TL' | 'TO' | 'TT' | 'TN' | 'TR' | 'TV' | 'TW' | 'TZ' | 'UG' | 'UA' | 'UM' | 'UY' | 'US' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'YE' | 'ZA' | 'ZM' | 'ZW' — An enumeration.
        - `postalCode` string — Postal or ZIP code
      - `taxId` string — The customer's tax id number for tax exemptions
      - `nationalDocumentId` string — The customer's national identification number
    - `paymentMethod` PaymentResponsePaymentMethodOptionsAPISchema, required
      - `descriptor` string — The description of the payment, as it would typically appear on a bank statement.
      - `paymentType` 'FIRST_PAYMENT' | 'ECOMMERCE' | 'SUBSCRIPTION' | 'UNSCHEDULED' — Payment types, primarily to be used for recurring payments. See the table below for all possible values. Note: if no field is set, we will return a blank value and make a best effort to calculate the downstream fields required for processing the payment. | paymentType | Use case | | --- | --- | | `FIRST_PAYMENT` | a customer-initiated payment which is the first in a series of recurring payments or subscription, or a card on file scenario. | `ECOMMERCE` | a customer-initiated payment using stored payment details where the cardholder is present. | `SUBSCRIPTION` | a merchant-initiated payment as part of a series of payments on a fixed schedule and a set amount. | `UNSCHEDULED` | a merchant-initiated payment using stored payment details with no fixed schedule or amount.
      - `paymentMethodToken` string — The payment method token used to authorize the transaction.
      - `isVaulted` boolean — If the payment method token was vaulted, this is set to `true`. Use this token for recurring payments.
      - `analyticsId` string — Unique analytics identifier corresponding to a payment method
      - `paymentMethodType` string — [The list of available payment methods and their `PAYMENT_METHOD_TYPE` can be found here.](https://primer.io/docs/connections/payment-methods/available-payment-methods)
      - `paymentMethodData` union — Payment method data
        - PaymentCardTokenAPISchema
          - `first6Digits` string
          - `last4Digits` string, required
          - `expirationMonth` string, required
          - `expirationYear` string, required
          - `cardholderName` string
          - `network` string
          - `isNetworkTokenized` boolean
          - `binData` BinDataAPISchema
            - `network` 'AMEX' | 'DANKORT' | 'DINERS_CLUB' | 'DISCOVER' | 'ENROUTE' | 'ELO' | 'HIPER' | 'INTERAC' | 'JCB' | 'MAESTRO' | 'MASTERCARD' | 'MIR' | 'PRIVATE_LABEL' | 'UNIONPAY' | 'VISA' | 'CARTES_BANCAIRES' | 'OTHER', required — The list of available card networks.
            - `issuerCountryCode` 'AW' | 'AF' | 'AO' | 'AI' | 'AX' | 'AL' | 'AD' | 'AE' | 'AR' | 'AM' | 'AS' | 'AQ' | 'TF' | 'AG' | 'AU' | 'AT' | 'AZ' | 'BI' | 'BE' | 'BJ' | 'BQ' | 'BF' | 'BD' | 'BG' | 'BH' | 'BS' | 'BA' | 'BL' | 'BY' | 'BZ' | 'BM' | 'BO' | 'BR' | 'BB' | 'BN' | 'BT' | 'BV' | 'BW' | 'CF' | 'CA' | 'CC' | 'CH' | 'CL' | 'CN' | 'CI' | 'CM' | 'CD' | 'CG' | 'CK' | 'CO' | 'KM' | 'CV' | 'CR' | 'CU' | 'CW' | 'CX' | 'KY' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DM' | 'DK' | 'DO' | 'DZ' | 'EC' | 'EG' | 'ER' | 'EH' | 'ES' | 'EE' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FR' | 'FO' | 'FM' | 'GA' | 'GB' | 'GE' | 'GG' | 'GH' | 'GI' | 'GN' | 'GP' | 'GM' | 'GW' | 'GQ' | 'GR' | 'GD' | 'GL' | 'GT' | 'GF' | 'GU' | 'GY' | 'HK' | 'HM' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IM' | 'IN' | 'IO' | 'IE' | 'IR' | 'IQ' | 'IS' | 'IL' | 'IT' | 'JM' | 'JE' | 'JO' | 'JP' | 'KZ' | 'KE' | 'KG' | 'KH' | 'KI' | 'KN' | 'KR' | 'KW' | 'LA' | 'LB' | 'LR' | 'LY' | 'LC' | 'LI' | 'LK' | 'LS' | 'LT' | 'LU' | 'LV' | 'MO' | 'MF' | 'MA' | 'MC' | 'MD' | 'MG' | 'MV' | 'MX' | 'MH' | 'MK' | 'ML' | 'MT' | 'MM' | 'ME' | 'MN' | 'MP' | 'MZ' | 'MR' | 'MS' | 'MQ' | 'MU' | 'MW' | 'MY' | 'YT' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NU' | 'NL' | 'NO' | 'NP' | 'NR' | 'NZ' | 'OM' | 'PK' | 'PA' | 'PN' | 'PE' | 'PH' | 'PW' | 'PG' | 'PL' | 'PR' | 'KP' | 'PT' | 'PY' | 'PS' | 'PF' | 'QA' | 'RE' | 'RO' | 'RU' | 'RW' | 'SA' | 'SD' | 'SN' | 'SG' | 'GS' | 'SH' | 'SJ' | 'SB' | 'SL' | 'SV' | 'SM' | 'SO' | 'PM' | 'RS' | 'SS' | 'ST' | 'SR' | 'SK' | 'SI' | 'SE' | 'SZ' | 'SX' | 'SC' | 'SY' | 'TC' | 'TD' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TM' | 'TL' | 'TO' | 'TT' | 'TN' | 'TR' | 'TV' | 'TW' | 'TZ' | 'UG' | 'UA' | 'UM' | 'UY' | 'US' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'YE' | 'ZA' | 'ZM' | 'ZW' — An enumeration.
            - `issuerName` string
            - `issuerCurrencyCode` 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BOV' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYR' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHE' | 'CHF' | 'CHW' | 'CLP' | 'CNY' | 'COP' | 'COU' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SOS' | 'SRD' | 'SSP' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XAG' | 'XAU' | 'XBA' | 'XBB' | 'XBC' | 'XBD' | 'XCD' | 'XDR' | 'XFU' | 'XOF' | 'XPD' | 'XPF' | 'XPT' | 'XSU' | 'XTS' | 'XUA' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL' — Enumerates all supported currencies
            - `regionalRestriction` 'DOMESTIC_USE_ONLY' | 'NONE' | 'UNKNOWN', required — An enumeration.
            - `accountNumberType` 'PRIMARY_ACCOUNT_NUMBER' | 'NETWORK_TOKEN' | 'UNKNOWN', required — An enumeration.
            - `accountFundingType` 'CREDIT' | 'DEBIT' | 'PREPAID' | 'CHARGE' | 'DEFERRED_DEBIT' | 'UNKNOWN', required — An enumeration.
            - `prepaidReloadableIndicator` 'RELOADABLE' | 'NON_RELOADABLE' | 'NOT_APPLICABLE' | 'UNKNOWN', required — An enumeration.
            - `productUsageType` 'CONSUMER' | 'BUSINESS' | 'GOVERNMENT' | 'UNKNOWN', required — An enumeration.
            - `productCode` string, required
            - `productName` string, required
        - PayPalOrderTokenAPISchema
          - `paypalOrderId` string, required
          - `externalPayerInfo` PayPalExternalPayerInfoAPISchema
            - `externalPayerId` string
            - `email` string
            - `firstName` string
            - `lastName` string
          - `paypalStatus` string
        - PayPalBillingAgreementAPISchema
          - `paypalBillingAgreementId` string, required
          - `externalPayerInfo` PayPalExternalPayerInfoAPISchema
            - `externalPayerId` string
            - `email` string
            - `firstName` string
            - `lastName` string
          - `shippingAddress` AddressAPISchema
            - `firstName` string
            - `lastName` string
            - `addressLine1` string, required — Street name, Company name or PO Box
            - `addressLine2` string — Apartment, Unit or Building number
            - `city` string, required — Name of the city, district, town or village
            - `state` string — State, County or Province
            - `countryCode` 'AW' | 'AF' | 'AO' | 'AI' | 'AX' | 'AL' | 'AD' | 'AE' | 'AR' | 'AM' | 'AS' | 'AQ' | 'TF' | 'AG' | 'AU' | 'AT' | 'AZ' | 'BI' | 'BE' | 'BJ' | 'BQ' | 'BF' | 'BD' | 'BG' | 'BH' | 'BS' | 'BA' | 'BL' | 'BY' | 'BZ' | 'BM' | 'BO' | 'BR' | 'BB' | 'BN' | 'BT' | 'BV' | 'BW' | 'CF' | 'CA' | 'CC' | 'CH' | 'CL' | 'CN' | 'CI' | 'CM' | 'CD' | 'CG' | 'CK' | 'CO' | 'KM' | 'CV' | 'CR' | 'CU' | 'CW' | 'CX' | 'KY' | 'CY' | 'CZ' | 'DE' | 'DJ' | 'DM' | 'DK' | 'DO' | 'DZ' | 'EC' | 'EG' | 'ER' | 'EH' | 'ES' | 'EE' | 'ET' | 'FI' | 'FJ' | 'FK' | 'FR' | 'FO' | 'FM' | 'GA' | 'GB' | 'GE' | 'GG' | 'GH' | 'GI' | 'GN' | 'GP' | 'GM' | 'GW' | 'GQ' | 'GR' | 'GD' | 'GL' | 'GT' | 'GF' | 'GU' | 'GY' | 'HK' | 'HM' | 'HN' | 'HR' | 'HT' | 'HU' | 'ID' | 'IM' | 'IN' | 'IO' | 'IE' | 'IR' | 'IQ' | 'IS' | 'IL' | 'IT' | 'JM' | 'JE' | 'JO' | 'JP' | 'KZ' | 'KE' | 'KG' | 'KH' | 'KI' | 'KN' | 'KR' | 'KW' | 'LA' | 'LB' | 'LR' | 'LY' | 'LC' | 'LI' | 'LK' | 'LS' | 'LT' | 'LU' | 'LV' | 'MO' | 'MF' | 'MA' | 'MC' | 'MD' | 'MG' | 'MV' | 'MX' | 'MH' | 'MK' | 'ML' | 'MT' | 'MM' | 'ME' | 'MN' | 'MP' | 'MZ' | 'MR' | 'MS' | 'MQ' | 'MU' | 'MW' | 'MY' | 'YT' | 'NA' | 'NC' | 'NE' | 'NF' | 'NG' | 'NI' | 'NU' | 'NL' | 'NO' | 'NP' | 'NR' | 'NZ' | 'OM' | 'PK' | 'PA' | 'PN' | 'PE' | 'PH' | 'PW' | 'PG' | 'PL' | 'PR' | 'KP' | 'PT' | 'PY' | 'PS' | 'PF' | 'QA' | 'RE' | 'RO' | 'RU' | 'RW' | 'SA' | 'SD' | 'SN' | 'SG' | 'GS' | 'SH' | 'SJ' | 'SB' | 'SL' | 'SV' | 'SM' | 'SO' | 'PM' | 'RS' | 'SS' | 'ST' | 'SR' | 'SK' | 'SI' | 'SE' | 'SZ' | 'SX' | 'SC' | 'SY' | 'TC' | 'TD' | 'TG' | 'TH' | 'TJ' | 'TK' | 'TM' | 'TL' | 'TO' | 'TT' | 'TN' | 'TR' | 'TV' | 'TW' | 'TZ' | 'UG' | 'UA' | 'UM' | 'UY' | 'US' | 'UZ' | 'VA' | 'VC' | 'VE' | 'VG' | 'VI' | 'VN' | 'VU' | 'WF' | 'WS' | 'YE' | 'ZA' | 'ZM' | 'ZW', required — An enumeration.
            - `postalCode` string — Postal or ZIP code
          - `paypalStatus` string
        - GoCardlessMandateAPISchema
          - `gocardlessMandateId` string, required — Unique identifier of a GoCardless mandate agreement
        - KlarnaPaymentSessionAPISchema
          - `klarnaAuthorizationToken` string, required
          - `sessionData` KlarnaSessionDetailsAPISchema, required
            - `recurringDescription` string
            - `billingAddress` KlarnaAddressAPISchema, required
              - …
            - `shippingAddress` KlarnaAddressAPISchema
              - …
            - `purchaseCountry` string, required
            - `purchaseCurrency` string, required
            - `locale` string, required
            - `orderLines` unknown[], required
              - …
            - `tokenDetails` KlarnaTokenDetails
              - …
        - KlarnaCustomerTokenAPISchema
          - `klarnaCustomerToken` string, required
          - `sessionData` KlarnaSessionDetailsAPISchema, required
            - `recurringDescription` string
            - `billingAddress` KlarnaAddressAPISchema, required
              - …
            - `shippingAddress` KlarnaAddressAPISchema
              - …
            - `purchaseCountry` string, required
            - `purchaseCurrency` string, required
            - `locale` string, required
            - `orderLines` unknown[], required
              - …
            - `tokenDetails` KlarnaTokenDetails
              - …
        - IdealPayNLTokenAPISchema
          - `paymentMethodConfigId` string, uuid, required
        - ApayaCustomerTokenAPISchema
          - `mx` string, required
          - `mnc` integer
          - `mcc` integer
      - `threeDSecureAuthentication` ThreeDSecureAuthenticationAPISchema
        - `responseCode` 'NOT_PERFORMED' | 'SKIPPED' | 'AUTH_SUCCESS' | 'AUTH_FAILED' | 'CHALLENGE' | 'METHOD', required — An enumeration.
        - `reasonCode` union
          - 'GATEWAY_UNAVAILABLE' | 'DISABLED_BY_MERCHANT' | 'NOT_SUPPORTED_BY_ISSUER' | 'FAILED_TO_NEGOTIATE' | 'UNKNOWN_ACS_RESPONSE' | '3DS_SERVER_ERROR' | 'ACQUIRER_NOT_CONFIGURED' | 'ACQUIRER_NOT_PARTICIPATING' | 'EXEMPTION_ACCEPTED' — An enumeration.
          - 'UNKNOWN' | 'REJECTED_BY_ISSUER' | 'CARD_AUTHENTICATION_FAILED' | 'UNKNOWN_DEVICE' | 'UNSUPPORTED_DEVICE' | 'EXCEEDS_AUTHENTICATION_FREQUENCY_LIMIT' | 'EXPIRED_CARD' | 'INVALID_CARD_NUMBER' | 'INVALID_TRANSACTION' | 'NO_CARD_RECORD' | 'SECURITY_FAILURE' | 'STOLEN_CARD' | 'SUSPECTED_FRAUD' | 'TRANSACTION_NOT_PERMITTED_TO_CARDHOLDER' | 'CARDHOLDER_NOT_ENROLLED_IN_SERVICE' | 'TRANSACTION_TIMED_OUT_AT_THE_ACS' | 'LOW_CONFIDENCE' | 'MEDIUM_CONFIDENCE' | 'HIGH_CONFIDENCE' | 'VERY_HIGH_CONFIDENCE' | 'EXCEEDS_ACS_MAXIMUM_CHALLENGES' | 'NON_PAYMENT_NOT_SUPPORTED' | 'THREE_RI_NOT_SUPPORTED' | 'ACS_TECHNICAL_ISSUE' | 'DECOUPLED_REQUIRED_BY_ACS' | 'DECOUPLED_MAX_EXPIRY_EXCEEDED' | 'DECOUPLED_AUTHENTICATION_INSUFFICIENT_TIME' | 'AUTHENTICATION_ATTEMPTED_BUT_NOT_PERFORMED_BY_CARDHOLDER' | 'ACS_TIMED_OUT' | 'INVALID_ACS_RESPONSE' | 'ACS_SYSTEM_ERROR_RESPONSE' | 'ERROR_GENERATING_CAVV' | 'PROTOCOL_VERSION_NOT_SUPPORTED' | 'TRANSACTION_EXCLUDED_FROM_ATTEMPTS_PROCESSING' | 'REQUESTED_PROGRAM_NOT_SUPPORTED' — This enum is derived from the `transStatusReason` on page 218 of the [EMV Co 3DS protocol specification](https://www.emvco.com/terms-of-use/?u=/wp-content/uploads/documents/EMVCo_3DS_Spec_v220_122018.pdf) | Code | Description | |------|-----------------------------------------| | 01 | Card authentication failed | | 02 | Unknown Device | | 03 | Unsupported Device | | 04 | Exceeds authentication frequency limit | | 05 | Expired card | | 06 | Invalid card number | | 07 | Invalid transaction | | 08 | No Card record | | 09 | Security failure | | 10 | Stolen card | | 11 | Suspected fraud | | 12 | Transaction not permitted to cardholder | | 13 | Cardholder not enrolled in service | | 14 | Transaction timed out at the ACS | | 15 | Low confidence | | 16 | Medium confidence |
        - `reasonText` string
        - `protocolVersion` string
        - `challengeIssued` boolean
    - `processor` PaymentResponseProcessorAPISchema
      - `name` string — The payment processor used for this payment.
      - `processorMerchantId` string — The merchant ID registered at the payment processor used for this payment.
      - `amountCaptured` integer — If no capture was performed, this value will be set to `0`. If one or more partial captures were performed, this value will be a sum of all partial capture amounts.
      - `amountRefunded` integer — If no refund was performed, this value will be set to `0`. If one or more partial refunds were performed, this value will be a sum of all partial refund amounts.
    - `statusReason` StatusReasonAPISchema
      - `type` 'APPLICATION_ERROR' | 'GATEWAY_REJECTED' | 'ISSUER_DECLINED' | 'GATEWAY_TIMEOUT', required — An enumeration.
      - `declineType` 'SOFT_DECLINE' | 'HARD_DECLINE' — An enumeration.
      - `code` 'ERROR' | 'INVALID_CARD_NUMBER' | 'EXPIRED_CARD' | 'LOST_OR_STOLEN_CARD' | 'SUSPECTED_FRAUD' | 'UNKNOWN' | 'DECLINED' | 'REFER_TO_CARD_ISSUER' | 'DO_NOT_HONOR' | 'INSUFFICIENT_FUNDS' | 'WITHDRAWAL_LIMIT_EXCEEDED' | 'ISSUER_TEMPORARILY_UNAVAILABLE' | 'AUTHENTICATION_REQUIRED' — An enumeration.
      - `message` string — In case of an error on the processor's part, we will return the message returned by the processor. This is usually a human readable error.
      - `paymentMethodResultCode` string — The result code returned by the payment method or card network. This code is unified across all supported processors. _e.g. Code `46` refers to the message "Closed account" for Visa across all supported processors._
      - `paymentMethodResultMessage` string — Human-readable version of the Payment Method Result Code. This message is unified across all supported processors. _e.g. Code `46` refers to the message "Closed account" for Visa across all supported processors._
      - `paymentMethodAdviceCode` string — The advice code returned by the payment method or card network. This code is unified across all supported processors. _For payments made with Mastercard, this represents the Merchant Advice Code (MAC)._ _e.g. Code `24` refers to the message "Retry after 1 hour" for Mastercard across all supported processors._
      - `paymentMethodAdviceMessage` string — Human-readable version of the Payment Method Advice Code. This message is unified across all supported processors. _For payments made with Mastercard, this represents the message of the Merchant Advice Code (MAC)._ _e.g. Code `24` refers to the message "Retry after 1 hour" for Mastercard across all supported processors._
      - `advisedAction` 'RETRY_LATER' | 'UPDATE_DATA' | 'DO_NOT_RETRY' | 'STOP_ALL_PAYMENTS' — The Primer-recommended action to take based on the underlying decline reason and advice code. This advised action is unified across all supported processors and payment methods. - `RETRY_LATER`: The payment was likely declined due to a temporary issue (e.g. Insufficient funds). The payment can be retried immediately or at a later date. - `UPDATE_DATA`: The payment was likely declined because critical data was missing or out-of-date. Please ensure you use the most up-to-date payment information and customer details before retrying the payment. - `DO_NOT_RETRY`: The payment was declined and should not be retried. You can still charge this payment method for future orders or installments. - `STOP_ALL_PAYMENTS`: The processor or payment method explicitly informs you to stop making any payment requests with this payment method. Please use another payment method to charge this customer. - `null`: Primer is unable to determine a recommended action.
    - `transactions` TransactionOverviewAPISchema[], required — A list summarizing the transactions that occurred while processing the payment. Note: a refund is a separate transaction and so will appear in this `transactions` list if a refund was performed.
      - `date` string, date-time, required — Date & time of the transaction (UTC)
      - `amount` integer, required — Transaction amount in minor units
      - `currencyCode` 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BOV' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYR' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHE' | 'CHF' | 'CHW' | 'CLP' | 'CNY' | 'COP' | 'COU' | 'CRC' | 'CUC' | 'CUP' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ERN' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HRK' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'IRR' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KPW' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MRO' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MXV' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SDG' | 'SEK' | 'SGD' | 'SHP' | 'SOS' | 'SRD' | 'SSP' | 'SVC' | 'SYP' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XAG' | 'XAU' | 'XBA' | 'XBB' | 'XBC' | 'XBD' | 'XCD' | 'XDR' | 'XFU' | 'XOF' | 'XPD' | 'XPF' | 'XPT' | 'XSU' | 'XTS' | 'XUA' | 'YER' | 'ZAR' | 'ZMW' | 'ZWL', required — Enumerates all supported currencies
      - `orderId` string — The reference submitted on payment creation or refund.
      - `transactionType` 'SALE' | 'REFUND', required — An enumeration.
      - `processorTransactionId` string — Processor's unique identifier for the transaction
      - `authorizationCode` string — The authorization code returned by the processor on a successful authorization. For transactions that were subsequently auth-adjusted, this is the latest code. Useful for chargeback matching and bank reconciliation. Not guaranteed to be present; availability depends on the processor.
      - `processorName` string, required — An identifier of a processor.
      - `processorMerchantId` string, required — Processor's main account identifier. * Adyen: Account code * Braintree: Merchant ID * Stripe: Account ID"
      - `processorStatus` 'PENDING' | 'FAILED' | 'AUTHORIZED' | 'SETTLING' | 'PARTIALLY_SETTLED' | 'SETTLED' | 'DECLINED' | 'CANCELLED', required — An enumeration.
      - `processorStatusReason` StatusReasonAPISchema
        - `type` 'APPLICATION_ERROR' | 'GATEWAY_REJECTED' | 'ISSUER_DECLINED' | 'GATEWAY_TIMEOUT', required — An enumeration.
        - `declineType` 'SOFT_DECLINE' | 'HARD_DECLINE' — An enumeration.
        - `code` 'ERROR' | 'INVALID_CARD_NUMBER' | 'EXPIRED_CARD' | 'LOST_OR_STOLEN_CARD' | 'SUSPECTED_FRAUD' | 'UNKNOWN' | 'DECLINED' | 'REFER_TO_CARD_ISSUER' | 'DO_NOT_HONOR' | 'INSUFFICIENT_FUNDS' | 'WITHDRAWAL_LIMIT_EXCEEDED' | 'ISSUER_TEMPORARILY_UNAVAILABLE' | 'AUTHENTICATION_REQUIRED' — An enumeration.
        - `message` string — In case of an error on the processor's part, we will return the message returned by the processor. This is usually a human readable error.
        - `paymentMethodResultCode` string — The result code returned by the payment method or card network. This code is unified across all supported processors. _e.g. Code `46` refers to the message "Closed account" for Visa across all supported processors._
        - `paymentMethodResultMessage` string — Human-readable version of the Payment Method Result Code. This message is unified across all supported processors. _e.g. Code `46` refers to the message "Closed account" for Visa across all supported processors._
        - `paymentMethodAdviceCode` string — The advice code returned by the payment method or card network. This code is unified across all supported processors. _For payments made with Mastercard, this represents the Merchant Advice Code (MAC)._ _e.g. Code `24` refers to the message "Retry after 1 hour" for Mastercard across all supported processors._
        - `paymentMethodAdviceMessage` string — Human-readable version of the Payment Method Advice Code. This message is unified across all supported processors. _For payments made with Mastercard, this represents the message of the Merchant Advice Code (MAC)._ _e.g. Code `24` refers to the message "Retry after 1 hour" for Mastercard across all supported processors._
        - `advisedAction` 'RETRY_LATER' | 'UPDATE_DATA' | 'DO_NOT_RETRY' | 'STOP_ALL_PAYMENTS' — The Primer-recommended action to take based on the underlying decline reason and advice code. This advised action is unified across all supported processors and payment methods. - `RETRY_LATER`: The payment was likely declined due to a temporary issue (e.g. Insufficient funds). The payment can be retried immediately or at a later date. - `UPDATE_DATA`: The payment was likely declined because critical data was missing or out-of-date. Please ensure you use the most up-to-date payment information and customer details before retrying the payment. - `DO_NOT_RETRY`: The payment was declined and should not be retried. You can still charge this payment method for future orders or installments. - `STOP_ALL_PAYMENTS`: The processor or payment method explicitly informs you to stop making any payment requests with this payment method. Please use another payment method to charge this customer. - `null`: Primer is unable to determine a recommended action.
      - `reason` string — The reason for a cancel or refund request on this transaction, if any.
    - `riskData` RiskDataAPISchema — Risk data associated with this payment.
      - `fraudChecks` FraudCheckAPISchema — Results of the pre-authorization and post-authorization fraud checks.
        - `source` string
        - `preAuthorizationResult` 'ACCEPT' | 'REFUSE' | 'FAILED' | 'THREE_DS' | 'THREE_DS_EXEMPTION' — Possible pre-authorization fraud check outcomes.
        - `preAuthorizationRecommendation` 'TRANSACTION_RISK_ANALYSIS' — Pre-authorization recommendation indicating the SCA exemption or risk assessment path taken. Only present when `preAuthorizationResult` is `THREE_DS_EXEMPTION`. Values: - `TRANSACTION_RISK_ANALYSIS`: Indicates that the fraud check deemed the transaction low risk and recommends applying a Transaction Risk Analysis (TRA) exemption to bypass Strong Customer Authentication (SCA) under PSD2, reducing friction for users.
        - `postAuthorizationResult` 'ACCEPT' | 'REFUSE' | 'FAILED' | 'THREE_DS' — Possible post-authorization fraud check outcomes.
      - `cvvCheck` CVVCheckAPISchema — Results of any external CVV check performed on this payment.
        - `source` string
        - `result` 'MATCHED' | 'NOT_MATCHED' | 'NOT_VERIFIED' | 'NOT_PROVIDED' | 'NOT_APPLICABLE' | 'SKIPPED' — Possible risk assessment values for CVV and AVS checks.
      - `avsCheck` AVSCheckAPISchema — Results of any external AVS check performed on this payment.
        - `source` string
        - `result` AVSRiskAssessmentValues
          - `streetAddress` 'MATCHED' | 'NOT_MATCHED' | 'NOT_VERIFIED' | 'NOT_PROVIDED' | 'NOT_APPLICABLE' | 'SKIPPED' — Possible risk assessment values for CVV and AVS checks.
          - `postalCode` 'MATCHED' | 'NOT_MATCHED' | 'NOT_VERIFIED' | 'NOT_PROVIDED' | 'NOT_APPLICABLE' | 'SKIPPED' — Possible risk assessment values for CVV and AVS checks.

## Response `200`

Return a 200 status to indicate that the data was received successfully

---

[API](https://skmtc.dev/primer/apis/primer-webhooks.md) · [All operations](https://skmtc.dev/primer/apis/primer-webhooks/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/primer/primer-webhooks/revisions/f4be9122322f/schema)
