Problem
We still need to preserve legacy invoice downloads after migration, but we do not need a full pluggable resolver framework right now.
Scope
- Keep migration simple: map legacy invoice URL data during migration.
- Support a minimal fallback path so migrated legacy invoices can still resolve
invoice_url without Stripe lookup.
- Maintain current Stripe-first behavior for normal invoice entries.
Practical migration approach
- During migration, write legacy invoice URL into invoice entry data in a deterministic field.
- If
stripe_invoice_id is not a Stripe ID (for example URL-like legacy value), fallback should return the stored legacy URL.
Out of scope
- General multi-provider invoice resolver architecture.
Acceptance criteria
- Migrated legacy invoices remain downloadable/viewable.
- Stripe-native invoices continue to resolve via Stripe API.
- No regression to existing invoice ZIP download behavior.
Problem
We still need to preserve legacy invoice downloads after migration, but we do not need a full pluggable resolver framework right now.
Scope
invoice_urlwithout Stripe lookup.Practical migration approach
stripe_invoice_idis not a Stripe ID (for example URL-like legacy value), fallback should return the stored legacy URL.Out of scope
Acceptance criteria