> ## 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.

# Send investigation reminder

> Sends a status request (pacs.028) chasing an unanswered claim non-receipt.

<Warning>This API is in preview and subject to change.</Warning>

## Overview

Chases a claim non-receipt (camt.027) that the beneficiary bank has not answered. The reminder goes out as a pacs.028 status request.

Under the EPC SCT rulebook a camt.027 expects a camt.029 within 10 banking business days. After that you may push a status request as a reminder, provided the payment is still within 13 months of its debit date.

The path parameter is the ID of the **claim**, not of a reminder. The response is the claim itself, with the new reminder added to `claimNonReceiptDetails.reminders`. Reminders are never returned as standalone entries by the search or list endpoints — read them through the claim they belong to.

Do not create a second claim non-receipt for the same payment instead of sending a reminder. A payment can have only one pending outbound claim at a time; see [Create investigation](/payments/api/investigations/create-investigation).

## When you can send one

| Condition           | Requirement                                                                                  |
| ------------------- | -------------------------------------------------------------------------------------------- |
| Investigation type  | Claim non-receipt (camt.027). A payment status request cannot be reminded                    |
| Scheme              | SEPA CT (`schema: SEPA`). Instant payments are not eligible                                  |
| Direction           | Outbound                                                                                     |
| Status              | Still pending                                                                                |
| Waiting time        | At least 10 banking business days since the claim was sent, or 5 since the previous reminder |
| Payment age         | Debit date within the last 13 months                                                         |
| Reminders in flight | None. An earlier reminder must have been dispatched before you send another                  |

Banking business days follow the calendar of the payment's debtor bank.

<Tip>
  Rather than testing these yourself, read `reminderEligibility` on [Get investigation](/payments/api/investigations/get-investigation). It returns `eligible`, a `reason` when it is false, and `availableFrom` with the first date a reminder becomes possible when the reason is `TOO_EARLY`. Search and list responses omit it.
</Tip>

```json theme={null}
"reminderEligibility": {
  "eligible": false,
  "reason": "TOO_EARLY",
  "availableFrom": "2026-09-15"
}
```

| `reason`             | Meaning                                                                                         |
| -------------------- | ----------------------------------------------------------------------------------------------- |
| `NOT_APPLICABLE`     | Not an outbound, pending SEPA CT claim non-receipt.                                             |
| `CLAIM_NOT_SENT`     | The claim has not reached the clearing system yet, so the waiting period has not started.       |
| `REMINDER_IN_FLIGHT` | An earlier reminder is still waiting to be dispatched.                                          |
| `TOO_EARLY`          | The waiting period has not elapsed. `availableFrom` gives the first date a reminder is allowed. |
| `PERIOD_EXPIRED`     | The payment's debit date is older than the permitted period.                                    |

`reason` and `availableFrom` are `null` when `eligible` is `true`.

## After sending

The reminder is dispatched at the next SEPA Credit Transfer clearing cycle, and `sentAt` is set on it once it leaves. From then on:

* It resolves when the beneficiary bank answers the **claim** with a camt.029 — a reminder is never resolved on its own.
* It moves to `REJECTED` if the clearing system rejects the pacs.028, or if it cannot be dispatched.
* A positive clearing acknowledgement updates `delivery` only. The reminder stays pending, because acknowledgement by the clearing system is not an answer from the beneficiary bank.

You can send a further reminder 5 banking business days after the last one, for as long as the claim stays pending and the payment is within the 13-month window.

## Errors

| Status | Code                              | Cause                                          |
| ------ | --------------------------------- | ---------------------------------------------- |
| 400    | `REMINDER_NOT_ELIGIBLE`           | Too early, or the claim was never sent         |
| 400    | `REMINDER_PERIOD_EXPIRED`         | The payment is past the 13-month limit         |
| 400    | `REMINDER_ALREADY_EXISTS`         | An earlier reminder is still awaiting dispatch |
| 400    | `ILLEGAL_INVESTIGATION_TYPE`      | Not a claim non-receipt                        |
| 400    | `ILLEGAL_INVESTIGATION_SCHEMA`    | Not on the SEPA CT scheme                      |
| 400    | `ILLEGAL_INVESTIGATION_DIRECTION` | Not an outbound investigation                  |
| 400    | `ILLEGAL_INVESTIGATION_STATUS`    | The claim is no longer pending                 |
| 404    | `INVESTIGATION_NOT_FOUND`         | Unknown investigation id                       |
| 404    | `TRANSACTION_NOT_FOUND`           | The linked payment is missing                  |

### Example error response

```json theme={null}
{
  "code": "REMINDER_NOT_ELIGIBLE",
  "message": "Only 4 banking business day(s) have elapsed since claim non-receipt 100141 was sent; 10 are required.",
  "data": {
    "errors": [
      {
        "field_name": "investigationId",
        "value": "100141"
      }
    ]
  }
}
```


## OpenAPI

````yaml post /v3/investigations/{id}:remind
openapi: 3.1.0
info:
  description: >
    # General info

    ## Base API URL for environments:

    * TEST: https://api.pgw-sandbox.finventi.com

    * PROD: https://api.pgw.finventi.com


    # Authentication

    <b>NOTE:</b> IP whitelisting is mandatory to gain access to our APIs in both
    TEST and PROD environments. To register your IPs, please contact
    `connectors-support@inventi.lt`.


    Our API uses OAuth 2.0 for authentication. To access the API, you need to
    obtain a bearer token from the authorization server.


    ### Obtain a Bearer Token

    To get a bearer token, use the following cURL command:


    ```

    curl -X POST \

    --location
    '<auth-server-url>/realms/<client-name>/protocol/openid-connect/token' \

    --header 'Content-Type: application/x-www-form-urlencoded' \

    --data-urlencode 'grant_type=client_credentials' \

    --data-urlencode 'client_id=api-sepa-gateway-client' \

    --data-urlencode 'client_secret=<client-secret>'

    ```


    where:


    `<auth-server-url>` is either `https://auth.sandbox.finventi.com/` (TEST) or
    `https://auth.finventi.com/` (PROD).


    `<client-name>` is a value of TenantID that was assigned by INVENTI team
    during initial configuration and could be found in Configuration Matrix that
    was shared to your representative.


    `<client-secret>` is a value that can be obtained by logging into SEPA
    Dashboard UI and going to <i>User Management</i> -> <i>Clients</i> ->
    `api-sepa-gateway-client` -> <i>Credentials</i> -> <i>Client Secret</i>.


    <b>NOTE:</b> The token is valid for 45 minutes.


    ### Include the Bearer Token in Requests

    Include the obtained token in the `Authorization` header of your API
    requests with the `Bearer` prefix:


    ```

    Authorization: Bearer <bearer-token>

    ```


    ### Example Request:

    ```

    curl --location --request POST
    'https://api.pgw-sandbox.finventi.com/gateway/createSepaPmt' \

    --header 'Authorization: Bearer <bearer-token>' \

    ```


    # Idempotency

    In our API, we support idempotency for certain endpoints to ensure that
    repeated requests have the same effect as a single request.

    Idempotent endpoints allow you to safely retry requests without worrying
    about unintended side effects, such as duplicate resource creation or
    modification. \


    To achieve idempotency, you need to include the **Idempotency-Key** header
    in your requests to the supported endpoints.

    If the provided idempotency key corresponds to an existing database object,
    the response will retrieve the data of the existing object instead of
    creating a new one.

    ## Idempotency-Key Header

    The **Idempotency-Key** header is used to uniquely identify a request and
    associate it with a specific operation. While the header value can be any
    string, we recommend using a UUID (Universally Unique Identifier) for
    uniqueness within the scope of the endpoint. This allows you to easily
    generate a unique key for each request.

    ### Example Request

    ```

    curl --location --request POST
    'https://api.pgw-sandbox.finventi.com/gateway/createSepaPmt' \

    --header 'Idempotency-Key: 123e4567-e89b-12d3-a456-426655440000' \

    ```

    ## Supported endpoints:

    * /gateway/createSepaPmt


    # Webhooks

    ## Signature Verification


    ### Introduction

    To ensure the authenticity and integrity of webhooks sent from our system,
    each webhook includes a digital signature. This signature allows the
    receiver to verify that the payload has not been altered during
    transmission. Verifying the signature confirms the webhook's origin and
    ensures its data integrity.


    Each webhook includes the signature in the `finventi-signature-N` HTTP
    header, where `N` represents the version of the signature. The current
    version is `1` (`finventi-signature-1`). When public keys are rotated, new
    header versions are issued, ensuring backward compatibility for clients
    until their code is updated.


    The signature should be verified using the RSASSA-PKCS1-v1.5 algorithm and
    the appropriate public key, based on the environment.


    ### Environment Public Keys

    Use the corresponding public key based on the environment in which you are
    verifying the webhook (current version - `1`)

    #### Test Environment Public Key

    ```text

    -----BEGIN PUBLIC KEY-----

    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvoc7GrFbduCeSVxFPJ3l

    a0NRa0caUqBddQAOUxuHTOuShOvdKbxRYc5u1vb9YNLJWjx4XSHESp8Q7oocqXt8

    +weBFsk/kAtJ4zjbYPY1PvAOLe+WObdxxZtfwzpwVxbtP6GQk5aUi2HbITe3EDf/

    7WEmvnAcWm++Mo6+GSh2Ky1t6o4htrx1lH2gYVg0iRHx1W9lLXjMl/5oLi1C6dtx

    TnBmXMlN/NT5YYU4lVlXQBZzS7a8ZgwosfW+v1uCimzbGcWytmmcFISjSNqkYaeg

    IXDYwKLwlsWtm975ln6UL20KcSt7ia+Lpuv7cdxJlOY95y0ds/PCw1x0HEPxU+44

    swIDAQAB

    -----END PUBLIC KEY-----

    ```


    #### Production Environment Public Key

    ```text

    -----BEGIN PUBLIC KEY-----

    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1pTRk8oUoGAAgXE8Gni8

    xvG2MJz6uYkZcNlXhPTrsxfqD4W5uDZOhy7APLz47Plcv+XL45kO0BFgjYHDRASx

    IIb6K5+YVyf9p1biLdZgf047wxwuC65bT6ddhuSX9FrMEtgPvghltSSfTZjdwVck

    QNE2JEV7vcIfq3ke5US+SP+6AHIcPyXypslp50CtO8wpZG+pz7rSdOoiRFTMhzVZ

    efDetRcnFv6DoAdapOiNVG9MBPqnE+BT5mnAlgF6V551ZJFOMhFvm/cLtP3Gj2a9

    /zNeCT1ZXHIuqxwrBUy/R8RSKJJIBWUbJEHF+pcPite+MgJm529Bt6K4mGCv1Nzv

    GwIDAQAB

    -----END PUBLIC KEY-----

    ```


    ### Additional Headers


    Each webhook includes the following HTTP headers to assist in verifying the
    signature:

    * `finventi-signature-N`: Each webhook contains the signature.

    * `finventi-signature-timestamp`: A UNIX timestamp (UTC) indicating when the
    webhook was sent.

    * `finventi-receiver-tenant-id`: The tenant ID for the webhook recipient.


    These headers must be used during the signature verification process to
    ensure consistency.


    ### Signature Verification Process

    To verify the authenticity of the webhook, the following steps must be
    performed:

    1. Concatenate the following components in the specified order, separated by
    periods (.):
      * The request body
      * The tenant ID from `finventi-receiver-tenant-id`
      * The timestamp from `finventi-signature-timestamp`

    Example:

    ```text

    {"trx_id":10300003,"end_to_end_id":"NOTPROVIDED","type":"Payment","direction":"OUTBOUND","amount":1,"currency":"EUR","status":"Created","updated_at":"2024-09-20T13:46:32.092083Z"}.demo1.1726839992

    ```

    2. Hash the concatenated string using the SHA-256 algorithm.

    3. Base64 decode the received finventi-signature-v header to obtain the
    signature.

    4. Verify the signature using
    [RSASSA-PKCS1-v1_5](https://datatracker.ietf.org/doc/html/rfc8017#section-8.2.2)
    with the hashed data, decoded signature, and the latest public key.


    ### Code Example (Node.js)

    ```js

    const crypto = require('crypto');


    const signatureBase64 =
    "GtZFu1uNFqOir8eDkar7+d/S+FtwQpk4mPGCuByKhJG29K1u7ynbVhkrDF8c3TqyX9wYHxpOa94FsgW2I4CnLh+B24LqL7WVSuACOL6GoSjfKeXP00NSp0ps8QYbVaJ8Ys6E4FePhp+7piAACkIP5vZ91JCLQ8lz36KRJlOnByQMTBH6j924n1GwZiZfbMojOGmMhLA0h8jWgTIeuvYPswiZXZXp0vpqJfWmdoqiU1ldoausTNFyoVwFuuzkxPv1VHvWeEeWirObUv3wNpyAnLnqomDgR7pe/9dDV0bkq5r0JkRhnbPCEFE/zzHeDgZ957hv8Oq3wJkGJarZ0NvPLw=="

    const signature = Buffer.from(signatureBase64, 'base64');


    const publicKey = `-----BEGIN PUBLIC KEY-----

    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvoc7GrFbduCeSVxFPJ3l

    a0NRa0caUqBddQAOUxuHTOuShOvdKbxRYc5u1vb9YNLJWjx4XSHESp8Q7oocqXt8

    +weBFsk/kAtJ4zjbYPY1PvAOLe+WObdxxZtfwzpwVxbtP6GQk5aUi2HbITe3EDf/

    7WEmvnAcWm++Mo6+GSh2Ky1t6o4htrx1lH2gYVg0iRHx1W9lLXjMl/5oLi1C6dtx

    TnBmXMlN/NT5YYU4lVlXQBZzS7a8ZgwosfW+v1uCimzbGcWytmmcFISjSNqkYaeg

    IXDYwKLwlsWtm975ln6UL20KcSt7ia+Lpuv7cdxJlOY95y0ds/PCw1x0HEPxU+44

    swIDAQAB

    -----END PUBLIC KEY-----`;


    const body =
    `{"trx_id":10300003,"end_to_end_id":"NOTPROVIDED","type":"Payment","direction":"OUTBOUND","amount":1,"currency":"EUR","status":"Created","updated_at":"2024-09-20T13:46:32.092083Z"}`;

    const tenantId = "demo1"

    const timestamp = "1726839992";

    const dataToVerify = Buffer.from(body + '.' + tenantId + '.' + timestamp);


    const isVerified = crypto.verify(

    "sha256",

    dataToVerify,

    {
      key: publicKey,
      padding: crypto.constants.RSA_PKCS1_PADDING,
    },

    signature

    );

    console.log("Verification successful:", isVerified);

    ```

    ## Payment status change webhook

    Payment status changes can send notifications using webhook to clients
    provided HTTP POST endpoint.


    Notifications are sent when payment/payment return status changes to one of
    the following statuses: Created, To sign, Signed, Accepted, Completed, Some
    problems, Cancelled, Rejected.


    There is retry mechanism - if an endpoint fails, the notification will be
    repeatedly sent until it is successfully delivered. During this retry
    process, all other notifications will be held back and will only be
    delivered once the initially blocked notification is successfully sent.


    Request is sent in json format.

    ### Request Body Example:

    ```json

    {
      "trx_id": 2018845,
      "end_to_end_id": "2302231660139326",
      "type": "Payment",
      "direction": "OUTBOUND",
      "amount": 10657, (CENTS)
      "currency": "EUR",
      "status": "Created",
      "updated_at": "2023-02-23 07:49:37.524808" (date&time when status was updated),
      "debtor_iban": "LT543210010000000003",
      "creditor_iban": "LT123450010000000004"
    }

    ```


    | Body parameter | Type |

    |-------------------|-------|

    | **trx_id**            | **Integer** |

    | **end_to_end_id**     | **String** |

    | **type**              | **String** classifier.<br>  Available values:
    "Payment", "Payment return", "Payment cancellation", "CSM fees", "Reverse
    payment", "Adjustment" |

    | **direction**         | **Enum**.<br>  Available values: "INBOUND",
    "OUTBOUND" |

    | **amount**            | **Integer** |

    | **currency**          | **String** classifier.<br>  Available values:
    "EUR" |

    | **status**            | **String** classifier.<br>  Available values:
    "Created", "To sign", "Signed", "Accepted", "Completed", "Some problems",
    "Cancelled", "Rejected", "Pending confirmation" |

    | **updated_at**        | **DateTime** |

    | **debtor_iban**       | **String** |

    | **creditor_iban**     | **String** |

     ## Payment cancellation status change webhook
    Payment cancellation status changes can send notifications using webhook to
    clients provided HTTP POST endpoint.


    Notifications are sent when payment cancellation status changes to one of
    the following statuses: CANCELLATION_IN_PROGRESS, CANCELLATION_ACCEPTED,
    CANCELLATION_REJECTED, CANCELLATION_COMPLETED.


    There is retry mechanism - if an endpoint fails, the notification will be
    repeatedly sent until it is successfully delivered. During this retry
    process, all other notifications will be held back and will only be
    delivered once the initially blocked notification is successfully sent.


    Request is sent in json format.

    ### Request Body Example:

    ```json

    {
      "cancellationId": 102,
      "trxId": "2018845",
      "direction": "OUTBOUND",
      "reason": "CUST",
      "status": "CANCELLATION_IN_PROGRESS",
    }

    ```


    | Body parameter | Type |

    |-------------------|-------|

    | **cancellationId**    | **Integer** |

    | **trxId**            | **Integer** |

    | **direction**         | **Enum**.<br>  Available values: "INBOUND",
    "OUTBOUND" |

    | **reason**            | **Enum**.<br>  Available values: "DUPL", "CUST",
    "FRAD", "TECH", "AC03", "AM09", "AGNT", "COVR", "CURR", "CUTA", "DS24",
    "FRNA", "FRTR", "INDM", "SYAD", "UPAY","AC01", "AC04", "AC06", "AC13",
    "AG01", "AG02", "AM01", "AM04", "AM05", "CNOR", "DNOR", "MD01", "MD02",
    "MD07", "MS02", "MS03", "RC01", "RR01", "RR02", "RR04", "SL01", "BE05",
    "FF01", "DT01", "ED05", "PY01" |

    | **status**            | **Enum**.<br>  Available values:
    "CANCELLATION_CREATED", "CANCELLATION_IN_PROGRESS", "RETURNING", "REFUSING",
    "PAYMENT_RETURNED", "CANCELLATION_REFUSED", "PROCESSING_FAILED",
    "CANCELLATION_COMPLETED", "CANCELLATION_REJECTED", "CANCELLATION_ACCEPTED" |


    ### Cancellation request processing statuses

    The table below standardises how you track SEPA cancellation requests from
    start to finish. Each status maps to specific inbound/outbound ISO-20022
    messages, giving you clear, machine-readable checkpoints for monitoring and
    automating your cancellation workflow.


    | Status name | Description |

    | ----------- | ---------------- |

    | CANCELLATION_CREATED | Cancellation request successfully created and
    validated by the Payment Gateway system. |

    | CANCELLATION_IN_PROGRESS | The camt.056 payment cancellation request is
    received from the clearing system and waiting for the User activities. Can
    be accepted and payment will be returned or rejected. |

    | RETURNING | User decides to return the funds. The pacs.004 payment return
    message is sent to the initiator of the payment cancellation request. The
    intermediary cancellation request status, which doesn't allow to execute any
    actions until the final status of the payment return will be set. |

    | REFUSING | User rejects to return the funds. The camt.029 resolution of
    investigation message is sent to the initiator of the payment cancellation
    request. The intermediary cancellation request status, which doesn't allow
    to execute any actions until the final status of the resolution of
    investigation will be set. |

    | PAYMENT_RETURNED | Incoming cancellation: The pacs.004 payment return
    message successfully delivered to the beneficiary bank. This is the final
    processing status, which doest allow to perform any actions with the
    cancellation request. <br> Outgoing cancellation: The payment return
    pacs.004 message, following the sent cancellation request is received from
    the clearing system. The transaction based  on the payment return message is
    successfully created in system, its data linked with the respective
    cancellation request and the original outbound payment. |

    | CANCELLATION_REFUSED | Incoming cancellation: The camt.029 resolution of
    investigation message successfully delivered to the beneficiary bank. This
    is the final processing status, which doest allow to perform any actions
    with the cancellation request. <br> Outgoing cancellation: The resolution of
    investigation camt.029 message, following the sent cancellation request is
    received from the clearing system. The payment return refusal data are
    indicated for the related cancellation request. |

    | PROCESSING_FAILED | The state which indicates that there was an error
    during processing of the response for the cancellation request message. This
    state allows to reprocess the cancellation request after the errors will be
    eliminated. |

    | CANCELLATION_COMPLETED | Incoming cancellation: The payment return
    transaction completed successfully. If failed, the status will be changed to
    the CANCELLATION_IN_PROGRESS and it is possible to reprocess the
    cancellation request. <br> Outgoing cancellation: The pacs.004 payment
    return message following cancellation request is received from the clearing
    system. |

    | CANCELLATION_REJECTED | The payment cancellation request camt.056 message
    was rejected by the clearing system due to errors. The state allows to
    initiated additional cancellation request after the errors will be
    eliminated. |

    | CANCELLATION_ACCEPTED | The payment cancellation request camt.056 message
    successfully delivered to the beneficiary bank. |


    # External code sets
      ## Private identification codes

      | Identification code | Definition |
      |-------------------|-------|
      | **ARNU**    | **Number assigned by a social security agency to identify a non-resident person.** |
      | **CCPT**    | **Number assigned by an authority to identify the passport number of a person.** |
      | **CUST**    | **Number assigned by an issuer to identify a customer.** |
      | **DRLC**    | **Number assigned by an authority to identify a driver's license.** |
      | **EMPL**    | **Number assigned by a registration authority to an employee.** |
      | **NIDN**    | **Number assigned by an authority to identify the national identity number of a person.** |
      | **SOSE**    | **Number assigned by an authority to identify the social security number of a person.** |
      | **TXID**    | **Number assigned by a tax authority to identify a person.** |

      ## Organisation identification codes

      | Identification code | Definition |
      |-------------------|-------|
      | **BANK**    | **Unique and unambiguous assignment made by a specific bank or similar financial institution to identify a relationship as defined between the bank and its client.** |
      | **CBID**    | **A unique identification number assigned by a central bank to identify an organisation.** |
      | **CHID**    | **A unique identification number assigned by a clearing house to identify an organisation.** |
      | **CINC**    | **A unique identification number assigned by a designated authority to a certificate of incorporation and used to identify an organisation.** |
      | **COID**    | **Country authority given organisation identification (e.g., corporate registration number).** |
      | **CUST**    | **Number assigned by an issuer to identify a customer. Number assigned by a party to identify a creditor or debtor relationship.** |
      | **DUNS**    | **A unique identification number provided by Dun & Bradstreet to identify an organisation.** |
      | **EMPL**    | **Number assigned by a registration authority to an employer.** |
      | **GS1G**    | **Global Location Number. A non-significant reference number used to identify legal entities, functional entities, or physical entities according to GS1 numbering scheme rules.The number is used to retrieve detailed information that is linked to it.** |
      | **SREN**    | **The SIREN number is a 9 digit code assigned by INSEE, the French National Institute for Statistics and Economic Studies, to identify an organisation in France.** |
      | **SRET**    | **The SIRET number is a 14 digit code assigned by INSEE, the French National Institute for Statistics and Economic Studies, to identify an organisation unit in France. It consists of the SIREN number, followed by a five digit classification number, to identify the local geographical unit of that entity.** |
      | **TXID**    | **Number assigned by a tax authority to identify an organisation.** |
  title: SEPA Payment Gateway
  version: '1.0'
servers:
  - description: Payment Platform sandbox environment
    url: https://api.pgw-sandbox.finventi.com
security: []
tags:
  - description: >-
      Manage payment investigations. Supports two types: Claim Non-Receipt
      (camt.027) for outbound SEPA CT payments, and Payment Status Request
      (pacs.028) for outbound SEPA INST payments. Inbound investigations
      received from counterparties can be searched, viewed, and resolved via
      :resolve API (camt.029).
    name: Investigations
paths:
  /v3/investigations/{id}:remind:
    post:
      tags:
        - Investigations
      summary: Send a status request reminder
      description: >-
        Sends a pacs.028 (FFPSRPRQ) reminder for a stalled outbound claim
        non-receipt. The claim must still be pending, a configurable minimum
        number of banking business days must have elapsed since it was sent, the
        payment's debit date must be within the configured maximum age, and the
        claim must not already have the maximum number of active reminders.
      operationId: remindInvestigation
      parameters:
        - description: Claim non-receipt investigation ID
          example: 100005
          in: path
          name: id
          required: true
          schema:
            format: int64
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvestigationResponse'
          description: >-
            Reminder sent; the parent claim non-receipt is returned with the
            reminder embedded
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            Reminder not permitted — the claim is not eligible yet, the 13-month
            period has expired, or a reminder already exists
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Tenant does not have an access to the resource
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Investigation not found
components:
  schemas:
    InvestigationResponse:
      properties:
        claimNonReceiptDetails:
          description: >-
            Claim non-receipt investigation details, present for
            CLAIM_NON_RECEIPT type
          oneOf:
            - $ref: '#/components/schemas/ClaimNonReceiptDetailsResponse'
            - type: 'null'
        createdAt:
          description: Timestamp when the investigation was created
          format: date-time
          type: string
        createdBy:
          description: User or system that created the investigation
          type: string
        delivery:
          description: Investigation message delivery status information from CSM
          oneOf:
            - $ref: '#/components/schemas/InvestigationDeliveryResponse'
            - type: 'null'
        direction:
          $ref: '#/components/schemas/TransactionDirection'
          description: Investigation direction (INBOUND or OUTBOUND)
        id:
          description: Investigation ID
          format: int64
          type: integer
        messageId:
          description: Investigation message ID
          type: string
        referencedTransactionId:
          description: Referenced transaction ID
          format: int64
          type:
            - integer
            - 'null'
        reminderEligibility:
          description: >-
            Whether a pacs.028 reminder can be sent for this claim right now,
            and if not, why
          oneOf:
            - $ref: '#/components/schemas/ReminderEligibilityResponse'
            - type: 'null'
        resolution:
          description: Resolution details, present when the investigation has been resolved
          oneOf:
            - $ref: '#/components/schemas/InvestigationResolutionResponse'
            - type: 'null'
        schema:
          $ref: '#/components/schemas/InvestigationMessageSchema'
          description: Message schema identifier
        status:
          $ref: '#/components/schemas/Status'
          description: Current investigation status
        statusHistory:
          description: >-
            Investigation status change history, included when retrieving a
            single investigation
          items:
            $ref: '#/components/schemas/StatusChangeResponse'
          type:
            - array
            - 'null'
        transactionDetails:
          description: Original transaction details referenced by the investigation
          oneOf:
            - $ref: '#/components/schemas/TransactionDetailsResponse'
            - type: 'null'
        type:
          $ref: '#/components/schemas/InvestigationType'
          description: Investigation type
        updatedAt:
          description: Timestamp when the investigation was last updated
          format: date-time
          type:
            - string
            - 'null'
      required:
        - createdAt
        - createdBy
        - direction
        - id
        - messageId
        - schema
        - status
        - type
      type: object
    ErrorResponse:
      description: Error response
      properties:
        code:
          description: Code of error
          type: string
        data:
          description: 'Error data '
          oneOf:
            - $ref: '#/components/schemas/ErrorResponseData'
            - type: 'null'
        message:
          description: Error message
          type:
            - string
            - 'null'
      required:
        - code
      type: object
    ClaimNonReceiptDetailsResponse:
      properties:
        additionalInfo:
          description: Additional information provided with the claim
          type:
            - string
            - 'null'
        caseId:
          description: Unique case identifier for the claim non-receipt investigation
          type: string
        reminders:
          description: >-
            Status request reminders received for this claim non-receipt, in
            receipt order
          items:
            $ref: '#/components/schemas/ReminderResponse'
          type: array
      required:
        - caseId
        - reminders
      type: object
    InvestigationDeliveryResponse:
      properties:
        status:
          description: Delivery status from the CSM
          type:
            - string
            - 'null'
        statusReason:
          description: Reason for the delivery status
          type:
            - string
            - 'null'
      type: object
    TransactionDirection:
      enum:
        - OUTBOUND
        - INBOUND
      type: string
    ReminderEligibilityResponse:
      properties:
        availableFrom:
          description: >-
            First date a reminder becomes available; set only when reason is
            TOO_EARLY
          format: date
          type:
            - string
            - 'null'
        eligible:
          description: True when a reminder can be sent right now
          type: boolean
        reason:
          description: Why a reminder cannot be sent; null when eligible
          oneOf:
            - $ref: '#/components/schemas/Reason'
            - type: 'null'
      required:
        - eligible
      type: object
    InvestigationResolutionResponse:
      properties:
        confirmationCode:
          description: >-
            Confirmation code indicating whether the claim was accepted or
            rejected
          oneOf:
            - $ref: '#/components/schemas/ConfirmationCode'
            - type: 'null'
        messageId:
          description: Resolution SEPA message ID
          type:
            - string
            - 'null'
        rejectionReasonCode:
          description: Rejection reason code if the investigation was rejected
          type:
            - string
            - 'null'
        settlementDate:
          description: Settlement date provided in the resolution
          format: date
          type:
            - string
            - 'null'
      type: object
    InvestigationMessageSchema:
      enum:
        - SEPA
        - INST
      type: string
    Status:
      enum:
        - PENDING
        - RESOLVED
        - REJECTED
      type: string
    StatusChangeResponse:
      properties:
        changeReason:
          description: Reason for the status change
          type:
            - string
            - 'null'
        createdAt:
          description: Timestamp when the status change occurred
          format: date-time
          type: string
        createdBy:
          description: User or system that triggered the status change
          type: string
        statusFrom:
          description: Previous investigation status
          oneOf:
            - $ref: '#/components/schemas/Status'
            - type: 'null'
        statusTo:
          $ref: '#/components/schemas/Status'
          description: New investigation status
      required:
        - createdAt
        - createdBy
        - statusTo
      type: object
    TransactionDetailsResponse:
      properties:
        amount:
          description: Transaction amount
          type: number
        creditorBic:
          description: Creditor (recipient) BIC
          type:
            - string
            - 'null'
        creditorIban:
          description: Creditor (recipient) IBAN
          type:
            - string
            - 'null'
        creditorName:
          description: Creditor (recipient) name
          type:
            - string
            - 'null'
        currencyCode:
          description: Currency code (e.g. EUR)
          type: string
        debtorBic:
          description: Debtor (sender) BIC
          type:
            - string
            - 'null'
        debtorIban:
          description: Debtor (sender) IBAN
          type:
            - string
            - 'null'
        debtorName:
          description: Debtor (sender) name
          type:
            - string
            - 'null'
        endToEndId:
          description: End-to-end identifier of the original transaction
          type: string
        method:
          $ref: '#/components/schemas/TransactionMethod'
          description: Transaction method (e.g. SEPA)
        remittanceInfo:
          description: Remittance information (payment purpose)
          type:
            - string
            - 'null'
        settlementDate:
          description: Settlement date of the original transaction
          format: date
          type: string
      required:
        - amount
        - currencyCode
        - endToEndId
        - method
        - settlementDate
      type: object
    InvestigationType:
      description: >-
        Investigation type: CLAIM_NON_RECEIPT (camt.027) or
        PAYMENT_STATUS_REQUEST (pacs.028)
      enum:
        - CLAIM_NON_RECEIPT
        - PAYMENT_STATUS_REQUEST
      type: string
    ErrorResponseData:
      description: Error wrapper containing all occurred errors
      properties:
        errors:
          description: All occurred errors
          items:
            $ref: '#/components/schemas/ErrorResponseViolation'
          type: array
        message:
          description: Generic message for occurred errors
          type:
            - string
            - 'null'
      required:
        - errors
      type: object
    ReminderResponse:
      properties:
        createdAt:
          description: >-
            When the reminder was recorded — receipt time for inbound, request
            time for outbound
          format: date-time
          type: string
        delivery:
          description: Delivery status from the CSM for an outbound reminder
          oneOf:
            - $ref: '#/components/schemas/InvestigationDeliveryResponse'
            - type: 'null'
        direction:
          $ref: '#/components/schemas/TransactionDirection'
          description: >-
            Whether the reminder was sent by us or received from the
            counterparty
        id:
          description: Reminder investigation ID
          format: int64
          type: integer
        messageId:
          description: Status request (pacs.028) message ID
          type: string
        sentAt:
          description: >-
            When an outbound reminder was dispatched to the clearing system;
            null for inbound reminders and for outbound ones not yet sent
          format: date-time
          type:
            - string
            - 'null'
        status:
          $ref: '#/components/schemas/Status'
          description: Reminder status
      required:
        - createdAt
        - direction
        - id
        - messageId
        - status
      type: object
    Reason:
      enum:
        - NOT_APPLICABLE
        - CLAIM_NOT_SENT
        - REMINDER_IN_FLIGHT
        - TOO_EARLY
        - PERIOD_EXPIRED
      type: string
    ConfirmationCode:
      enum:
        - ACNR
        - RJNR
      type: string
    TransactionMethod:
      enum:
        - SEPA
        - INST
        - SDD
        - SWIFT
        - T2
      type: string
    ErrorResponseViolation:
      description: Single error wrapper
      properties:
        code:
          description: Error code
          type:
            - string
            - 'null'
        field_name:
          description: Field name which failed
          type: string
        message:
          description: Error message
          type:
            - string
            - 'null'
        value:
          description: Value which was invalid
          type:
            - string
            - 'null'
      type: object

````