This product is in early access. Parameters, response structures and behaviors may change without prior notice. Do not use this version in production without coordinating with the Kushki integrations team first.
Every Kushki ONE Connect endpoint that involves money shares the same amount object. Before you build your first request, you need one rule: amounts are sent as integers, in the currency's smallest unit.Never send periods, commas, spaces or any other separator.
In Mexico you operate in Mexican pesos (MXN), which use two decimals.
Currency does not travel in the request
The amount object carries no currency field: the terminal resolves the currency from its own configuration. The integrations team confirms which one your terminal uses during onboarding.
The amount charged is the sum of every field in the amount object.
Field
What it represents
subtotal_iva
The portion of the sale subject to tax
iva
The tax amount on that portion
subtotal_iva0
The exempt portion. Use this field alone when the sale has no breakdown
extra_taxes
Industry-specific taxes: airport_tax, iac, ice, travel_agency. Send 0 when they do not apply
tip
Tip. Travels on /charge and /authorization; on /pos_tip it is the amount of the operation. If the capability is not enabled the terminal ignores it — request it at soporte@kushkipagos.com
In most languages, 12.44 * 100 returns 1243.9999999999998, which truncates to 1243. You undercharge by one cent and your reconciliation breaks intermittently. Use integers or a decimal type.
Pass the value as a string, not as a decimal number: Decimal(12.44) inherits the same binary error you are trying to avoid.
The charge goes out with the wrong amount, or the request is rejected
Convert to minor units before sending
Padding a no-decimal currency with 00
You charge a hundred times more than intended
In COP and CLP the amount is sent as it is
Reusing a conversion helper from another market
You charge a hundred times more, or less
Derive the decimals per terminal, not per codebase
Sending the amount as text with separators
Validation error
Strip every separator and send an integer
Converting with floating point
One-cent difference on some amounts
Use integers or a decimal type
Reusing an amount returned by a webhook
Wrong magnitude
The event does not copy your request: operation.amount omits zero iva and subtotal_iva and adds currency and tip
Validate before you send
Check that the amount fields add up to the total you mean to charge before you call the API. A badly built amount is the most common cause of reconciliation gaps.
This section applies only if your POS system serves merchants in more than one country.
Currency
Country
Decimals
CLP
Chile
0
COP
Colombia
0
MXN
Mexico
2
PEN
Peru
2
The same integer is different money
1244 means 12.44 MXN in Mexico and 1,244 COP in Colombia: a hundredfold difference. Since the payload carries no currency field, resolving this is entirely on your side.Read the currency_code configured on each terminal and derive the decimal handling from there, never from the branch or the user's language.
Accept payments with Kushki ONE
With the amount correctly built, review the payment flows: direct sale, pre-authorization, capture, post-tip and void.
Error catalog
Look up the amount validation codes and their recommended corrective actions.