What lands in your output bundle
When any entity has a Money-shaped field, when a payment.* capability is selected, or when functional requirements mention checkout / charge / invoice / subscribe / refund / payment, Archiet emits the payment orchestration layer alongside the PCI-DSS overlay artifact pack:
compliance/pci_dss/
├── saq_a_attestation.md # SAQ-A scope and attestation draft
├── control_matrix.md # PCI-DSS v4 control IDs to architecture elements
├── network_segmentation.md # IaC checklist for CDE isolation
├── quarterly_scan_runbook.md # ASV scan + AOC cadence
└── pci_scope.md # cardholder-data boundary mapped to your code
app/services/payments/
├── payment_service.{stack-ext} # orchestrator with provider switch
├── payment_processor_stripe.{stack-ext} # adapter
├── payment_processor_paddle.{stack-ext}
├── payment_processor_paystack.{stack-ext}
├── payment_processor_flutterwave.{stack-ext}
├── payment_processor_ideal.{stack-ext}
├── payment_processor_ach.{stack-ext}
└── payment_webhook_controller.{stack-ext} # idempotent webhook handler
alembic/versions/
└── NNNN_payment_orchestration.py # payment_intents, payment_methods (tokens only),
# subscriptions, subscription_events,
# webhook_idempotency_keys with (provider, event_id) unique
What's already wired
- PCI scope minimization by construction. Generated code never persists PAN. The
payment_methodstable stores only processor vault tokens (Stripepm_*, Paddle subscription IDs, etc). Thepci_scope.mddoc enumerates which paths handle cardholder data and which don't, so your QSA can verify scope from the codebase. - Region-aware provider routing. A
payment_provider_for_regionconfig flag maps country code to provider — NG to Paystack, EU to iDEAL, US to Stripe. Add or override per-blueprint without touching code. - Webhook idempotency.
webhook_idempotency_keystable with(provider, event_id)unique index. Replay the same event three times and the handler returns 200 with no double-effect. - SCA / 3DS handling. When the processor returns
requires_action, the API returns the redirect URL plus status. Client polls/intents/{id}/statusuntilsucceededorfailed. The flow that's easy to implement wrong. - Subscription lifecycle. Start, pause with proration, resume, cancel-at-period-end vs immediate, dunning (three retry attempts on failed renewal then suspend). Generated as code, not as Stripe-dashboard buttons.
- Per-tenant key isolation. Workspace owners configure their own Stripe / Paddle / Paystack / Flutterwave keys via
IntegrationCredential. Generated code reads them from there — never from app-level env, never hardcoded. - Refund flow.
POST /payments/refundswith full + partial refund support, audit trail wired to the audit infrastructure.
What you don't have to argue with your QSA about
- "Is PAN persisted anywhere?" — No. Only processor vault tokens. Provable via
pci_scope.md+ grep on the codebase. - "What's your CDE boundary?" — Mapped in
network_segmentation.mdto the specific services that handle cardholder data. - "How are network segmentation controls enforced?" — Generated IaC checklist references the security groups / VPC / firewall rules that isolate the CDE.
- "What's your SAQ?" —
saq_a_attestation.mdis the draft. SAQ-A applies because PAN never touches your servers. - "What's your ASV scan cadence?" —
quarterly_scan_runbook.mddocuments the schedule + tooling. - "Webhook handling for chargebacks / disputes — show me the audit trail." —
audit_eventstable with hash chain + replay API (audit infrastructure ships in the same bundle).
Stacks supported
Flask · FastAPI · Django · NestJS · Laravel · Rails · Go · Java (Spring) · .NET · Salesforce Apex · SAP CAP · Dynamics 365.
Pricing
Payment orchestration with PCI scope minimization ships on the Professional plan ($599/mo, $419/mo annual). The PCI-DSS artifact pack ships on Professional too. Multi-region IaC for PCI architectures (cross-region failover) ships on Team ($1,499/mo).
Related
- See the payment orchestration feature page for the technical detail of the payment generator.
- See the e-commerce industry page for retail-vertical positioning.
- See the financial services industry page for fintech / banking positioning including PSD2 + Open Banking.
- See the compliance frameworks page for the full PCI-DSS artifact pack contents.