credit_note_issue_unconfirmed
The same route when Stripe did not answer the credit-note creation - a transient or timeout class, not a definite refusal. Money may or may not have been credited and the local mirror has no row. Deliberately not retried in-band, on the same posture as receptionist_connections_charge_unconfirmed above. What an operator does: do not replay blindly. The signed credit_note.created webhook reconciles this one, so wait for the mirror row; if it never lands, replaying the same request is safe within Stripe's retention - it derives the same idempotency key and produces the same note rather than a second one. A second, distinct cause was added 2026-08-19: Stripe REPLAYED a note this platform already knows voided. The re-issue key names the newest void the credit_notes mirror records, so in the seconds between an operator's void at Stripe and that note's signed credit_note.voided event landing locally, a press derives the key of the generation just killed and Stripe answers by replaying it - and a replay returns the body as saved AT CREATION TIME, issued with a null voided_at, so only the returned note's identity gives it away. Nothing was created and the invoice is still fully open; a 201 here would have written a critical audit row claiming a comp that does not exist. What an operator does for that cause: wait for the credit_note.voided event to reach the mirror - the key then names a new generation and this same request becomes a new one at Stripe - or issue from the Stripe dashboard, where the signed credit_note.created event mirrors it. P1 - built 2026-08-19 (billing_admin.py:1343 for the shared no-answer helper, :1620 for the replayed-identity refusal; route at :1373).
Problem shape
Every non-2xx response is an RFC 9457 application/problem+json body. The type URI below is stable and machine-matchable, so branch on the final path segment (the code) and treat the status as redundant confirmation. See the error-handling guide.
{
"type": "https://docs.vocapable.com/errors/credit_note_issue_unconfirmed",
"title": "…",
"status": 502,
"detail": "…",
"instance": "/v1/…"
}