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

# Push payments

> Persist a batch of payments linked to pushed payees.

<Note>
  Each payment links to a previously pushed payee via `payeeClientId` (that payee's `clientPayeeId`). This is the high-volume stream and may be called repeatedly. Send the optional `Idempotency-Key` header to make a retried batch safe.
</Note>


## OpenAPI

````yaml post /reports/cesop/v1/submissions/{submissionId}/payments
openapi: 3.1.0
info:
  title: CESOP REST API
  description: >
    <p>REST API for reporting CESOP(The Central Electronic System of Payment
    information). Create a submission, send payees

    and payments under its id, then submit it to the regulatory authority.</p>


    <p><strong>Filtering is the reporting company's responsibility.</strong>
    This API reports the data you send as-is, and it does not decide which
    payments are reportable. Apply the CESOP filtering rules before sending.</p>


    <p><strong>European Commission's official reporting guideline:</strong>

    <a href="docs/cesop-guidelines-v1.2.pdf">CESOP Guidelines for the reporting
    of payment data v1.2 (PDF)</a></p>


    <p><strong>CESOP filtering rules, PSP's implementation guide:</strong>

    <a href="docs/cesop-filtering-rules.html">open the guide</a>. This is a
    quick reference only, it may not cover every case. For accurate handling of
    specific cases, refer to the regulation and official CESOP
    documentation.</p>


    <p><strong>Regulation:</strong>

    <a href="https://eur-lex.europa.eu/eli/dir/2020/284/oj">Council Directive
    (EU) 2020/284</a>

    &middot;

    <a
    href="https://taxation-customs.ec.europa.eu/taxation-1/central-electronic-system-payment-information-cesop_en">CESOP
    — European Commission</a></p>
  version: 0.0.1
servers:
  - url: https://api.rrc.dev.finventi.com
    description: Development
  - url: https://api.rrc.finventi.com
    description: Production
security:
  - bearer-jwt: []
tags:
  - name: CESOP Filtering Support
    description: >-
      Helper endpoints supporting CESOP filtering decisions. This is not part of
      the submission flow.Use them to prepare your data before sending it via
      the CESOP Submission API.
  - name: CESOP REST API
    description: >-
      REST API for submitting and correcting CESOP payee and payment data.
      Create a submission, push payees and payments under its id, then submit it
      to the regulatory authority.
paths:
  /reports/cesop/v1/submissions/{submissionId}/payments:
    post:
      tags:
        - CESOP REST API
      summary: Push payments
      description: >-
        Persists a batch of payments. Each payment links to a previously pushed
        payee via `payeeClientId` (your clientPayeeId for that payee). This is
        the high-volume stream.
      operationId: postPayments
      parameters:
        - name: Idempotency-Key
          in: header
          description: Client-provided idempotency key.
          schema:
            type: string
            maxLength: 255
        - name: submissionId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CesopPayment'
        required: true
      responses:
        '201':
          description: All payments created
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaymentResult'
        '207':
          description: Partial success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaymentResult'
        '400':
          description: All failed
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaymentResult'
components:
  schemas:
    CesopPayment:
      type: object
      description: A payment linked to a pushed payee via payeeClientId
      properties:
        payeeClientId:
          type: string
          description: Your clientPayeeId for the payee this payment belongs to
          maxLength: 100
          minLength: 0
        transactionId:
          type: string
          maxLength: 100
          minLength: 0
        refund:
          type: boolean
        refundedTransactionId:
          type: string
          maxLength: 100
          minLength: 0
        amount:
          type: number
          description: Positive for a payment, negative for a refund; zero is not allowed
          example: 100.21
        currency:
          type: string
          example: EUR
          minLength: 1
        paymentDates:
          type: array
          items:
            $ref: '#/components/schemas/CesopPaymentDate'
          maxItems: 2147483647
          minItems: 1
        paymentMethodType:
          type: string
          enum:
            - CARD
            - BANK_TRANSFER
            - DIRECT_DEBIT
            - E_MONEY
            - REMITTANCE
            - MARKETPLACE
            - INTERMEDIARY
            - OTHER
        paymentMethodSpecification:
          type: string
          maxLength: 200
          minLength: 0
        initiatedOnPremises:
          type: boolean
        payerCountryCode:
          type: string
          description: >-
            Payer location: an EU Member State, given as an [ISO 3166-1
            alpha-2](https://www.iso.org/obp/ui/#search) code
          example: DE
          minLength: 1
        payerAccountType:
          type: string
          enum:
            - IBAN
            - OBAN
            - BIC
            - OTHER
        pspRoleType:
          type: string
          enum:
            - THREE_PARTY
            - FOUR_PARTY
            - E_MONEY
            - ACQUIRER
            - E_WALLET
            - MONEY_TRANSFER
            - ISSUER
            - PAYMENT_PROCESSOR
            - E_PAYMENT
            - PAYMENT_COLLECTOR
            - OTHER
        pspRoleSpecification:
          type: string
          maxLength: 200
          minLength: 0
      required:
        - amount
        - currency
        - initiatedOnPremises
        - payeeClientId
        - payerAccountType
        - payerCountryCode
        - paymentDates
        - refund
        - transactionId
    PaymentResult:
      type: object
      description: Result of pushing a single payment
      properties:
        status:
          $ref: '#/components/schemas/Status'
        transactionId:
          type: string
          description: Client transaction id echoed back
        errors:
          type: array
          items:
            $ref: '#/components/schemas/FieldError'
      required:
        - errors
        - status
        - transactionId
    CesopPaymentDate:
      type: object
      description: Payment date
      properties:
        dateTime:
          type: string
          format: date-time
        type:
          type: string
          enum:
            - EXECUTION
            - CLEARING
            - AUTHORISATION
            - PURCHASE
            - SETTLEMENT
            - OTHER
        specification:
          type: string
          description: Specification when type = OTHER
          maxLength: 200
          minLength: 0
      required:
        - dateTime
        - type
    Status:
      type: string
      enum:
        - SUCCESS
        - FAILED
    FieldError:
      type: object
      description: Per-item validation/processing error
      properties:
        code:
          type: string
          description: >-
            Validation error code returned by the regulatory authority; only
            present for records that failed authority validation
          example: 51
        fields:
          type: array
          description: >-
            Fields that caused the error; may be empty for errors not tied to a
            single field (e.g. cross-field validation)
          example:
            - iban
          items:
            type: string
        message:
          type: string
          description: Human-readable error message
      required:
        - fields
  securitySchemes:
    bearer-jwt:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: >-
            https://auth.sandbox.finventi.com/realms/sti-connector/protocol/openid-connect/token
          scopes: {}

````