Payment operations · Privately deployed
When the chargeback lands six weeks later, the evidence is already filed.
Lifecycle visibility, hashed evidence chain, and multi-gateway orchestration — deployed to a domain you own. Reserved for one merchant per instance.

Built for disputes that arrive six weeks late
When the chargeback lands, the evidence is already filed.
Banks want proof you delivered, the customer agreed, and the charge matches the order. PayOps captures every artefact inline — contesting a chargeback is a click, not a forensic exercise.

Webhook → evidence pack
charge.dispute.created → order auto-flagged → evidence chain frozen → operator notified → PDF ready to forward to the bank.
<60s
freeze
100%
captured
1 click
export
Every order persists a compliance-grade record. The moment a dispute webhook fires, PayOps freezes the chain, auto-flags risk, and prepares an exportable packet — long before the bank's evidence deadline.
Order audit chain
append-only, typed
Payment intent + charge id
gateway round-trip
Email correspondence
rendered HTML + text
Hosted consent signature
name + IP + UA
Hashed event timestamps
SHA-256 chained
Gateway webhook receipts
verified signatures
Lifecycle state transitions
1..N sequence
PDF evidence export
one-click forward
The lifecycle is the model
Every state of every order, captured in one canonical chain.
Operators stop asking 'is this paid yet'. The lifecycle is the answer — visible in realtime, derived from backend authority, with no UI shortcuts or optimistic guesses.
- 01
Created
Order is drafted. No gateway side-effects yet.
- 02
Draft saved
Manual save. No silent autosave to surprise you.
- 03
Gateway selected
Operator picks the gateway. Frozen onto the order from here.
- 04
Payment link generated
Gateway session created. URL persisted, expiry stamped.
- 05
Email sent
Request email dispatched. Consent record created in lockstep.
- 06
Consent received
Customer signs on the hosted page. IP + UA captured.
- 07
Payment started
Customer reaches the gateway checkout.
- 08
Paid
Webhook reconciles. Audit + event + outbox fire atomically.
- 09
Confirmation sent
Receipt delivered via durable outbox. Timeline goes green.
- 10
Refunded / Failed
Refund and failure paths preserve the full chain.
One operational hub
Twelve surfaces, zero duplicate truth.
The dashboard, order detail, email composer, and dispute log all read the same record at the same time. No shadow Postgres. No stale cache.
Payment requests
draft → send
Confirmations
receipt + retry
Gateway activity
webhook + reconcile
Customer consent
hosted + signed
Payment state
canonical lifecycle
Disputes
auto-flag + freeze
Evidence chain
hashed + exportable
Audit trails
append-only
Exports
CSV + PDF
Order notes
operator scratch
Email templates
versioned + active
Internal comms
team activity feed
Gateway-agnostic orchestration
One gateway in production. The rest, one adapter away.
Stripe handles every active charge today. The orchestration layer underneath was built gateway-agnostic from day one — adapters slot in without rewriting the order lifecycle, webhook contract, or audit chain.
Stripe
Checkout + webhook + dispute + refund in production.
Razorpay
Adapter scaffold ready · India-region routing.
Authorize.net
Adapter scaffold ready · activation on credentials.
Adyen
Card-present + 3DS routing under design.
PayPal
Marketplace flow under design.
Manual
Wire, ACH, or any out-of-band capture flow.
interface PaymentGateway { // Stable identifier + admin label. key: PaymentGatewayKey; label: string; enabled: boolean; // One contract, every adapter. createSession(input): Promise<CreatedSession>; verifyWebhook(body, sig): VerifiedPaymentEvent; getSessionStatus(id): Promise<SessionStatus>; expireSession(id): Promise<void>;}Routing precedence: per-order override → org default → registry default. Normalised VerifiedPaymentEvent shape across providers.
Trust where it matters
The data model was designed for the conversation finance has with auditors and banks.
Compliance isn't an export feature added later. It's the schema. Every record on PayOps was designed assuming someone might ask, two years from now, exactly what happened on a specific order.
Webhook idempotency
0%
every gateway event collapses to one transition
Drift between surfaces
0
one record · realtime push + polling backstop
Evidence retention
∞
paid, refunded, disputed — kept forever
01
Backend authority, never UI optimism
Every badge derives from the canonical record. Dashboard, order detail, and dispute log can never disagree.
02
Append-only audit log
Typed audit rows with actor, IP, user-agent, and metadata. Not editable, even by admins.
03
Hashed evidence chain
Per-order events chain-hash to the previous entry. Any rewrite breaks the chain — provable to disputes and regulators.
04
Atomic webhook handling
Idempotent, defensively ordered, conditional updates. Duplicate Stripe delivery is a no-op. Retried reconcile is a no-op.
05
Operations-grade idempotency
Consent recorded once. Confirmation emails sent once. Refunds ratchet forward, never backward.
06
Retention by design
Paid orders never delete. Refunded orders never delete. Risk-flagged orders persist through archive — surfaces dim, records stay.
Privately deployed · reserved per merchant
Not shrink-wrap SaaS. A managed deployment sized to your stack.
PayOps is reserved for one merchant per instance. After quotation, your deployment is scoped, branded, and provisioned on a domain you own — not a tenant on someone else's cluster.
01
Quotation
Share volume, current stack, and gateway preferences. We respond within one business day with a scoped proposal.
02
Customisation
Branding, policy snapshots, role matrix, gateway routing — configured to your org before the first deploy.
03
Private deployment
Provisioned on a domain you own. Reserved for one merchant per instance. No shared tenant, no public sign-up.
Included with every deployment
- Branded customer-facing pages
- Role + permission matrix to your spec
- Gateway adapters (Stripe live, others on demand)
- Audit-grade evidence chain
- Hosted consent flow
- PDF + CSV dispute exports
- Realtime SSE — single instance ready
- DigitalOcean / GCP / AWS targets
Start a quotation · or just email Vinay
Tell us about your payments stack.
A short brief is enough to get a tailored response from the team that builds and operates PayOps. We reply within one business day.