Recurring Transactions

A Recurring Transaction / Merchant Initiated Transaction (MIT) is a payment that is triggered by the merchant without the customer being actively present in the checkout flow. This is commonly used for subscription renewals, recurring billing, usage-based charges, installment plans, or delayed charges. Unlike a Customer Initiated Transaction (CIT), an MIT runs off-session, meaning the customer is not interacting with the payment interface at the time of charge.
However, before an MIT can be executed, a Customer Initiated Transaction (CIT) must first take place to establish consent and securely store the payment method.
Step 1: Initial CIT (Consent + Setup for Future Usage)
During the first transaction (when the customer is present), the merchant performs a CIT with the appropriate parameters:
These parameters serve two important purposes:
setup_future_usage: "off_session"signals that the payment method will be reused later when the customer is not present.customer_acceptancecaptures proof of consent including timestamp, IP address, and user agent which is critical for regulatory compliance and network rules.
As part of this CIT, the payment method is tokenized and securely stored (vaulted), and customer consent for future off-session debits is recorded. Once this transaction succeeds, the merchant now has a saved payment_method_id that can be used for future MIT executions.
Step 2: Executing the MIT (Off-Session Charge)
When it is time to charge the customer again for example, during a subscription billing cycle the merchant triggers:
In this flow:
off_session: trueindicates the customer is not actively participating.recurring_detailsidentify this as a recurring or merchant-initiated transaction.The saved
payment_method_idis used instead of collecting new payment details.
Because the payment method is already stored and consent has been captured, the lifecycle proceeds directly into processing. Conceptually, the state transitions are:
RequiresConfirmation β Processing β Successful (or another terminal state depending on the processor response)
There is no RequiresCustomerAction state in a standard MIT execution because the customer is not redirected for authentication under normal circumstances. However, depending on issuer rules, an off-session attempt may occasionally be declined and require fallback to a fresh CIT flow.
Last updated