Why was my account charged but I got no output?
Short answer
If a generation completes on the provider side but the file fails to upload or store, credits are auto-refunded within 24 hours. Check Settings, Billing for the refund entry. If 24 hours pass without a refund, contact support from the help icon with the project ID and the run timestamp — support can recover the asset or restore the credits manually.
How this happens
A few rare conditions produce a charge without a visible output. The most common is a successful generation on the provider side that fails to upload to Martini's storage — a transient network error during the asset transfer, a storage quota issue, a webhook timeout that misroutes the result. The provider already ran the compute and charged Martini for the inference, so the credits were deducted; the asset never appeared on your canvas because the post-generation step failed.
Another cause is a generation that completes but is mis-attributed to a different node or project due to a webhook delivery glitch. The output exists on the platform but is not visible in the place you expect to see it. A third, less common cause is a partial output on multi-shot or batch generations where some items succeed and some never return — credits are charged for what the provider produced, even if the upload step did not finish.
The auto-refund timeline
Martini's job-status reconciler runs on a recurring schedule and detects orphaned charges (credits deducted with no associated output) within 24 hours. When it finds one, it refunds the credits to the same balance they were spent from — subscription quota first, wallet second — and the failed run is excluded from the billable usage total. Most refunds in this category post within a few hours, not the full 24.
Check Settings, Billing for the refund entry. The recent activity row will show the original deduction, the failure detection, and the refund posting. If the refund is there, no further action is needed. If 24 hours pass with no refund and the asset is still missing, escalate via support — that is outside the normal reconciliation window.
How to escalate
Contact support from the help icon at the bottom corner of the app. Include: the project ID (visible in the URL or project settings), the approximate timestamp of the run, the model used, and a brief description of what you expected to see. Screenshots of the canvas and the Billing usage row help. Support can query the upstream provider for the job ID and confirm whether the inference completed, and can either recover the asset (if it exists in the provider's storage) or restore the credits manually if recovery is not possible.
Most cases are resolved within one business day. If the provider confirms the inference never returned, that itself is a provider-side failure and the refund is posted to your account. If the provider confirms the inference completed and the asset is recoverable, support pulls it into your project so you do not have to re-run.
How to avoid it in the future
This category of failure is rare but not zero. Two practical mitigations: stay signed in to a stable network connection during long-running video jobs (a network blip during webhook return is one of the more common triggers), and check the generation history panel in the project for runs you remember triggering but cannot find on the canvas — sometimes the asset is there, just not where you expect. The history panel is the source of truth for what was actually generated against your account.
For high-stakes runs, consider running the same generation twice on different models — the second run is a backup if the first encounters this category of failure. The redundancy costs credits but is worth it for client deliverables on a deadline.
Examples
- A 1080p Veo run completes server-side but the asset never appears — refunded within 24 hours.
- A multi-shot batch returns 2 of 3 items — credits for the missing item are refunded by the reconciler.
- A webhook timeout mis-routes a successful job — support recovers the asset on escalation.
- A network blip during the upload step from provider to Martini storage — auto-refund posts.
- Asset is in the generation history panel but not on the canvas — drag it back onto the canvas, no charge.
Edge cases
- Asset recovery via support is only possible if the upstream provider still retains the file (typically 7-30 days).
- Webhook-related failures are rarer on synchronous models (most images) and more common on async models (video, lip-sync).
- Workspace generations refund to the workspace pool, not to a personal balance.
- The 24-hour reconciliation window is the worst-case; most cases resolve within a few hours.
What to do next
- Check Settings, Billing for the refund entry — most cases resolve within hours.
- Look in the project generation history panel — the asset may be there but not on the canvas.
- If 24 hours pass with no refund and no asset, contact support with the project ID and timestamp.
- See the failed-generation refunds article for the broader refund mechanics.
Related help articles
Still need help? Contact support.