Playbook
Merchant onboarding rollout playbook
Environment progression, rail enablement, integration validation, and go-live gates for approved merchant deployments—without invented timelines.
01
Objective
Move an approved merchant from integration review to a bounded production rollout with validated rails, webhook endpoints, and reconciliation matchers—without skipping environment gates.
02
Prerequisites
- Merchant approval recorded with enabled rails documented.
- Separate sandbox and production secrets provisioned server-side.
- Lifecycle vocabulary agreed between finance, support, and engineering.
- Webhook endpoint deployed with raw-body verification in non-production first.
03
Operational signals
- Sandbox payments complete full lifecycle without manual overrides.
- Matchers produce expected exceptions for deliberate negative tests.
- Finance confirms recognition policy mapping for Confirmed vs treasury posting.
04
Decision points
- Which rails go live first versus staged enablement.
- Whether low-risk SKUs may fulfill on Paid while finance waits for Confirmed.
- Who approves production API key activation and webhook secret cutover.
05
Escalation paths
- Integration engineering → payment operations lead for rail mismatches.
- Finance controller → treasury for recognition policy exceptions.
- Security → secret rotation if credentials exposed during rollout.
06
Failure modes
- Production keys activated before webhook verification passes staging tests.
- Support macros that mark paid without payment_id references.
- Reconciliation matchers copied from demo data with wrong tolerances.
07
Recovery patterns
- Freeze production posting; retain sandbox for replay testing.
- Re-baseline lifecycle transitions from verified provider events.
- Re-run matchers with documented tolerances before re-enabling auto-resolve.
- Publish internal rollout checklist updates from root cause.
- Retries are normal. Webhook delivery is at-least-once. Design consumers to tolerate duplicates and out-of-order arrivals where possible.
- Asynchronous by design. Payers, chains, and your servers operate on different clocks. UI and finance should not assume synchronous finality.
- Eventual consistency. API reads, webhooks, and portal views may briefly diverge during transitions. Reconciliation jobs exist to converge truth.
Walkthroughs: /operations