PaygateDeveloper documentation
422payments.invalid_amountpaymentsRule R1

Amount is zero, negative, or in a currency you have not enabled

amount.minor must be a positive integer in the currency's minor units — satang for THB, so 1,250.00 THB is 125000, not 1250. The currency must also be one your tenant has enabled.

Why the API refuses

WHEN CreatePayment is executed, THE SYSTEM SHALL reject it unless amount.minor is greater than 0 and amount.currency is in the tenant setting currencies.

What to do

  • Send the minor-unit integer, never a decimal. {"minor": 125000, "currency": "THB"}.
  • Never compute a minor amount in a float: 12.5 * 100 is 1249.9999999999998 in IEEE-754 and truncates to a wrong amount. Multiply integers, or use your language's decimal type.
  • If the currency is the problem, enable it in the merchant dashboard under Settings → Currencies, or use one that is already enabled. errors[0].field names which half failed.

Operations that can return it