Skip to content

Process 10 — Manual refund (admin-initiated credit note)

Process 10 — Manual refund (admin-initiated credit note)

Section titled “Process 10 — Manual refund (admin-initiated credit note)”

Parent spec: 10-admin-console · Triggers: 05-payment-saga §9 (credit-note flow).

An authorized administrator reviews a paid invoice and requests a full or partial refund. The refund workflow creates the credit note, retains its document, notifies the advertiser and records the result in the audit log.An authorized administrator reviews a paid invoice and requests a full or partial refund. The refund workflow creates the credit note, retains its document, notifies the advertiser and records the result in the audit log.

Notes

  • Trigger point: instance.sendEvent to the existing AuctionSaga instance keyed on auction_id. The admin console never calls Stripe directly; 05 owns the credit-note call to keep the §14 UStG audit trail single-sourced.
  • Confirmation requires typing the auction_id and shows the canonical Stripe PaymentIntent id (fetched via invoices.retrieve) — guards against wrong-row refunds.
  • Audit row is written before the saga signal and updated on completion. If the saga signal fails, the audit row records status='failed' with last_error.
  • Role gate: finance is read-only on /admin/refunds (can view PI/credit-note ids and history) but cannot POST; admin and founder may POST.
  • The bidder notification is owned by 05 (consistent with non-admin refund paths); admin console does not send mail directly.
  • Chargebacks (charge.dispute.created) follow a different path (DisputeSaga, 05 §6) and are not initiated here.