Skip to content

E8-F4: Deferred Payment Offer Generation

Epic: E8: Payment Processing

Size: M (Medium)

Problem / Outcome

Generate payment offers for VIP/Sponsor quotas.

Scope

In-Scope:

  • Group orders by debtor
  • Generate payment offer via e-racuni API
  • Send payment offer to debtor

Out-of-Scope:

  • Automatic payment matching

Acceptance Criteria

  • AC1: Multiple orders for same debtor can be grouped into single payment offer
  • AC2: Payment offer created in e-racuni with all line items
  • AC3: Payment offer emailed to debtor via e-racuni

Data Model Impact

PaymentOffer table:
- id (UUID, PK)
- debtor_id (UUID, FK)
- e_racuni_id (VARCHAR)
- e_racuni_reference (VARCHAR)
- orders (UUID[])
- total_amount (DECIMAL)
- due_date (DATE)
- status (ENUM: draft, sent, paid, overdue, cancelled)
- created_by (UUID, FK)
- created_at (TIMESTAMP)
- sent_at (TIMESTAMP)
- paid_at (TIMESTAMP)

Debtor table:
- id (UUID, PK)
- name (VARCHAR)
- oib (VARCHAR)
- address (VARCHAR)
- email (VARCHAR)
- payment_terms_days (INTEGER, default 30)

Permissions/Roles

  • Admin (Finance)

How to Verify

npm test -- --grep "payment offer"

Expected: Offer created in e-racuni, email sent.

Dependencies

Implementation Tasks

See E8: Payment Processing Tasks

Doc References


Last Updated: January 2026