Transaction Flow Strategy
The TransactionFlowStrategyEnum
defines how Saleor requests the initial payment action:
AUTHORIZATION
: hold funds first; capture later.CHARGE
: capture funds immediately.
This strategy applies only to payment apps.
It does not affect manual transactions created with transactionCreate
or updated via transactionUpdate
.
For manual transactions, you explicitly define the amounts and events yourself.
Event Flows by Strategyβ
- Authorization flow
- Charge flow
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.
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.
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.
Configurationβ
You can set the strategy per channel as the default or override it per payment during transaction initialization.
Channel Defaultβ
-
Dashboard: Go to Configuration β Channels β
<your_channel>
β Payment settings, then change Authorize transactions instead of charging. -
API: Use the
channelUpdate
mutation and set thepaymentSettings.defaultTransactionFlowStrategy
field.
App Overrideβ
- When initializing a transaction, pass the
action
argument totransactionInitialize
. - If
action
is not provided, Saleor falls back to the channelβspaymentSettings.defaultTransactionFlowStrategy
.
Actions on Transactionsβ
All actions on a transaction can be performed via the Saleor Dashboard or API.
Performing Actionsβ
-
Dashboard:
Go to Order details β Transactions, then choose Charge, Cancel, or Refund, whichever is available and appropriate. -
API:
UsetransactionRequestAction
with the correspondingaction
parameter (CHARGE
,CANCEL
,REFUND
).
Action Behaviorβ
- Charged transactions β Can be refunded directly.
- Authorized transactions β Can be:
- Cancelled β Funds are released without charging.
- Captured (charged) first β Then optionally refunded.
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
as needed.