> ## Documentation Index
> Fetch the complete documentation index at: https://docs.equalsmoney.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Match a payment to a bank transaction

> Pairs an UNMATCHED payment with the UNMATCHED bank transaction that settled it, for when reconciliation could not pair them automatically, and sends the merchant its reconciliation webhook. Returns 404 if the payment or the transaction is not the merchant's, and 409 if either is already matched.



## OpenAPI

````yaml /autogenerated/openapi/roqqett.openapi.json post /roqqett/reconciliation/matches
openapi: 3.1.0
info:
  title: Roqqett API
  version: 2.0.0
  description: Version 2
  license:
    name: UNLICENSED
    url: https://docs.equalsmoney.com
servers:
  - url: https://api.equalsmoney.com/v2
    description: Production
security: []
paths:
  /roqqett/reconciliation/matches:
    post:
      tags:
        - Reconciliation
      summary: Match a payment to a bank transaction
      description: >-
        Pairs an UNMATCHED payment with the UNMATCHED bank transaction that
        settled it, for when reconciliation could not pair them automatically,
        and sends the merchant its reconciliation webhook. Returns 404 if the
        payment or the transaction is not the merchant's, and 409 if either is
        already matched.
      operationId: createReconciliationMatch
      parameters:
        - name: accountId
          in: query
          schema:
            description: The ID of the account to work with.
            type:
              - string
            example: F50091
          required: true
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type:
                - object
              properties:
                paymentId:
                  type:
                    - string
                  format: uuid
                  maxLength: 36
                  description: The ID of a Roqqett payment or refund record.
                  example: 9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34
                transactionId:
                  type:
                    - string
                  format: uuid
                  maxLength: 36
                  description: >-
                    The ID of a reconciliation transaction: one line of the
                    merchant's connected bank account statement.
                  example: e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d
              required:
                - paymentId
                - transactionId
              example:
                paymentId: 9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34
                transactionId: e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type:
                  - object
                properties:
                  id:
                    type:
                      - string
                    format: uuid
                    maxLength: 36
                    description: The ID of a reconciliation match.
                    example: 3b9d6f2a-8c1e-4a7d-9f5b-2e0c4a6d8b13
                  payment:
                    type:
                      - object
                    properties:
                      paymentId:
                        type:
                          - string
                        format: uuid
                        maxLength: 36
                        description: The ID of a Roqqett payment or refund record.
                        example: 9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34
                      type:
                        description: >-
                          PAYMENT moves money from the payer; REFUND moves it
                          back.
                        type:
                          - string
                        enum:
                          - PAYMENT
                          - REFUND
                        example: PAYMENT
                      status:
                        type:
                          - string
                        enum:
                          - MATCHED
                          - UNMATCHED
                        description: >-
                          MATCHED once the payment and a bank transaction have
                          been paired, automatically or by hand.
                        example: UNMATCHED
                      amount:
                        type:
                          - object
                        properties:
                          amount:
                            type:
                              - string
                            maxLength: 32
                            pattern: ^[0-9]+(\.[0-9]+)?$
                            description: >-
                              Decimal amount in major units, as a string. Never
                              a float.
                            example: '10000.00'
                          currencyCode:
                            type:
                              - string
                            enum:
                              - GBP
                              - EUR
                            description: >-
                              ISO-4217 code of a currency Roqqett can take
                              payments in: GBP over Faster Payments, EUR over
                              SEPA Instant.
                            example: GBP
                        required:
                          - amount
                          - currencyCode
                        description: >-
                          A money value: a decimal amount as a string plus an
                          ISO-4217 currency code.
                      reference:
                        type:
                          - string
                          - 'null'
                        minLength: 1
                        maxLength: 255
                        description: >-
                          The reference the payment carried to the merchant's
                          bank, which reconciliation matches on. `null` when
                          there was none.
                        example: RQ123456
                      merchantReference:
                        type:
                          - string
                          - 'null'
                        minLength: 1
                        maxLength: 128
                        description: >-
                          The merchant's own reference for this checkout
                          session, such as its order or basket ID. Shown to the
                          merchant, never to the payer's bank.
                        example: ORDER-10421
                      checkoutName:
                        type:
                          - string
                          - 'null'
                        maxLength: 255
                        description: >-
                          Name of the checkout the payment was taken on. `null`
                          when it was not taken on a named checkout.
                        example: Example Shop checkout
                      bankDetails:
                        discriminator:
                          propertyName: type
                        oneOf:
                          - type:
                              - object
                            properties:
                              type:
                                type:
                                  - string
                                enum:
                                  - SORT_CODE
                              sortCode:
                                type:
                                  - string
                                maxLength: 6
                                description: UK sort code.
                                example: '040004'
                              accountNumberLastFour:
                                type:
                                  - string
                                minLength: 4
                                maxLength: 4
                                description: Last four digits of the account number.
                                example: '5678'
                            required:
                              - type
                              - sortCode
                              - accountNumberLastFour
                          - type:
                              - object
                            properties:
                              type:
                                type:
                                  - string
                                enum:
                                  - IBAN
                              ibanLastFour:
                                type:
                                  - string
                                minLength: 4
                                maxLength: 4
                                description: Last four characters of the IBAN.
                                example: '3000'
                              bic:
                                type:
                                  - string
                                maxLength: 11
                                description: BIC of the payee's bank.
                                example: COBADEFFXXX
                            required:
                              - type
                              - ibanLastFour
                              - bic
                        description: >-
                          The merchant's bank account the payment paid into, or
                          a refund was paid from.
                      transactionId:
                        type:
                          - string
                          - 'null'
                        format: uuid
                        maxLength: 36
                        description: >-
                          The bank transaction the payment is matched to. `null`
                          while UNMATCHED.
                        example: e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d
                      completedAt:
                        type:
                          - string
                          - 'null'
                        format: date-time
                        description: >-
                          When the payment completed. `null` when none was
                          recorded.
                        example: '2026-10-02T12:00:05Z'
                    required:
                      - paymentId
                      - type
                      - status
                      - amount
                      - reference
                      - merchantReference
                      - checkoutName
                      - bankDetails
                      - transactionId
                      - completedAt
                    description: A completed payment or refund as reconciliation sees it.
                  transaction:
                    type:
                      - object
                    properties:
                      id:
                        type:
                          - string
                        format: uuid
                        maxLength: 36
                        description: >-
                          The ID of a reconciliation transaction: one line of
                          the merchant's connected bank account statement.
                        example: e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d
                      status:
                        type:
                          - string
                        enum:
                          - MATCHED
                          - UNMATCHED
                        description: >-
                          MATCHED once the payment and a bank transaction have
                          been paired, automatically or by hand.
                        example: UNMATCHED
                      direction:
                        type:
                          - string
                        enum:
                          - CREDIT
                          - DEBIT
                        description: CREDIT paid into the account; DEBIT paid out of it.
                        example: CREDIT
                      amount:
                        type:
                          - object
                        properties:
                          amount:
                            type:
                              - string
                            maxLength: 32
                            pattern: ^[0-9]+(\.[0-9]+)?$
                            description: >-
                              Decimal amount in major units, as a string. Never
                              a float.
                            example: '10000.00'
                          currencyCode:
                            type:
                              - string
                            enum:
                              - AED
                              - AFN
                              - ALL
                              - AMD
                              - ANG
                              - AOA
                              - ARS
                              - AUD
                              - AWG
                              - AZN
                              - BAM
                              - BBD
                              - BDT
                              - BGN
                              - BHD
                              - BIF
                              - BMD
                              - BND
                              - BOB
                              - BOV
                              - BRL
                              - BSD
                              - BTN
                              - BWP
                              - BYN
                              - BZD
                              - CAD
                              - CDF
                              - CHF
                              - CLP
                              - CNY
                              - COP
                              - 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
                              - 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
                              - MGA
                              - MKD
                              - MMK
                              - MNT
                              - MOP
                              - MUR
                              - MVR
                              - MWK
                              - MXN
                              - MYR
                              - MZN
                              - NAD
                              - NGN
                              - NIO
                              - NOK
                              - NPR
                              - NZD
                              - OMR
                              - PAB
                              - PEN
                              - PGK
                              - PHP
                              - PKR
                              - PLN
                              - PYG
                              - QAR
                              - RON
                              - RSD
                              - RUB
                              - RWF
                              - SAR
                              - SBD
                              - SCR
                              - SEK
                              - SGD
                              - SOS
                              - SRD
                              - SSP
                              - STN
                              - SYP
                              - SZL
                              - THB
                              - TJS
                              - TMT
                              - TND
                              - TOP
                              - TRY
                              - TTD
                              - TWD
                              - TZS
                              - UAH
                              - UGX
                              - USD
                              - UYU
                              - UZS
                              - VND
                              - VUV
                              - WST
                              - XAF
                              - XCD
                              - XOF
                              - XPF
                              - YER
                              - ZAR
                              - ZMW
                            description: >-
                              ISO-4217 code of a currency payments currently
                              accept.
                            example: USD
                        required:
                          - amount
                          - currencyCode
                        description: >-
                          A money value: a decimal amount as a string plus an
                          ISO-4217 currency code.
                      reference:
                        type:
                          - string
                          - 'null'
                        minLength: 1
                        maxLength: 255
                        description: >-
                          The Roqqett reference found in the transaction
                          description, which reconciliation matches on. `null`
                          when it has none.
                        example: RQ123456
                      description:
                        type:
                          - string
                        maxLength: 255
                        description: The transaction description as the bank reported it.
                        example: MyRef RQ123456 MyRef2
                      bankDetails:
                        discriminator:
                          propertyName: type
                        oneOf:
                          - type:
                              - object
                            properties:
                              type:
                                type:
                                  - string
                                enum:
                                  - SORT_CODE
                              sortCode:
                                type:
                                  - string
                                maxLength: 6
                                description: UK sort code.
                                example: '040004'
                              accountNumberLastFour:
                                type:
                                  - string
                                minLength: 4
                                maxLength: 4
                                description: Last four digits of the account number.
                                example: '5678'
                            required:
                              - type
                              - sortCode
                              - accountNumberLastFour
                          - type:
                              - object
                            properties:
                              type:
                                type:
                                  - string
                                enum:
                                  - IBAN
                              ibanLastFour:
                                type:
                                  - string
                                minLength: 4
                                maxLength: 4
                                description: Last four characters of the IBAN.
                                example: '3000'
                              bic:
                                type:
                                  - string
                                maxLength: 11
                                description: BIC of the payee's bank.
                                example: COBADEFFXXX
                            required:
                              - type
                              - ibanLastFour
                              - bic
                        description: >-
                          The merchant's connected bank account the transaction
                          is on.
                      paymentId:
                        type:
                          - string
                          - 'null'
                        format: uuid
                        maxLength: 36
                        description: >-
                          The payment the transaction is matched to. `null`
                          while UNMATCHED.
                        example: 9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34
                      bookedAt:
                        type:
                          - string
                          - 'null'
                        format: date-time
                        description: >-
                          When the bank confirmed the transaction. `null` when
                          the bank reported no confirmation time.
                        example: '2026-10-02T12:00:05Z'
                      receivedAt:
                        type:
                          - string
                          - 'null'
                        format: date-time
                        description: >-
                          When Roqqett received the transaction from the bank.
                          `null` when none was recorded.
                        example: '2026-10-02T12:10:00Z'
                      createdAt:
                        type:
                          - string
                        format: date-time
                        description: >-
                          The date the Resource was initially created. ISO 8601
                          format without milliseconds.
                    required:
                      - id
                      - status
                      - direction
                      - amount
                      - reference
                      - description
                      - bankDetails
                      - paymentId
                      - bookedAt
                      - receivedAt
                      - createdAt
                    description: >-
                      One line of the merchant's connected bank account
                      statement, as reconciliation sees it.
                  createdAt:
                    type:
                      - string
                    format: date-time
                    description: >-
                      The date the Resource was initially created. ISO 8601
                      format without milliseconds.
                required:
                  - id
                  - payment
                  - transaction
                  - createdAt
                example:
                  id: 3b9d6f2a-8c1e-4a7d-9f5b-2e0c4a6d8b13
                  payment:
                    paymentId: 9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34
                    type: PAYMENT
                    status: UNMATCHED
                    amount:
                      amount: '10000.00'
                      currencyCode: GBP
                    reference: RQ123456
                    merchantReference: ORDER-10421
                    checkoutName: Example Shop checkout
                    bankDetails:
                      type: SORT_CODE
                      sortCode: '040004'
                      accountNumberLastFour: '5678'
                    transactionId: e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d
                    completedAt: '2026-10-02T12:00:05Z'
                  transaction:
                    id: e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d
                    status: UNMATCHED
                    direction: CREDIT
                    amount:
                      amount: '10000.00'
                      currencyCode: USD
                    reference: RQ123456
                    description: MyRef RQ123456 MyRef2
                    bankDetails:
                      type: SORT_CODE
                      sortCode: '040004'
                      accountNumberLastFour: '5678'
                    paymentId: 9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34
                    bookedAt: '2026-10-02T12:00:05Z'
                    receivedAt: '2026-10-02T12:10:00Z'
                    createdAt: '2019-08-24T14:15:22Z'
                  createdAt: '2019-08-24T14:15:22Z'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type:
                  - object
                properties:
                  message:
                    type:
                      - string
                    maxLength: 1024
                    description: Human-readable error description.
                    example: Checkout session not found.
                  errors:
                    type:
                      - array
                    items:
                      type:
                        - object
                      properties:
                        path:
                          type:
                            - string
                          description: The location of the bad parameter.
                        message:
                          type:
                            - string
                          description: Description of why the validation failed.
                        errorCode:
                          type:
                            - string
                          description: Where the error occurred.
                      required:
                        - path
                        - message
                      description: An object containing details about one particular error.
                required:
                  - message
                  - errors
                example:
                  message: Checkout session not found.
                  errors:
                    - path: string
                      message: string
                      errorCode: string
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type:
                  - object
                properties:
                  message:
                    type:
                      - string
                    maxLength: 1024
                    description: Human-readable error description.
                    example: Checkout session not found.
                  errors:
                    type:
                      - array
                    items:
                      type:
                        - object
                      properties:
                        path:
                          type:
                            - string
                          description: The location of the bad parameter.
                        message:
                          type:
                            - string
                          description: Description of why the validation failed.
                        errorCode:
                          type:
                            - string
                          description: Where the error occurred.
                      required:
                        - path
                        - message
                      description: An object containing details about one particular error.
                required:
                  - message
                  - errors
                example:
                  message: Checkout session not found.
                  errors:
                    - path: string
                      message: string
                      errorCode: string
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type:
                  - object
                properties:
                  message:
                    type:
                      - string
                    maxLength: 1024
                    description: Human-readable error description.
                    example: Checkout session not found.
                  errors:
                    type:
                      - array
                    items:
                      type:
                        - object
                      properties:
                        path:
                          type:
                            - string
                          description: The location of the bad parameter.
                        message:
                          type:
                            - string
                          description: Description of why the validation failed.
                        errorCode:
                          type:
                            - string
                          description: Where the error occurred.
                      required:
                        - path
                        - message
                      description: An object containing details about one particular error.
                required:
                  - message
                  - errors
                example:
                  message: Checkout session not found.
                  errors:
                    - path: string
                      message: string
                      errorCode: string
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type:
                  - object
                properties:
                  message:
                    type:
                      - string
                    maxLength: 1024
                    description: Human-readable error description.
                    example: Checkout session not found.
                  errors:
                    type:
                      - array
                    items:
                      type:
                        - object
                      properties:
                        path:
                          type:
                            - string
                          description: The location of the bad parameter.
                        message:
                          type:
                            - string
                          description: Description of why the validation failed.
                        errorCode:
                          type:
                            - string
                          description: Where the error occurred.
                      required:
                        - path
                        - message
                      description: An object containing details about one particular error.
                required:
                  - message
                  - errors
                example:
                  message: Checkout session not found.
                  errors:
                    - path: string
                      message: string
                      errorCode: string
      security:
        - CommonAuth:
            - roqqett:recon:create-match:any
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl --request POST \
              --url 'https://api.equalsmoney.com/v2/roqqett/reconciliation/matches?accountId={{accountId}}' \
              --header 'Authorization: <api-key>' \
              --header 'Content-Type: application/json' \
              --data '
            {
              "paymentId": "9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34",
              "transactionId": "e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d"
            }
            '
components:
  securitySchemes:
    CommonAuth:
      type: apiKey
      in: header
      name: Authorization

````