| The amount charged is exactly what was passed in priceDetails.price. Overcharges are almost always a currency unit error — most commonly confusing USD cents with zero-decimal currency units like JPY. |
How checkout price works
priceDetails.price is the amount charged, in the smallest currency unit — cents for USD/EUR, whole units for zero-decimal currencies like JPY. Appcharge charges exactly what is passed.
Common cause: zero-decimal currencies (JPY, KRW)
For JPY, price: 1500 means ¥1,500 — not $15.00. A common mistake: 1499 USD cents × 133 (JPY rate) = 199,800 → charges ¥199,800 (~$1,247) instead of ~¥1,998.
The attributes field does not set the price
Fields like usd_price in attributes are metadata only. Only priceDetails.price determines what the player is charged.
How to fix
- USD: price in cents (e.g. 1499 for $14.99)
- JPY: price in whole yen (e.g. 1998 for ¥1,998) — do not multiply cents by an FX rate
- Test in Sandbox first and verify the displayed amount before going live
Requesting a refund
Contact Appcharge Support with the order ID, intended price, and currency.