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

# Finish

> Reports the result of a transaction handled by an integration service.

Sent by an integration service when it has finished processing a transaction. The `result` value is matched against the gateway node's `continuesWith` configuration to determine which path the flow takes next.

`ce-type: Finish`

## Payload

<ParamField body="result" type="string" required>
  Outcome label matched by the flow's gateway node.
</ParamField>

<ParamField body="data" type="object" required>
  Transaction result data returned by the integration service.
</ParamField>

## Data variants

The shape of the `data` object depends on the integration and the `result` value. Common variants are shown below with their required fields.

### Manual capture

<ParamField body="manual_capture" type="boolean" required>
  When present and true this indicates a manual capture is required for the transaction.
</ParamField>

### 3DS challenge

<ParamField body="3ds_challenge" type="object">
  <ParamField body="pa_req" type="string" required>
    PAReq value for the 3DS challenge.
  </ParamField>

  <ParamField body="md" type="string" required>
    Merchant data value returned by the 3DS flow.
  </ParamField>

  <ParamField body="acs_url" type="string" required>
    ACS URL to redirect the cardholder to for 3DS authentication.
  </ParamField>
</ParamField>

### Payment transaction

<ParamField body="payment_transaction" type="object">
  <ParamField body="status" type="string" required>
    Transaction status (required).
  </ParamField>

  <ParamField body="amount" type="number">
    Transaction amount in minor units.
  </ParamField>

  <ParamField body="currency_code" type="string">
    ISO 4217 currency code, e.g. `EUR`.
  </ParamField>

  <ParamField body="decline_reasons" type="array">
    Array of decline reason codes (when applicable).
  </ParamField>

  <ParamField body="started_at" type="string">
    ISO 8601 timestamp when processing started.
  </ParamField>

  <ParamField body="ended_at" type="string">
    ISO 8601 timestamp when processing finished.
  </ParamField>

  <ParamField body="external_payment_id" type="string">
    External payment identifier from the processor.
  </ParamField>

  <ParamField body="failure_reasons" type="array">
    Processor failure reasons (when applicable).
  </ParamField>

  <ParamField body="id" type="string">
    Internal payment identifier.
  </ParamField>

  <ParamField body="processor_merchant_id" type="string">
    Merchant identifier at the payment processor.
  </ParamField>

  <ParamField body="processor_name" type="string">
    Processor name.
  </ParamField>

  <ParamField body="processor_transaction_id" type="string">
    Processor's transaction identifier.
  </ParamField>

  <ParamField body="processor_transaction_timestamp" type="string">
    Processor-provided transaction timestamp.
  </ParamField>

  <ParamField body="type" type="string">
    Transaction type.
  </ParamField>
</ParamField>

### Bank transfer / payout

#### Data fields

The `data` object contains the beneficiary and routing details for the transfer. These fields are required when the `bank_transfer` variant is used; include them at the top of the `bank_transfer` payload so clients can quickly access routing information.

* `bic` — Bank BIC/SWIFT code (required)
* `beneficiary` — Beneficiary name (required)
* `iban` — Beneficiary IBAN (required)
* `reference` — Payment reference (required)

Example `data` object:

```json theme={null}
{
  "bic": "DEUTDEFF",
  "beneficiary": "ACME Corp",
  "iban": "DE89370400440532013000",
  "reference": "Invoice 1234"
}
```

<ParamField body="bank_transfer" type="object">
  <ParamField body="data" type="object" required>
    <ParamField body="bic" type="string" required>Bank BIC/SWIFT code.</ParamField>
    <ParamField body="beneficiary" type="string" required>Beneficiary name.</ParamField>
    <ParamField body="iban" type="string" required>Beneficiary IBAN.</ParamField>
    <ParamField body="reference" type="string" required>Payment reference.</ParamField>
  </ParamField>

  <ParamField body="status" type="string" required>
    Transfer status (required).
  </ParamField>

  <ParamField body="id" type="string">
    Transfer identifier.
  </ParamField>

  <ParamField body="type" type="string">
    Transfer type.
  </ParamField>

  <ParamField body="started_at" type="string">Start timestamp.</ParamField>
  <ParamField body="ended_at" type="string">End timestamp.</ParamField>
</ParamField>
