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

# Inbound SWIFT Payments: Automatic Confirmation and Returns

> Universal Confirmations in automatic mode and returning a completed inbound SWIFT payment.

This guide covers **inbound** payments - the ones you receive. Every inbound SWIFT credit transfer must be confirmed back to the SWIFT network under the **Universal Confirmations** policy. In **automatic mode** (the default) the platform does this for you with no operator involvement: the payment is credited on receipt and the final confirmation goes to the **SWIFT gpi Tracker** immediately.

<Note>
  For **outbound** payments (the ones you send), see [Payment statuses](/payments/integration-guide/swift/track-payments).
</Note>

Universal Confirmations compliance is not just a formality: **it is a prerequisite for tracking your outbound payments via the SWIFT Frontend API**. The platform guarantees that compliance for you - a confirmation is always sent on time, in this mode and in [manual mode](/payments/integration-guide/swift/manual-confirmation).

<Note>
  The platform builds, signs and submits the confirmation messages on your behalf. No integration work is required - the mode is a single tenant setting.
</Note>

## Confirmation modes at a glance

|                             | Automatic (this page)   | [Manual](/payments/integration-guide/swift/manual-confirmation) |
| --------------------------- | ----------------------- | --------------------------------------------------------------- |
| Landing state               | Completed on receipt    | Accepted (`pending_review`)                                     |
| First confirmation to SWIFT | `ACCC` (final)          | `ACSP/G002` (interim)                                           |
| Operator action             | None                    | Review → **Complete** or **Return**                             |
| Beneficiary credited        | On receipt              | After operator approval                                         |
| Best for                    | Credit-on-receipt / STP | Sanctions / AML / KYC screening before credit                   |
| Configuration               | Default                 | Opt-in per tenant                                               |

## How automatic confirmation works

<Steps>
  <Step title="Payment received and credited">
    The inbound payment lands directly as **Completed** - the beneficiary is credited on receipt, with no intermediate status. You receive a single webhook (`Completed`, `direction=INBOUND`).
  </Step>

  <Step title="Final confirmation sent">
    `ACCC` - "payment credited to beneficiary" - is sent to the gpi Tracker immediately. The sender's bank sees the outcome in real time.
  </Step>
</Steps>

```mermaid actions={true} theme={null}
sequenceDiagram
  autonumber
  participant S as Sending Bank
  participant N as SWIFT Network
  participant P as Payments Platform
  participant C as Your System

  S->>N: Payment
  N->>P: Inbound payment
  P-->>C: Webhook (Completed, direction=INBOUND)
  P->>N: Confirmation ACCC (final)
```

### Cover payments (COVE)

Some correspondents settle in two parts: the customer payment (`pacs.008`) only announces the transfer, while the actual money moves separately as a bank-to-bank **cover transfer** (`pacs.009 COV`). The payment must not be credited until the cover arrives.

<Steps>
  <Step title="Payment announced, funds not yet in">
    The inbound payment lands as **Accepted** and waits with the reason `awaiting_cover` (visible via [`GET /v3/payments/{id}`](/payments/api/accounts/get-payment), not in the webhook). The beneficiary is **not** credited yet. An interim `ACSP/G004` confirmation ("awaiting cover") is sent to the Tracker immediately.
  </Step>

  <Step title="Cover arrives">
    The matching `pacs.009 COV` comes in and the platform matches it to the waiting payment automatically.
  </Step>

  <Step title="Auto-completed">
    In automatic mode the payment completes right away: status **Completed**, webhook sent, final `ACCC` confirmation goes to the Tracker.
  </Step>
</Steps>

```mermaid actions={true} theme={null}
sequenceDiagram
  autonumber
  participant S as Sending Bank
  participant N as SWIFT Network
  participant P as Payments Platform
  participant C as Your System

  S->>N: Payment (settlement by cover)
  N->>P: Inbound payment
  P-->>C: Webhook (Accepted)
  P->>N: Confirmation ACSP/G004 (awaiting cover)
  S->>N: Cover transfer
  N->>P: Cover received
  P->>P: Match cover to the waiting payment
  P->>N: Confirmation ACCC (final)
  P-->>C: Webhook (Completed)
```

### Confirmation status codes

| Status      | When                       | Meaning                                  |
| ----------- | -------------------------- | ---------------------------------------- |
| `ACCC`      | On completion              | Final - beneficiary account credited     |
| `ACSP/G004` | Cover payments, on receipt | Accepted, awaiting the cover to settle   |
| `ACSP/G002` | Manual mode only           | Accepted, credit pending internal review |

## Returning a completed payment

Even after a payment is completed and credited, you can still return it to the sender - a beneficiary's request, a compliance issue that surfaced later. The original stays **Completed**; the money goes back as a separate **Payment return** transaction.

<Card title="Payment returns" icon="rotate-left" href="/payments/integration-guide/swift/payment-returns">
  Full flow, return reasons and the returns API
</Card>

## Webhooks

| Event                                             | `status`                                                 | `type`           |
| ------------------------------------------------- | -------------------------------------------------------- | ---------------- |
| Payment received and credited (direct settlement) | `Completed` (single webhook)                             | `Payment`        |
| Payment received, waiting for the cover (COVE)    | `Accepted`                                               | `Payment`        |
| Cover settled, payment credited                   | `Completed`                                              | `Payment`        |
| Return transaction lifecycle                      | `Created` → `Sent to clear` → (`Accepted`) → `Completed` | `Payment return` |

## API Reference

<CardGroup cols={2}>
  <Card title="Get payment" icon="magnifying-glass" href="/payments/api/accounts/get-payment">
    `GET /v3/payments/{id}` - read the `statusReason` (`awaiting_cover`)
  </Card>

  <Card title="Return payment" icon="rotate-left" href="/payments/api/swift/return-swift-payment">
    `POST /v3/payments/{id}/returns` - return a completed payment
  </Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Manual confirmation" icon="user-check" href="/payments/integration-guide/swift/manual-confirmation">
    Hold payments for compliance review instead
  </Card>

  <Card title="Statements" icon="file-lines" href="/payments/integration-guide/swift/statements">
    Reconcile received funds
  </Card>
</CardGroup>
