---
title: "Receives responses from Shinkansen"
method: POST
path: "/responses"
tags: ["Transactions & Responses"]
---

# Receives responses from Shinkansen

`POST /responses`

## Request

- Base URL: `https://example.customer.url`
- URL: `https://example.customer.url/responses`
- Auth: API key in header `Shinkansen-JWS-Signature`

Webhook for receiving transaction responses

## Request body

- ParticipantResponseMessage: Responses to payout participants, sent by Shinkansen
  - `document` object, required: Envelops the message content
    - `header` ForwardedMessageHeader, required: Header with meta-data of the forwarded message
      - `message_id` string, uuid, required: UUID Unique identifier of the message. Generated by the participant initiating the transactions, sending the responses or sending notifications.
      - `shinkansen_message_id` string, uuid, required: UUID Unique identifier of the message. Generated by Shinkansen.
      - `creation_date` string, date-time, required: Creation date of the message in ISO 8601 format. Generated by the participant initiating the transactions (or sending the responses).
      - `sender` object, required: The identifier for a financial institution
        - `fin_id_schema` string, required: Identification schema for financial institution, namely, any participant in Shinkansen Network. Use `"SHINKANSEN"` for Shinkansen's native network ids and full support on any participant and service of the Shinkansen network. Other schemas might be used when interfacing with other networks but they are *not* recommended unless you *really* know what you are doing or have been explicitly instructed to do so by Shinkansen.
        - `fin_id` string, required: Identification according to schema. When the `"SHINKANSEN"` schema is used (as recommended), this is the ID assigned by Shinkansen to the participant in the network. In the context of the `header`, it refers to the Shinkansen network participant that sends (Sender) or receives (Receiver) the message. In the context of the `transactions`, it refers to the financial institution from which the resources leave or where the resources arrive. The ID assigned by Shinkansen to the financial institution can be found in https://docs.shinkansen.tech/docs/instituciones-financieras. When sending a transaction to Shinkansen, this value must always be SHINKANSEN. When sending a payout order to Shinkansen Treasury, this value must be SHINKANSEN_TREASURY
      - `receiver` object, required: The identifier for a financial institution
        - `fin_id_schema` string, required: Identification schema for financial institution, namely, any participant in Shinkansen Network. Use `"SHINKANSEN"` for Shinkansen's native network ids and full support on any participant and service of the Shinkansen network. Other schemas might be used when interfacing with other networks but they are *not* recommended unless you *really* know what you are doing or have been explicitly instructed to do so by Shinkansen.
        - `fin_id` string, required: Identification according to schema. When the `"SHINKANSEN"` schema is used (as recommended), this is the ID assigned by Shinkansen to the participant in the network. In the context of the `header`, it refers to the Shinkansen network participant that sends (Sender) or receives (Receiver) the message. In the context of the `transactions`, it refers to the financial institution from which the resources leave or where the resources arrive. The ID assigned by Shinkansen to the financial institution can be found in https://docs.shinkansen.tech/docs/instituciones-financieras. When sending a transaction to Shinkansen, this value must always be SHINKANSEN. When sending a payout order to Shinkansen Treasury, this value must be SHINKANSEN_TREASURY
    - `responses` TransactionResponse[], required: One or more payout responses (one per transaction).
      - `transaction_type` string, required: Transaction type. Always should be `"payout"` for this type of transaction.
      - `transaction_id` string, required: UUID Unique identifier of the transaction. Generated by original sender of the payout.
      - `shinkansen_transaction_id` string, required: UUID Unique identifier of the transaction. Set by Shinkansen on the transaction message.
      - `response_id` string, uuid, required: UUID Unique identifier of the transaction *response*. Set by the payout operator.
      - `response_status` 'ok' | 'invalid' | 'error_creditor_account_not_found' | 'error_creditor_account_detail_mismatch' | 'error_creditor_account_over_limits' | 'error_creditor_account_closed' | 'error_creditor_account_currency_mismatch' | 'error_creditor_reject' | 'error_creditor_fi_offline' | 'error_payment_rail_offline' | 'error_debtor_account_not_found' | 'error_debtor_account_detail_mismatch' | 'error_debtor_account_over_limits' | 'error_debtor_insufficient_funds' | 'error_debtor_reject' | 'error_debtor_fi_offline' | 'error_delivery_ttl_expired' | 'error_expired' | 'error', required: Status as reported by the payout operator (or Shinkansen if the operator is down): * `ok`: The payout was successful. * `invalid`: The request failed some validation * `error_creditor_account_not_found`: The destination account doesn't exist * `error_creditor_account_detail_mismatch`: Something is wrong with the destination account details * `error_creditor_account_over_limits`: The destination account is over the limits set by the creditor bank/institution * `error_creditor_account_closed`: The destination account is closed, cancelled or blocked * `error_creditor_account_currency_mismatch`: The payout currency doesn't match the currency of the destination account * `error_creditor_reject`: The payout was returned or rejected by the creditor bank/institution * `error_creditor_fi_offline`: The creditor bank/institution is temporarily offline * `error_payment_rail_offline`: The payment rail used by Shinkansen/PO is temporarily offline * `error_debtor_account_not_found`: The origin account doesn't exist * `error_debtor_account_detail_mismatch`: Something is wrong with the origin account details * `error_debtor_account_over_limits`: The origin account is over the limits set by the debtor bank/institution or the payout operator. * `error_debtor_insufficient_funds`: The origin account doesn't have enough funds to cover the payout amount. * `error_debtor_reject`: The debtor bank/institution rejected the debit * `error_debtor_fi_offline`: The debtor bank/institution is temporarily offline * `error_delivery_ttl_expired`: The transaction could not be delivered to the source bank/institution before the TTL specified on the original payout message. * `error_expired`: The payout expired at the bank/institution before it could be processed (for example, a cut-off time or an acceptance window was exceeded) * `error`: Other errors not categorized above
      - `response_message` string, required: Human-readable message further explaining the status.
      - `shinkansen_transaction_status` 'ok' | 'error', required: Status as reported by Shinkansen. Either `ok` or `error` (Can't be `pending` because that's the status for transactions without a response)
      - `shinkansen_transaction_message` string, required: Human-readable message further explaining the Shinkansen status.

## Response `200`

Message correctly received. Does NOT mean the transaction was succesful. Further responses might be sent back on another message.

## Other responses

- `400`: Invalid message (e.g: invalid signature)
- `409`: Message ignored, because it was already seen and processed before by the receiver. Typically happens when a message is re-sent because the sender isn't sure if it was correctly received (e.g: network failure when the 2xx response was in flight)'

---

[API](https://skmtc.dev/shinkansen/apis/payouts-participant-webhooks.md) - [All operations](https://skmtc.dev/shinkansen/apis/payouts-participant-webhooks/llms.txt) - [OpenAPI document](https://skmtc.dev/shinkansen/apis/payouts-participant-webhooks/revisions/be13d993109f?raw)
