# Choosing a channel

Which channel to use, and which transaction types each one supports.

The API exposes one set of transaction endpoints across three channels. The channel you pick determines which endpoints you call and which transaction types are available to you.

```mermaid
flowchart TD
    Q1{"How does the customer pay?"}
    Q1 -->|"In person, on a terminal"| CP["Card present<br/>physical terminal, pmt_trm_"]
    Q1 -->|"Online, with a card"| Q2{"How will you embed the form?"}
    Q1 -->|"Online, from a US bank account"| ACH["ACH bank transfer<br/>virtual ACH terminal, pmt_ach_"]
    Q1 -->|"With a payment method stored earlier"| TK["Token sale or auth<br/>pmt_tkn_"]
    Q2 -->|"The iframe"| HPF["Hosted Payment Form"]
    Q2 -->|"The web component in your page"| SDK["Payment SDK"]
    HPF --> CNP["Card not present<br/>virtual terminal, pmt_vrt_"]
    SDK --> CNP
```

- **Card present** — In person, on a Verifone T650c or T650p terminal. — [Card present](https://doura.ca/docs/payments/card-present.md)
- **Card not present** — Online, through a Hosted Payment Form or the Payment SDK. — [Card not present](https://doura.ca/docs/payments/card-not-present.md)
- **ACH bank transfer** — US bank debits, settled asynchronously. — [ACH bank transfers](https://doura.ca/docs/payments/ach.md)

## Transaction types by channel

| Transaction type                                              | Card present | Card not present | ACH            |
| ------------------------------------------------------------- | ------------ | ---------------- | -------------- |
| **Sale** - combined authorization and capture                 | Yes          | Yes              | Yes            |
| **Authorization** - reserve funds without capturing           | Yes          | Yes              | No             |
| **Capture** - complete a previous authorization               | Yes          | Yes              | Not applicable |
| **Refund** - reverse a previous sale                          | Yes          | Yes              | Yes            |
| **Void** - cancel a transaction still in the current batch    | Yes          | Yes              | **No**         |
| **Token sale** - charge a stored payment method               | Yes          | Yes              | Yes            |
| **Unreferenced refund** - refund with no original transaction | Unavailable  | Unavailable      | No             |

> **Warning:**
>
> ACH is the exception in three places: it cannot be voided (use a refund instead), it has no authorization-only transaction, and it has no separate capture step. See [ACH bank transfers](https://doura.ca/docs/payments/ach.md).

## What the transaction types mean

* **Authorization** - Verification with the issuer that the card is valid for payment. The authorization amount is reserved, but not captured or settled.
* **Capture** - Complete a previously authorized transaction. The cardholder is billed for the transaction, and the transaction is settled to the merchant.
* **Sale** - Combined authorization and capture in a single step.
* **Refund** - Return all or part of a previous sale or capture. For eligible card transactions still in the current batch, the API attempts a void; after settlement, it performs a refund. Check the original transaction's `refundableAmount` and give each separate refund its own `referenceId` to prevent duplicate requests. See [Partial refunds and retries](https://doura.ca/docs/payments/transaction-retrieval.md#partial-refunds-and-retries).
* **Void** - Cancel a previously completed transaction (sale, authorization, or capture) if it is still in the current batch, typically the same day.

> **Note:**
>
> You do not need to decide between void and refund for a card transaction. Call `POST /transactions/refund`, and the API attempts a void if eligible in the current batch or a refund after settlement. ACH reversals use a refund.

## Cutting across every channel

* [Tokenization](https://doura.ca/docs/payments/tokenization.md) - store a card once and charge it from any channel
* [Payment methods](https://doura.ca/docs/payments/payment-methods.md) - the terminals, forms, and tokens you charge against
* [Account holders](https://doura.ca/docs/payments/account-holders.md) - group stored payment methods under a customer
* [Retrieving transactions](https://doura.ca/docs/payments/transaction-retrieval.md) - resolve an outcome you did not receive
