# Gateway agnostic recurring payments

How to break processor lock-in for recurring / merchant-initiated transactions (MITs) by saving cards once and letting Orchestration route each MIT charge across multiple gateways for better success rates, cost optimisation, and resilience.

## What this page covers
- Why traditional recurring payments are gateway-locked, and how gateway-agnostic MIT routing differs
- Enabling connector-agnostic MIT on a business profile
- The three-step flow: enable the feature, save a card (customer present), charge off-session (customer not present) via a saved payment method
- Smart retry across gateways on soft declines, configured with Dashboard routing rules
- Supported processors for gateway-agnostic MIT routing
- What Orchestration handles automatically during the initial payment and during MIT payments

## Key concepts / endpoints
- **Enable the feature** — `POST /account/{merchant_id}/business_profile/{profile_id}/toggle_connector_agnostic_mit` with body `{ "enabled": true }`.
- **Save card (customer present)** — `POST /payments` with `setup_future_usage: "off_session"` and a `customer` object. After 3DS authentication the card is saved for cross-processor MIT charges.
- **MIT payment (customer not present)** — `POST /payments` with `off_session: true`, `confirm: true`, and `recurring_details: { "type": "payment_method_id", "data": "pm_xxx" }`. Orchestration routes to the best available processor automatically.
- **payment_method_id** — the saved payment method reference you charge against; the same id works across any supported processor.
- **Supported processors** — PeachPayments, ACI, Cybersource.
- **Smart retry** — routing rules (configured in the Peach Payments Dashboard) select a primary processor by cost or success rate, add fallback processors for automatic retry on soft declines, and support region-specific routing.
- **Handled automatically by Orchestration** — captures authorisation chain data from card networks, stores the payment method in a PCI-compliant Vault, returns a `payment_method_id`, includes authorisation chain data on each MIT, and retries across gateways on soft declines.

## Related
- [Gateway agnostic MIT flow](/flows/gateway-agnostic-mit.md): interactive walkthrough of the cross-processor recurring payment flow
- [Migrating from S2S to Orchestration](/migration-s2s.md): how mandates and MITs map when moving off the legacy S2S API
- [Webhooks](/webhooks.md): receive payment status events for MIT charges
- [Glossary](/glossary.md): definitions for MIT, CIT, mandate, and payment method

---

Interactive version: https://playground.peachpayments.com/gateway-agnostic
