Problem
The retry payout modal in the admin backoffice labels the amount input as "Sub-Amount in CENTS", which implies USD cents. However, the field actually accepts the smallest unit of the payout's account_currency — which varies by country.
For example, a KZT payout shows Remaining amount: KZT 4,450.55 but the field still says "CENTS", when the correct term for KZT subunits is tiyn. For currencies like JPY that have no subunit, entering an amount in "cents" would be nonsensical.
Relevant code:
- Form field:
server/polar/backoffice/payouts/forms.py — RetryPayoutForm.account_amount
- The amount is passed directly to Stripe with
currency=payout.account_currency, confirming it's always in the payout currency, never USD.
Current behaviour
Field label: Sub-Amount in CENTS
Field description: Amount to attempt to payout in **cents**. Leave empty to payout full amount.
Expected behaviour
Label and description should make clear the unit is the smallest unit of the payout's currency, e.g.:
- Label:
Sub-Amount (smallest currency unit)
- Description:
Amount to attempt to payout in the smallest unit of the payout currency (e.g. cents for USD, tiyn for KZT). Leave empty to payout the full remaining amount.
Bonus: dynamically interpolating the actual currency code/unit name would make this even clearer.
Sent by @allison-polar from Organization deletion data retention.
Problem
The retry payout modal in the admin backoffice labels the amount input as "Sub-Amount in CENTS", which implies USD cents. However, the field actually accepts the smallest unit of the payout's
account_currency— which varies by country.For example, a KZT payout shows
Remaining amount: KZT 4,450.55but the field still says "CENTS", when the correct term for KZT subunits is tiyn. For currencies like JPY that have no subunit, entering an amount in "cents" would be nonsensical.Relevant code:
server/polar/backoffice/payouts/forms.py—RetryPayoutForm.account_amountcurrency=payout.account_currency, confirming it's always in the payout currency, never USD.Current behaviour
Field label:
Sub-Amount in CENTSField description:
Amount to attempt to payout in **cents**. Leave empty to payout full amount.Expected behaviour
Label and description should make clear the unit is the smallest unit of the payout's currency, e.g.:
Sub-Amount (smallest currency unit)Amount to attempt to payout in the smallest unit of the payout currency (e.g. cents for USD, tiyn for KZT). Leave empty to payout the full remaining amount.Bonus: dynamically interpolating the actual currency code/unit name would make this even clearer.
Sent by @allison-polar from Organization deletion data retention.