◀ Payment Orchestration

Payment Orchestration Roadmap

Planning and execution tracking — what is PLANNED

64%
Completion 16/25
25
Total
16
Completed
2
In Progress
7
Pending
0
Blocked
64% complete 16 of 25 capabilities
Capability Status Progress Est. Hours Assigned To
PaymentRail Enum
5 rail types: card_psp, bank_transfer, open_banking_pis, wallet, manual_settlement
Completed
100%
0h
RailResult Value Object
Normalized tri-state result: success/pending/failed with safe provider response
Completed
100%
0h
PaymentContext Value Object
Execution context: tenant, amount, currency, paymentOptionKey, idempotencyKey
Completed
100%
0h
PaymentRoute + Capability Metadata
Resolved route: rail, provider, mode + supportsAsync, supportsRefund, settlementMode
Completed
100%
0h
PaymentRailInterface + RouteResolverInterface
Rail execution + status check + route resolution contracts
Completed
100%
0h
PaymentRailRegistry
Lookup by PaymentRail enum — 5 rails registered
Completed
100%
0h
Failure Classification Taxonomy
16 failure codes across 4 categories: transient, permanent, configuration, internal
Completed
100%
0h
Capability Status Progress Est. Hours Assigned To
CardPspRail (wraps existing gateways)
Multi-provider card rail: stub, hyperpay, paypal — no gateway code changes
Completed
100%
0h
BankTransferRail (skeleton)
Returns pending with reference — awaiting bank API integration
In progress
60%
0h
OpenBankingPaymentRail (skeleton)
Lean Technologies PIS integration — skeleton returns pending
Pending
40%
0h
WalletRail (skeleton)
Returns configuration_error — awaiting WalletRepository connection
Pending
40%
0h
ManualSettlementRail (skeleton)
Admin confirm — returns pending with reference
In progress
60%
0h
ConfigDrivenRouteResolver
3-level resolution: exact match → defaultMethodKeys → default route
Completed
100%
0h
Capability Status Progress Est. Hours Assigned To
Idempotency Enforcement (all rails)
Triple-layer: app check + DB ON CONFLICT + WHERE status guard. Pending included in duplicate detection.
Completed
100%
0h
Outbox Delivery Guarantee
Transactional outbox with payment_rail, payment_provider, idempotency_key in all events
Completed
100%
0h
Reconciliation Worker
Polls pending executions, calls checkStatus(), transitions pending→completed or pending→failed
Completed
100%
0h
Webhook Handler
Generic /api/v1/billing/webhook/{provider} — idempotent, signature-ready, confirmation/rejection dispatch
Completed
100%
0h
DB Immutability Enforcement
Trigger v2: terminal row protection, valid transitions only, processing→pending allowed for async
Completed
100%
0h
Structured Observability
billing.execution.result + billing.rail.execution events with duration_ms, rail, provider, correlation_id
Completed
100%
0h
Failure Classification Discipline
All failures map to PaymentFailureCode enum — no raw strings, no exception leaks
Completed
100%
0h
Capability Status Progress Est. Hours Assigned To
HyperPay Live Connection
Connect HyperPayGateway to actual API — MADA, VISA, Mastercard
Pending
0%
0h
Bank Transfer API + Reconciliation
Connect bank transfer rail to bank API + webhook/batch reconciliation
Pending
0%
0h
Open Banking PIS (Lean Technologies)
Connect Open Banking rail to Lean Technologies PIS API
Pending
0%
0h
Wallet Reserve/Debit
Connect WalletRail to WalletRepository for reserve → debit flow
Pending
0%
0h
CTC-backed Route Resolver
Replace ConfigDrivenRouteResolver with CTC-backed resolver reading from contract_term_attrs
Pending
0%
0h