> Documentation index: [Saleor](/llms.txt) · [This section](/developer/llms.txt)
> Source: https://docs.saleor.io/developer/payments/transaction-flow-strategy

# Transaction Flow Strategy

The [`TransactionFlowStrategyEnum`](/api-reference/payments/enums/transaction-flow-strategy-enum.md) defines how Saleor requests the initial payment action:

-   `AUTHORIZATION`: hold funds first; capture later.
-   `CHARGE`: capture funds immediately.

info

This strategy applies **only to payment apps**.

It does not affect manual transactions created with [`transactionCreate`](/api-reference/payments/mutations/transaction-create.md) or updated via [`transactionUpdate`](/api-reference/payments/mutations/transaction-update.md).  
For manual transactions, you explicitly define the amounts and events yourself.

<a id="event-flows-by-strategy"></a>

## Event Flows by Strategy

-   Authorization flow

```mermaid
stateDiagram-v2
 direction LR

 AUTHORIZATION
 CHARGE
 CANCEL
 REFUND

 AUTHORIZATION --> CHARGE
 CHARGE --> REFUND
 AUTHORIZATION --> CANCEL
```

-   Charge flow

```mermaid
stateDiagram-v2
 direction LR

 CHARGE
 REFUND

 CHARGE --> REFUND
```

<a id="business-advantages"></a>

### Business Advantages

Choosing the right transaction flow strategy is a crucial business decision. The best choice depends on your product, business model, and fulfillment process.

<a id="when-to-use-authorization"></a>

#### When to use AUTHORIZATION

-   **Inventory or stock-sensitive products**: Ensure items are available before capturing funds.
-   **Fraud or risk checks**: Hold the payment while verifying order details.
-   **Partial fulfillment**: Capture only the portion shipped if the full order can’t be fulfilled.
-   **Customer-friendly preorders/backorders**: Customers aren’t fully charged until the product is delivered.

<a id="when-to-use-charge"></a>

#### When to use CHARGE

-   **Instant delivery products**: Digital goods, subscriptions, or services delivered on purchase.
-   **Fast-moving, low-risk retail**: Simplifies operations by charging right away.
-   **High-volume sales**: Reduces operational overhead from tracking pending authorizations.
-   **Cash flow needs**: Immediate settlement improves liquidity.

<a id="configuration"></a>

## Configuration

You can set the strategy per channel as the default or override it per payment during transaction initialization.

<a id="channel-default"></a>

### Channel Default

-   Dashboard: Go to Configuration → Channels → `<your_channel>` → Payment settings, then change **Authorize transactions instead of charging**.
    
-   API: Use the [`channelUpdate`](/api-reference/channels/mutations/channel-update.md) mutation and set the `paymentSettings.defaultTransactionFlowStrategy` field.
    

<a id="app-override"></a>

### App Override

-   When initializing a transaction, pass the `action` argument to [`transactionInitialize`](/api-reference/payments/mutations/transaction-initialize.md).
-   If `action` is not provided, Saleor falls back to the channel’s `paymentSettings.defaultTransactionFlowStrategy`.

<a id="actions-on-transactions"></a>

## Actions on Transactions

All actions on a transaction can be performed via the Saleor Dashboard or API.

<a id="performing-actions"></a>

### Performing Actions

-   **Dashboard:**  
    Go to **Order details → Transactions**, then choose **Charge**, **Cancel**, or **Refund**, whichever is available and appropriate.
    
-   **API:**  
    Use [`transactionRequestAction`](/api-reference/payments/mutations/transaction-request-action.md) with the corresponding `action` parameter (`CHARGE`, `CANCEL`, `REFUND`).
    

<a id="action-behavior"></a>

### Action Behavior

-   **Charged transactions** → Can be refunded directly.
-   **Authorized transactions** → Can be:
    -   **Cancelled** → Funds are released without charging.
    -   **Captured (charged) first** → Then optionally refunded.

<a id="authorization-expirations"></a>

### Authorization Expirations

-   Authorizations are temporary and typically expire according to **payment provider** and **card network** rules (often 7–30 days).
-   Expiration happens **on the provider side**; when an authorization expires, funds are automatically released.
-   To continue processing, you must **re-authorize** the transaction.
-   Track events in your payment app and report them to Saleor using [`transactionEventReport`](/api-reference/payments/mutations/transaction-event-report.md) as needed.
