Requirements and traceability register
Status: Draft baseline. Priority P0 = essential for regulated pilot, P1 = useful for MVP operations, P2 = later. 'Proposed' does not mean legally approved or implemented.
| ID | Requirement | Priority | Story | Screen / interface | Core entities | Verification |
|---|---|---|---|---|---|---|
| FR-001 | Merchant verification and activation gates | P0 | US-001 | M08, A02 | Merchant, MerchantVerification | KYB state tests |
| FR-002 | Merchant-scoped auth and permissions | P0 | US-012 | All merchant screens/API | MerchantUser, AuditEvent | Cross-tenant negative tests |
| FR-003 | Secure consumer-to-merchant linking | P0 | US-002 | C01 | ConsumerMerchantLink | Expired/replayed invite tests |
| FR-004 | Versioned merchant-specific mandate | P0 | US-002/008 | C03/C07 | PaymentMandate, ConsentEvidence | Revocation and evidence tests |
| FR-005 | Tokenised payment methods | P0 | US-002 | C04/C05 | PaymentMethod, PaymentPreference | PCI boundary tests |
| FR-006 | Idempotent bill ingestion | P0 | US-003 | M03, POST /v1/bills | Bill, BillVersion, IdempotencyKey | Duplicate/concurrency tests |
| FR-007 | Durable collection scheduling | P0 | US-004 | M03/C02 | Bill, Job, OutboxEvent | Timezone/restart tests |
| FR-008 | Authorised fallback and retry policy | P0 | US-005 | M04/C05 | PaymentAttempt, PaymentMandate | Hard/soft decline tests |
| FR-009 | Unknown provider outcome reconciliation | P0 | US-010 | A03 | PaymentAttempt, ProviderWebhook | Timeout/replay tests |
| FR-010 | Immutable balanced ledger | P0 | US-004/007 | A04 | LedgerTransaction, LedgerEntry | Zero-sum/duplicate tests |
| FR-011 | Settlement and bank reconciliation | P0 | US-007/011 | A04 | SettlementRecord, ReconciliationRecord | Statement variance tests |
| FR-012 | Eligible full-value merchant payout | P0 | US-007 | M05/A05 | Payout, PayoutAllocation | Double allocation tests |
| FR-013 | Refunds, disputes and reversals | P0 | US-009 | A06 | Refund, Dispute, LedgerTransaction | Post-payout reversal tests |
| FR-014 | Merchant webhooks with signed delivery | P0 | US-003/004/006 | M07 | OutboxEvent, WebhookDelivery | Replay and ordering tests |
| FR-015 | Transactional customer notifications | P0 | US-004/006/008 | C08 | Notification, OutboxEvent | Delivery retry tests |
| FR-016 | Audit trail for privileged operations | P0 | US-001/009 | A07 | AuditEvent | Approval/audit tests |
| FR-017 | Separate merchant fee assessment/invoice | P0 | US-007 | M06 | FeeAssessment, MerchantInvoice | No payout netting tests |
| FR-018 | Operational exception queues | P0 | US-009/010/011 | A01/A03/A04 | RiskCase, ReconciliationRecord | Ownership and aging tests |
| FR-019 | Consumer self-service history | P1 | US-004/006 | C02/C06 | Bill, Collection | UX and status tests |
| FR-020 | Merchant exports and statements | P1 | US-007 | M03/M05 | PayoutAllocation | Export access tests |
| FR-021 | Merchant sandbox and test webhooks | P1 | US-001 | M07 | ApiCredential, WebhookEndpoint | Certification tests |
| FR-022 | Advanced multi-partner routing | P2 | — | Admin | ProviderConfiguration | Future design |
| FR-023 | Stored-value consumer wallet | P2 | — | Consumer | Future | Explicitly deferred |
Non-functional requirements
| ID | Requirement | Target / gate |
|---|---|---|
| NFR-001 | No duplicate financial instruction on retry | Mandatory correctness invariant |
| NFR-002 | Every posted journal balanced per currency | Database-enforced/tested invariant |
| NFR-003 | Sensitive payment data stays with provider | PCI scope validated before launch |
| NFR-004 | Merchant data isolation | Automated negative tests for every API |
| NFR-005 | Provider webhook replay safety | Duplicate and out-of-order test suite |
| NFR-006 | Disaster recovery | RPO/RTO agreed before pilot; restore drills |
| NFR-007 | Reconciliation completeness | Daily partner/bank reconciliation and aging alerts |
| NFR-008 | Privileged access | MFA, least privilege and audit |
| NFR-009 | Accessibility | Target WCAG 2.2 AA; test key flows |
| NFR-010 | Availability and latency | Define SLOs after provider capabilities and pilot sizing |
| NFR-011 | Security operations | Vulnerability management, incident plan, penetration test |
| NFR-012 | Data lifecycle | Retention, privacy rights and legal holds approved |
Change control
New requirements receive a stable ID, owner, rationale, priority, source, dependencies, acceptance criteria and status. Changes affecting financial or legal semantics require review by product, finance, engineering and specialist advisers. Link GitHub Issues to the relevant requirement ID. Do not silently mark proposed items approved.