Loading…
Loading…
The difference between “Stripe checkout button” and a production payment layer is multi-provider routing, refund flows, dunning, webhook idempotency, and PCI minimization. Archiet generates all of it as code, including the cardholder-data scope doc your auditor will ask for.
Triggered when an entity has a Money-shaped field, when a payment.* capability is selected, or when functional requirements mention checkout, charge, invoice, subscribe, refund, or payment.
Generated code never persists PAN. Only processor vault tokens (payment_methods) are stored. Every generated bundle ships compliance/pci_scope.md mapping the cardholder-data boundary explicitly so your QSA can verify scope.
Region map flag selects provider by country code: NG to Paystack, EU to iDEAL, US to Stripe. Add or override per-blueprint without touching code.
webhook_idempotency_keys table with (provider, event_id) unique index. Replay the same event three times and the handler returns 200 with no double-effect.
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.
When the processor returns requires_action, the API returns the redirect URL plus status. Client polls /intents/{id}/status until succeeded or failed. The flow that’s easy to implement wrong.
Workspace owners configure their own Stripe / Paystack / Flutterwave keys via IntegrationCredential. Generated code reads them from there — never from app-level env.
Where this generator answers a procurement question on day one.