Supplier
garg GmbHMusterstr. 1, 12345 Musterstadt
Phone: 0123-456789
Email: rahulgrg.200@gmail.com
Customer
Rahul Garg#384/7 new colony adarsh gali no. 2
#384/7
rahulgrg.200@gmail.com
09306019728
09.06.2026
23.06.2026
—
| Description | Type | Qty | Unit Price | Total |
|---|---|---|---|---|
| fixed | Other | 1.00 hours | 200.00 EUR | 238.00 EUR |
| Subtotal | 200.00 EUR | |||
| VAT (19.00%) | 30.40 EUR | |||
| Total | 190.40 EUR | |||
fix
Verify reminder emails are sent and next escalation is automatically scheduled.
1. Trigger First Reminder (Test)
Use the API or wait for an invoice to become overdue:
POST /api/v1/invoices/<uuid>/reminders/trigger/
Expected: Reminder L1 scheduled and email sent via Brevo.
2. Send Reminder Now (Manual Test)
POST /api/v1/invoices/<uuid>/reminders/send/
{"level": 1}
Check delivery status: sent → delivered (via Brevo webhook).
3. Check Reminder Status
GET /api/v1/invoices/<uuid>/reminders/status/
Verify:
reminder_levelincreases after each sent remindernext_reminder_scheduled_atis set (auto-scheduled)escalation_complete= true when max level reached
4. View Reminder History
GET /api/v1/invoices/<uuid>/reminders/
Should show full history per invoice with delivery status.
- Approved reminder sent via email (reuses email delivery)
- Next escalation automatically scheduled based on tenant config
- Max level reached →
escalation_completeflagged for manual action - Reminder history tracked per invoice
- Delivery tracking (sent, delivered, bounced, failed)
Verify immutable audit trail records every invoice status change and action.
1. View Audit Logs via API
List all audit logs (paginated):
GET https://app.taskfree.de/api/v1/files/audit-logs/
Returns all audit log entries across the platform.
Single audit log entry:
GET https://app.taskfree.de/api/v1/files/audit-logs/<uuid:pk>/
Get details of a specific audit log entry by ID.
2. Verify Logged Actions
Perform these actions on an invoice and verify each creates an audit log:
- Create invoice
- Finalize / approve invoice
- Send invoice to customer
- Mark invoice as paid
- Void invoice
- Reissue invoice
3. Verify Audit Log Fields
Each audit log entry must contain:
- timestamp — when action occurred
- tenant_id — company/tenant identifier
- user_id — who performed the action
- entity_type — e.g.,
invoice - entity_id — invoice UUID
- action — e.g.,
created,issued,sent,paid,voided - old_status / new_status — status transition
- metadata — additional context
4. Verify Immutability
Attempt to modify or delete an audit log entry via Django admin or database — this should be prevented or not exposed in the UI.
- Append-only audit log table
- Records: timestamp, tenant_id, user_id, entity_type, entity_id, action, old_status, new_status, metadata
- Covers: created, validated, approved, issued, sent, paid, voided
- Cannot be modified or deleted
- Queryable by pipeline_run_id, tenant_id, entity_id
- GoBD-compliant immutable audit trail