We noticed one issue. I initially subscribed to a €1.00 plan and then upgraded to a €1.10 plan (a €0.10 difference). I expected to be charged only the prorated difference, but instead I was charged €1.00 again and €0.90 was added to my customer wallet.
Could you clarify why this happens, and whether it’s possible to charge only the additional amount so the upgrade is easier for customers to understand?
#Subscription Payment erro
1 messages · Page 1 of 1 (latest)
This is expected behavior based on the proration mode used.
What’s happening
- Your upgrade was done with
full_immediatelybilling. - Dodo charges the full new plan price (€1.00) immediately.
- The unused value from the old plan (€0.90) is returned as customer wallet credit.
- Net effect is correct financially, but it looks confusing to customers.
How to charge only the €0.10 difference
- Use
difference_immediatelywhen changing plans. - This charges only the price difference on upgrade.
- No extra wallet credit is created.
Recommended setup
- For simple upgrades:
difference_immediately - For time‑accurate billing:
prorated_immediately - Avoid
full_immediatelyunless you want to reset the billing cycle
Helpful Links
Dodo Payments Documentation
Learn how to change a customer's subscription plan, handle proration, and process webhooks reliably.
Dodo Payments Documentation
This guide will help you integrate the Dodo Payments Subscription Product into your website.
Hey @solemn trellis, We have limited availability over weekends, but rest assured we'll get back to you as soon as possible!
I used prorated_immediately and wasn't charged the difference
@past sail I used prorated_immediately and wasn't charged the difference
This is expected with prorated_immediately in small-price upgrades.
Why you weren’t charged
prorated_immediatelycharges only the time‑weighted difference for the remaining cycle.- In your case, the prorated amount was €0.00 after rounding, so no charge was created.
- Dodo does not force a minimum charge for proration.
Important distinction
prorated_immediately≠ “charge full price difference”- It’s time-based, not amount-based.
What to use instead
- Use
difference_immediatelyto always charge the exact upgrade delta (e.g. €0.10). - This avoids wallet credits and zero-charge upgrades.
Recommendation
- Simple plan upgrades →
difference_immediately - Time‑accurate SaaS billing →
prorated_immediately
Helpful Links
Hey @solemn trellis, We have limited availability over weekends, but rest assured we'll get back to you as soon as possible!
I use prorated_immediately and I initially subscribed to a €1.00 plan and then upgraded to a €1.10 plan (a €0.10 difference). I expected to be charged only the prorated difference, but instead I was charged €1.00 again and €0.90 was added to my customer wallet.
Could you clarify why this happens, and whether it’s possible to charge only the additional amount so the upgrade is easier for customers to understand?
This happens because prorated_immediately can fall back to full rebill + wallet credit in low‑amount upgrades.
Why you saw €1.00 charged + €0.90 wallet
- Dodo recalculates the subscription from “now” on the new plan.
- It charges the full new plan price (€1.10 → rounded/processed as €1.00 in your setup).
- The unused portion of the old plan (~€0.90) is returned as wallet credit.
- Net result is correct, but the invoice looks confusing.
Key point
prorated_immediatelyis time‑based, not “charge the price delta”.- With very small amounts, rounding + billing mechanics can trigger this behavior.
How to charge only €0.10
- Use
difference_immediatelyfor upgrades. - It always charges exactly the plan price difference.
- No wallet credits, no rebill confusion.
Recommendation
- Customer‑friendly upgrades →
difference_immediately - Strict time‑accurate billing →
prorated_immediately - Avoid
full_immediatelyunless you want a hard reset
Helpful Links