1. Kushki One
Kushki Docs
English
  • Español
  • English
  • Home
  • Quick Start
    • Frequently Asked Questions
    • Moving to Production
    • Policy for Important API Changes
    • Test Data
    • Error Codes
    • Latest Features
  • Payment Glossary
    • Payments Glossary
  • One-time card payments (Online)
    • Supported card brands
    • Functionalities by business model
    • Network Tokens
    • One-step Payments
      • How do Card Payments Work?
      • Accept a Card Payment
      • Direct charge (without token)
      • Accept One-Time Payments with OTP
      • OTP Authentication Error Codes
      • Error codes for single card payments
    • Two-steps Payments
      • How do one-time payments with authorization and capture work?
      • Receive payments with authorization and capture
    • Webpay Plus Payments
      • Accept Payments through Webpay Plus
      • Reserve funds with Webpay Plus
    • Refunds
      • Returns, cancellations, and refunds
    • 3DS Authentication
      • Introduction to 3DS
      • 3DS API integration
      • 3DS integration with kushki.js library
      • 3DS API integration plus kushki.js library
      • 3DS Error Codes
    • Apple Pay Payments
      • Apple Pay Configuration
      • Apple Pay Sandbox testing
  • Recurring Card Payments (Online)
    • Functionalities by business model
    • External subscriptions to Kushki
    • Authenticate your subscriptions with 3DS
    • Accept one-click payments with 3DS
    • Error codes in recurring charges
    • Apple Pay for Subscriptions
    • Scheduled payments
      • How do Credit or Debit Card Payment Recurring Charges Work?
      • Create a recurring charge
      • Manage your Scheduled Charges
    • OneClick Webpay Scheduled Payments
      • Recurring Payments through Webpay OneClick
      • Reserve funds in subscriptions with Webpay OneClick
    • One Click Payments with Webpay OneClick
      • Webpay OneClick Payments
      • Reserve funds in one click payments with Webpay OneClick
    • OneClick Payments
      • Accepting One-Click Payments
      • How does authorization and capture work in OneClick payments?
      • Receive OneClick payments with authorization and capture
  • Card-present payments
    • Accept card present payments
    • Test data
    • Webhooks for card present
    • Raw card-present API
      • Raw card-present API overview
      • Cryptographic key exchange
      • Sample script to encrypt information
      • Take Payments
      • Frequently Asked Questions
      • Error codes for card-present transactions
    • Transactions
      • Transactions
      • Cancel payments
    • Kushki One
      • First Steps
      • Autenticación y Cifrado de Requests
      • Accept payments with Kushki One
      • Amount Format
      • Async services and webhooks
      • Printing on SmartPOS terminal
      • Unified Error Catalog — Kushki ONE Connect
    • Kushki One Payment App
      • Overview
      • Process a payment
      • Split payment on the terminal
      • Refunds and PreAuth & Capture
      • Review Your Transactions
      • Terminal Setup
  • Wire Transfers
    • Banks and transaction details for bank transfer payments.
    • Receive Wire Transfers
    • Check the Status of a Transaction
  • Cash Payments
    • How do Cash Payments Work?
    • Accept a Cash Payment
    • Authorized locations
    • Error Codes for declined cash transaction
  • Money Disbursement
    • Wire Transfer
      • How does the dispersion by means of bank transfer work?
      • Payment Distribution to Bank Accounts
      • Error codes for transfer dispersions
  • Plugins
    • Shopify
      • Shopify
      • Plugin Operation
    • VTEX
      • VTEX Integration Guide
  • Payment Links
    • Smartlinks
  • Payment forms and buttons
    • Kajita
      • How Does it Work?
      • Payment Kajitas
    • Payment Button
      • Overview
      • Generate a payment button
  • Branch Offices Management
    • How to Onboard Submerchants via API
  • Notifications
    • Good Practices
    • Check your Webhooks
    • One-time Payments Webhooks
      • Webhook for One-Time Payments made with a card
      • Webhook for One-Time Payments by Wire Transfer
      • Webhook for One-Time Payments in Cash
      • Webhook for Payments Made with Webpay Plus
    • Recurring Payments Webhooks
      • Webhook for Recurring Payments Made with Card
      • Webhook for recurring payments with Webpay OneClick
    • Payment Distribution Webhooks
      • Webhook for payment disbursement through wire transfer
    • Payment button Webhooks
      • Webhooks with Payment Button
    • Smartlinks Webhooks
      • Webhooks with Smartlinks
    • Refunds Webhooks
      • Webhook for Voids and Refunds
      • Chargeback Webhooks
HomeMexico 🇲🇽Ecuador 🇪🇨Chile 🇨🇱
Colombia 🇨🇴Peru 🇵🇪
HomeMexico 🇲🇽Ecuador 🇪🇨Chile 🇨🇱
Colombia 🇨🇴Peru 🇵🇪
Status
Soporte / Support
English
  • Español
  • English
  1. Kushki One

Amount Format

🚧 Early Release — Beta
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.

Your currency and its decimals#

In Chile you operate in Chilean pesos (CLP), which use no 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 conversion rule#

The value is sent as it is, with no zeros added.
To chargeYou send
1,244 CLP1244
12,000 CLP12000
15,990 CLP15990
Never pad a Chilean peso amount
If you add 00 to the end of a CLP amount, you will charge a hundred times more than intended. Padding zeros apply only to two-decimal currencies.

How the amount adds up#

The amount charged is the sum of every field in the amount object.
FieldWhat it represents
subtotal_ivaThe portion of the sale subject to tax
ivaThe tax amount on that portion
subtotal_iva0The exempt portion. Use this field alone when the sale has no breakdown
extra_taxesIndustry-specific taxes: airport_tax, iac, ice, travel_agency. Send 0 when they do not apply
tipTip. 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

Full example#

A retail sale: 15,990 CLP, of which 2,553 is 19% VAT.
ComponentValueMinor units
subtotal_iva13,437 CLP13437
iva2,553 CLP2553
Total charged15,990 CLP15990
{
  "amount": {
    "iva": 2553,
    "subtotal_iva": 13437,
    "subtotal_iva0": 0,
    "extra_taxes": { "airport_tax": 0, "iac": 0, "ice": 0, "travel_agency": 0 }
  },
  "client_transaction_id": "9a8b7c6d-2222-4000-8000-ffeeddccbbaa"
}

Sale with no tax breakdown#

When you do not itemize taxes, put the whole amount in subtotal_iva0:
{
  "amount": {
    "iva": 0,
    "subtotal_iva": 0,
    "subtotal_iva0": 11800,
    "extra_taxes": { "airport_tax": 0, "iac": 0, "ice": 0, "travel_agency": 0 }
  },
  "client_transaction_id": "1a2b3c4d-3333-4000-8000-112233445566"
}

Convert to the minor unit#

Your currency needs no conversion
In a currency with no decimals, the integer you send is the amount: there is no multiplication and no padding. The helper below only matters if your POS system also serves a two-decimal market.
JavaScript
Python

Common mistakes#

MistakeWhat happensHow to avoid it
Sending the amount with decimalsThe charge goes out with the wrong amount, or the request is rejectedConvert to minor units before sending
Padding a no-decimal currency with 00You charge a hundred times more than intendedIn COP and CLP the amount is sent as it is
Reusing a conversion helper from another marketYou charge a hundred times more, or lessDerive the decimals per terminal, not per codebase
Sending the amount as text with separatorsValidation errorStrip every separator and send an integer
Converting with floating pointOne-cent difference on some amountsUse integers or a decimal type
Reusing an amount returned by a webhookWrong magnitudeThe 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.

If you operate in several markets#

This section applies only if your POS system serves merchants in more than one country.
CurrencyCountryDecimals
CLPChile0
COPColombia0
MXNMexico2
PENPeru2
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.
Modificado en 2026-10-13 20:10:55
Anterior
Accept payments with Kushki One
Siguiente
Async services and webhooks
Built with