openapi: 3.1.0
info:
  version: '4'
  x-publicVersion: true
  title: Transaction webhooks
  description: 'After a transfer is booked in a balance account, Adyen sends webhooks
    with information about the transaction.


    You can use the data from these webhooks to, for example:

    - Update balances in your dashboards.

    - Keep track of incoming and outgoing funds.'
  termsOfService: https://www.adyen.com/legal/terms-and-conditions
  contact:
    name: Adyen Developer Experience team
    url: https://github.com/Adyen/adyen-openapi
tags:
- name: General
webhooks:
  balancePlatform.transaction.created:
    post:
      tags:
      - General
      summary: Transaction created
      description: 'After a transfer is booked in a balance account, Adyen sends this
        webhook with information about the transaction.


        '
      x-addedInVersion: '1'
      operationId: post-balancePlatform.transaction.created
      x-sortIndex: 0
      x-methodName: transactionCreated
      security:
      - BasicAuth: []
      requestBody:
        content:
          application/json:
            examples:
              01.balancePlatform-transaction-created-payout-ti:
                $ref: '#/components/examples/post-balancePlatform.transaction.created-01.balancePlatform-transaction-created-payout-ti'
              02.balancePlatform-transaction-created-internal-incoming:
                $ref: '#/components/examples/post-balancePlatform.transaction.created-02.balancePlatform-transaction-created-internal-incoming'
              03.balancePlatform-transaction-created-outgoing-business-account:
                $ref: '#/components/examples/post-balancePlatform.transaction.created-03.balancePlatform-transaction-created-outgoing-business-account'
            schema:
              $ref: '#/components/schemas/TransactionNotificationRequestV4'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalancePlatformNotificationResponse'
          description: OK - the request has succeeded.
components:
  schemas:
    Amount:
      additionalProperties: false
      properties:
        currency:
          description: The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes#currency-codes).
          maxLength: 3
          minLength: 3
          type: string
        value:
          description: The amount of the transaction, in [minor units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
          format: int64
          type: integer
      required:
      - value
      - currency
      type: object
    BalancePlatformNotificationResponse:
      additionalProperties: false
      properties:
        notificationResponse:
          description: Respond with any **2xx** HTTP status code to [accept the webhook](https://docs.adyen.com/development-resources/webhooks#accept-notifications).
          type: string
      type: object
    BankCategoryData:
      additionalProperties: false
      properties:
        priority:
          x-addedInVersion: '4'
          description: 'The priority for the bank transfer. This sets the speed at
            which the transfer is sent and the fees that you have to pay. Required
            for transfers with `category` **bank**.


            Possible values:


            * **regular**: for normal, low-value transactions.


            * **fast**: a faster way to transfer funds, but the fees are higher. Recommended
            for high-priority, low-value transactions.


            * **wire**: the fastest way to transfer funds, but this has the highest
            fees. Recommended for high-priority, high-value transactions.


            * **instant**: for instant funds transfers in [SEPA countries](https://www.ecb.europa.eu/paym/integration/retail/sepa/html/index.en.html).


            * **crossBorder**: for high-value transfers to a recipient in a different
            country.


            * **internal**: for transfers to an Adyen-issued business bank account
            (by bank account number/IBAN).'
          enum:
          - crossBorder
          - fast
          - instant
          - internal
          - regular
          - wire
          type: string
        type:
          default: bank
          description: '**bank**'
          enum:
          - bank
          type: string
      type: object
    InternalCategoryData:
      additionalProperties: false
      properties:
        modificationMerchantReference:
          x-addedInVersion: '4'
          description: The capture's merchant reference included in the transfer.
          type: string
        modificationPspReference:
          x-addedInVersion: '4'
          description: The capture reference included in the transfer.
          type: string
        type:
          default: internal
          description: '**internal**'
          enum:
          - internal
          type: string
      type: object
    IssuedCard:
      additionalProperties: false
      properties:
        authorisationType:
          x-addedInVersion: '4'
          description: The authorisation type. For example, **defaultAuthorisation**,
            **preAuthorisation**, **finalAuthorisation**
          type: string
        panEntryMode:
          x-addedInVersion: '4'
          description: 'Indicates the method used for entering the PAN to initiate
            a transaction.


            Possible values: **manual**, **chip**, **magstripe**, **contactless**,
            **cof**, **ecommerce**, **token**.'
          enum:
          - chip
          - cof
          - contactless
          - ecommerce
          - magstripe
          - manual
          - token
          type: string
        processingType:
          x-addedInVersion: '4'
          description: Contains information about how the payment was processed. For
            example, **ecommerce** for online or **pos** for in-person payments.
          enum:
          - atmWithdraw
          - balanceInquiry
          - ecommerce
          - moto
          - pos
          - purchaseWithCashback
          - recurring
          - token
          type: string
        relayedAuthorisationData:
          x-addedInVersion: '4'
          description: If you are using relayed authorisation, this object contains
            information from the relayed authorisation response from your server.
          $ref: '#/components/schemas/RelayedAuthorisationData'
        schemeTraceId:
          x-addedInVersion: '4'
          description: The identifier of the original payment. This ID is provided
            by the scheme and can be alphanumeric or numeric, depending on the scheme.
            The `schemeTraceID` should refer to an original `schemeUniqueTransactionID`
            provided in an earlier payment (not necessarily processed by Adyen). A
            `schemeTraceId` is typically available for authorization adjustments or
            recurring payments.
          type: string
        schemeUniqueTransactionId:
          x-addedInVersion: '4'
          description: The unique identifier created by the scheme. This ID can be
            alphanumeric or numeric depending on the scheme.
          type: string
        type:
          default: issuedCard
          description: '**issuedCard**'
          enum:
          - issuedCard
          type: string
        validationFacts:
          x-addedInVersion: '4'
          description: The evaluation of the validation facts. See [validation checks](https://docs.adyen.com/issuing/validation-checks)
            for more information.
          items:
            $ref: '#/components/schemas/TransferNotificationValidationFact'
          type: array
      type: object
    PaymentInstrument:
      additionalProperties: false
      properties:
        description:
          description: The description of the resource.
          type: string
        id:
          description: The unique identifier of the resource.
          type: string
        reference:
          description: The reference for the resource.
          type: string
        tokenType:
          x-addedInVersion: '3'
          description: The type of wallet that the network token is associated with.
          type: string
      type: object
    PlatformPayment:
      additionalProperties: false
      properties:
        modificationMerchantReference:
          x-addedInVersion: '4'
          description: The capture's merchant reference included in the transfer.
          type: string
        modificationPspReference:
          x-addedInVersion: '4'
          description: The capture reference included in the transfer.
          type: string
        paymentMerchantReference:
          x-addedInVersion: '4'
          description: The payment's merchant reference included in the transfer.
          type: string
        platformPaymentType:
          x-addedInVersion: '4'
          description: 'Specifies the nature of the transfer. This parameter helps
            categorize transfers so you can reconcile transactions at a later time,
            using the Balance Platform Accounting Report for [marketplaces](https://docs.adyen.com/marketplaces/reports-and-fees/balance-platform-accounting-report/)
            or [platforms](https://docs.adyen.com/platforms/reports-and-fees/balance-platform-accounting-report/).


            Possible values:


            * **AcquiringFees**: for the acquiring fee incurred on a transaction.


            * **AdyenCommission**: for the transaction fee due to Adyen under [blended
            rates](https://www.adyen.com/knowledge-hub/guides/payments-training-guide/get-the-best-from-your-card-processing).


            * **AdyenFees**: for all the transaction fees due to Adyen. This is the
            sum of Adyen''s commission and Adyen''s markup.


            * **AdyenMarkup**: for the transaction fee due to Adyen under [Interchange++
            pricing](https://www.adyen.com/pricing).


            * **BalanceAccount**: or the sale amount of a transaction.


            * **Commission**: for your platform''s commission on a transaction.


            * **DCCPlatformCommission**: for the DCC Commission for the platform on
            a transaction.


            * **Interchange**: for the interchange fee (fee paid to the issuer) incurred
            on a transaction.


            * **PaymentFee**: for all of the transaction fees.


            * **Remainder**: for the left over amount after currency conversion.


            * **SchemeFee**: for the scheme fee incurred on a transaction. This is
            the sum of the interchange fees and the acquiring fees.


            * **Surcharge**: for the surcharge paid by the customer on a transaction.


            * **Tip**: for the tip paid by the customer.


            * **TopUp**: for an incoming transfer to top up your user''s balance account.


            * **VAT**: for the Value Added Tax.'
          enum:
          - AcquiringFees
          - AdyenCommission
          - AdyenFees
          - AdyenMarkup
          - BalanceAccount
          - Commission
          - DCCPlatformCommission
          - Default
          - Interchange
          - PaymentFee
          - Remainder
          - SchemeFee
          - Surcharge
          - Tip
          - TopUp
          - VAT
          type: string
        pspPaymentReference:
          x-addedInVersion: '4'
          description: The payment reference included in the transfer.
          type: string
        type:
          default: platformPayment
          description: '**platformPayment**'
          enum:
          - platformPayment
          type: string
      type: object
    RelayedAuthorisationData:
      additionalProperties: false
      properties:
        metadata:
          x-addedInVersion: '3'
          additionalProperties:
            type: string
          description: Contains key-value pairs of your references and descriptions,
            for example, `customId`:`your-own-custom-field-12345`.
          type: object
        reference:
          x-addedInVersion: '3'
          description: Your reference for the relayed authorisation data.
          type: string
      type: object
    Resource:
      additionalProperties: false
      properties:
        balancePlatform:
          description: The unique identifier of the balance platform.
          type: string
        creationDate:
          description: The date and time when the event was triggered, in ISO 8601
            extended format. For example, **2020-12-18T10:15:30+01:00**.
          format: date-time
          type: string
        id:
          description: The ID of the resource.
          type: string
      type: object
    ResourceReference:
      additionalProperties: false
      properties:
        description:
          description: The description of the resource.
          type: string
        id:
          description: The unique identifier of the resource.
          type: string
        reference:
          description: The reference for the resource.
          type: string
      type: object
    Transaction:
      additionalProperties: false
      properties:
        accountHolder:
          x-addedInVersion: '4'
          description: Contains information about the account holder associated with
            the `balanceAccount`.
          $ref: '#/components/schemas/ResourceReference'
        amount:
          x-addedInVersion: '1'
          description: Contains information about the amount of the transaction.
          $ref: '#/components/schemas/Amount'
        balanceAccount:
          x-addedInVersion: '4'
          description: Contains information about the balance account involved in
            the transaction.
          $ref: '#/components/schemas/ResourceReference'
        balancePlatform:
          x-addedInVersion: '1'
          description: The unique identifier of the balance platform.
          type: string
        bookingDate:
          x-addedInVersion: '1'
          description: The date the transaction was booked into the balance account.
          format: date-time
          type: string
        creationDate:
          description: The date and time when the event was triggered, in ISO 8601
            extended format. For example, **2020-12-18T10:15:30+01:00**.
          format: date-time
          type: string
        description:
          x-addedInVersion: '1'
          description: The `description` from the `/transfers` request.
          type: string
        id:
          x-addedInVersion: '1'
          description: The unique identifier of the transaction.
          type: string
        paymentInstrument:
          x-addedInVersion: '4'
          description: Contains information about the payment instrument that was
            used for the transaction.
          $ref: '#/components/schemas/PaymentInstrument'
        referenceForBeneficiary:
          x-addedInVersion: '1'
          description: "The reference sent to or received from the counterparty.\n\
            \n* For outgoing funds, this is the [`referenceForBeneficiary`](https://docs.adyen.com/api-explorer/#/transfers/latest/post/transfers__resParam_referenceForBeneficiary)\
            \ from the  [`/transfers`](https://docs.adyen.com/api-explorer/#/transfers/latest/post/transfers__reqParam_referenceForBeneficiary)\
            \ request.\n\n * For incoming funds, this is the reference from the sender."
          type: string
        status:
          x-addedInVersion: '1'
          description: "The status of the transaction.\n\n Possible values:\n\n* **pending**:\
            \ The transaction is still pending.\n\n* **booked**: The transaction has\
            \ been booked to the balance account.\n\n"
          enum:
          - booked
          - pending
          type: string
        transfer:
          x-addedInVersion: '4'
          description: Contains information about the transfer related to the transaction.
          $ref: '#/components/schemas/TransferView'
        valueDate:
          x-addedInVersion: '1'
          description: The date the transfer amount becomes available in the balance
            account.
          format: date-time
          type: string
      required:
      - id
      - accountHolder
      - balanceAccount
      - amount
      - status
      - bookingDate
      - valueDate
      - balancePlatform
      type: object
    TransactionNotificationRequestV4:
      additionalProperties: false
      properties:
        data:
          description: Contains details about the event.
          $ref: '#/components/schemas/Transaction'
        environment:
          description: 'The environment from which the webhook originated.


            Possible values: **test**, **live**.'
          type: string
        timestamp:
          description: When the event was queued.
          format: date-time
          type: string
        type:
          description: Type of the webhook.
          enum:
          - balancePlatform.transaction.created
          type: string
      required:
      - environment
      - data
      type: object
    TransferNotificationValidationFact:
      additionalProperties: false
      properties:
        result:
          description: The evaluation result of the validation fact.
          type: string
        type:
          description: The type of the validation fact.
          type: string
      type: object
    TransferView:
      additionalProperties: false
      properties:
        categoryData:
          x-addedInVersion: '4'
          description: The relevant data according to the transfer category.
          oneOf:
          - $ref: '#/components/schemas/BankCategoryData'
          - $ref: '#/components/schemas/InternalCategoryData'
          - $ref: '#/components/schemas/IssuedCard'
          - $ref: '#/components/schemas/PlatformPayment'
        id:
          description: The ID of the resource.
          type: string
        reference:
          x-addedInVersion: '4'
          description: The [`reference`](https://docs.adyen.com/api-explorer/#/transfers/latest/post/transfers__reqParam_reference)
            from the `/transfers` request. If you haven't provided any, Adyen generates
            a unique reference.
          type: string
      required:
      - reference
      type: object
  securitySchemes:
    BasicAuth:
      scheme: basic
      type: http
  examples:
    post-balancePlatform.transaction.created-01.balancePlatform-transaction-created-payout-ti:
      summary: Transaction related to a payout
      description: Example webhook for a transaction related to a payout to a transfer
        instrument
      value:
        data:
          id: EVJN00000000000000000000000003EUR
          amount:
            value: -10000
            currency: EUR
          status: booked
          transfer:
            categoryData:
              priority: regular
              type: bank
            id: 3JNC3O5ZVFLLGV4B
            reference: ' Your internal reference for the transfer'
          valueDate: '2023-08-11T16:19:35+02:00'
          bookingDate: '2023-08-11T16:31:02+02:00'
          creationDate: '2023-08-11T16:19:35+02:00'
          description: Your description of the transfer
          referenceForBeneficiary: Your reference sent to the beneficiary of the transfer
          accountHolder:
            id: AH00000000000000000000001
            reference: Your reference for the account holder
            description: Your description of the account holder
          balanceAccount:
            id: BA00000000000000000000001
            description: Your description of the balance account from where the amount
              is debited.
          balancePlatform: YOUR_BALANCE_PLATFORM
        environment: test
        timestamp: '2023-08-11T16:16:35+02:00'
        type: balancePlatform.transaction.created
    post-balancePlatform.transaction.created-02.balancePlatform-transaction-created-internal-incoming:
      summary: Transaction related to an incoming internal transfer
      description: Example webhook for a transaction related to an incoming internal
        transfer
      value:
        data:
          id: EVJN00000000000000000000000003EUR
          amount:
            value: 10000
            currency: EUR
          status: booked
          transfer:
            categoryData:
              type: internal
            id: 48TYZO5ZVURJ2FCW
            reference: ' Your internal reference for the transfer'
          valueDate: '2023-08-11T16:19:35+02:00'
          bookingDate: '2023-08-11T16:31:02+02:00'
          creationDate: '2023-08-11T16:19:35+02:00'
          description: The sender's of the transfer
          referenceForBeneficiary: The sender's reference sent to the beneficiary
            of the transfer
          accountHolder:
            id: AH00000000000000000000001
            reference: Your reference for the account holder
            description: Your description of the account holder
          balanceAccount:
            id: BA00000000000000000000001
            description: Your description of the balance account from where the amount
              is debited.
          balancePlatform: YOUR_BALANCE_PLATFORM
        environment: test
        timestamp: '2023-08-11T16:16:35+02:00'
        type: balancePlatform.transaction.created
    post-balancePlatform.transaction.created-03.balancePlatform-transaction-created-outgoing-business-account:
      summary: Transaction related to an outgoing bank transfer
      description: Example webhook for a transaction related to an outgoing bank transfer
      value:
        data:
          id: EVJN00000000000000000000000003EUR
          amount:
            value: -10000
            currency: EUR
          status: booked
          transfer:
            categoryData:
              priority: regular
              type: bank
            id: 3JNC3O5ZVFLLGV4B
            reference: ' Your internal reference for the transfer'
          valueDate: '2023-08-11T16:19:35+02:00'
          bookingDate: '2023-08-11T16:31:02+02:00'
          creationDate: '2023-08-11T16:19:35+02:00'
          description: Your description of the transfer
          referenceForBeneficiary: Your reference sent to the beneficiary of the transfer
          accountHolder:
            id: AH00000000000000000000001
            reference: Your reference for the account holder
            description: Your description of the account holder
          balanceAccount:
            id: BA00000000000000000000001
            description: Your description of the balance account from where the amount
              is debited.
          paymentInstrument:
            id: PI00000000000000000000001
            description: Your description of the payment instrument
          balancePlatform: YOUR_BALANCE_PLATFORM
        environment: test
        timestamp: '2023-08-11T16:16:35+02:00'
        type: balancePlatform.transaction.created
