Skip to content

11.4 Payment Reconciliation

Sprint: Sprint 11 - Billing
Feature ID: 11.4
Subtasks: 11.4.1, 11.4.2

Objective

Deliver "Payment Reconciliation" within Sprint 11 - Billing.

Dependencies

Aggregated from the subtasks below (prerequisite task IDs and enablers):

  • 11.3.2
  • 8.5.2

Subtasks

11.4.1 Reconcile payments and emit invoice.paid.v1

  • ID: 11.4.1
  • Title: Consume payment.completed.v1 to settle invoices
  • Description: Idempotent consumer of payment.completed.v1 matching the invoice, transitioning it to PAID, and emitting invoice.paid.v1 (FR-24). Optionally emit on the auto-pay path where payment consumes invoice.generated.v1.
  • Business Purpose: Close the billing loop on payment (FR-24, AC-02 step 5).
  • Inputs: FR-24, event-catalog invoice.paid.v1, AC-02.
  • Outputs: Reconciliation consumer + event.
  • Acceptance Criteria:
  • A matching payment.completed.v1 moves the invoice to PAID and emits invoice.paid.v1; the consumer is idempotent.
  • Dependencies: 11.3.2, 8.5.2
  • Complexity: M

11.4.2 Overdue detection

  • ID: 11.4.2
  • Title: Detect overdue invoices and emit invoice.overdue.v1
  • Description: A scheduled check marking unpaid invoices past due_date as OVERDUE and emitting invoice.overdue.v1 (consumed by notification and ticket).
  • Business Purpose: Flag non-payment for dunning and support (FR-24 adjacent).
  • Inputs: event-catalog invoice.overdue.v1.
  • Outputs: Overdue scheduler + event.
  • Acceptance Criteria:
  • An unpaid invoice past due is marked OVERDUE once and emits invoice.overdue.v1.
  • Dependencies: 11.3.2
  • Complexity: S

Acceptance Criteria

Each subtask above carries its own objective, testable acceptance criteria. This feature is complete when every subtask's acceptance criteria are met.

Deliverables

  • Reconciliation consumer + event.
  • Overdue scheduler + event.

Definition of Done

  • All subtasks (11.4.1, 11.4.2) completed and their acceptance criteria verified.
  • All listed dependencies satisfied.
  • Build and tests green per the global conventions in ../README.md (Section 3).