1. México 🇲🇽
  • API Docs Mexico 🇲🇽
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Make a charge or deferred charge
      • Create payment (tokenless)
      • Request deferred options
      • Refund a transaction
      • Authorize payments
      • Preauthorization (tokenless)
      • Void a transaction
      • Reauthorize payments
      • Capture an authorized payment
      • Bin Info V2
      • Bin Info
      • Validate OTP
      • Verify Account
    • One-Click and Scheduled Payments
      • Request a recurring charge token
      • Create a recurring charge
      • Make an One-click payment
      • Update recurring charge card data
      • Cancel a recurring charge
      • Update a recurring charge
      • Add a temporary charge or discount
      • Authorize payments
      • Capture an authorized payment
      • Get recurring charge Info
    • Transfer in
      • Get Bank List
      • Request a Transfer In token
      • Init Transaction
      • Get Status
    • Transfer Out
      • Get Bank List
      • Get Bank List V2
      • Request a Transfer Out token
      • Init Transaction
      • Get Status
      • Balance for Payouts
    • Smartlinks
      • Create a Smartlink
      • Get a Smartlink
      • Delete a smartlink
      • Update a Smartlink
    • Payment Button
      • Create a payment button
    • Analytics
      • Get transactions list v1
      • Get transactions list v2
    • Chargebacks
      • Query chargebacks
      • Request chargeback export
    • Commissions
      • Get Commission Configuration
    • Payment Credentials
      • Create a credential
      • Activate or deactivate
      • Delete credential
      • Regenerate a credential
      • Update credential
      • Advanced search
      • Search credentials
    • Platform Status
      • Get platform status
      • Get gateway status
    • Settlement
      • Query settlement
    • Subscription Transactions
      • Get subscription transactions
  • Card Present Billpocket
    • Get Started
      • Create Account
      • User Token
      • API Keys
    • Webhooks
      • Webhooks — Transfer Funds (v1)
      • Webhooks — Transfer Funds to Your Bank Account
      • Transfer Funds Errors
    • Terminals
      • App Review
      • Splash Screen
    • Card Present Payment Services
      • Cloud Terminal API
        • Collect card payments
        • Print Ticket
        • Cancel Push Notification
        • Get transaction status
        • Collect card payments v2
      • App-to-App
        • Android intents
        • App to App — iOS
        • App to App — Mobile Web
      • Terminal SDK
        • Terminal SDK
        • Android SDK errors
    • Card not Present Billpocket Services
      • 3DS Checkout
        • Create checkout
        • Get checkout details
      • E-commerce Flex
        • Get token
        • Validate token
        • Collect payments
        • Refund
        • Capture an authorized payment
        • Get status
    • Catalogs
      • States
      • Municipalities
      • Tax companies
      • Commercial activities
    • User Settings
      • Create user
    • Accounts
      • Clabe Account Setup
        • Add CLABE account
      • Deposit Accounts
        • Add or update CLABE account
    • Transactions
      • Transaction List
        • Get token
        • Get transaction list
        • Get transaction list v2
        • Get transaction list v3
        • Get transaction list v4
      • Cancel Payments
        • Cancel payments Error Codes
        • Cancel payments
  • API Raw Card Present
    • The Amount Object
    • Error Catalog
    • Key Exchange Process
    • Release Notes
    • Test Data
    • One-time payments
      • Single payment
    • Two-step-payments
      • Authorization and capture
    • Voids & Refunds
      • Refund a transaction
    • Card information
      • Get BIN Info
      • Balance inquiries
      • Bin Info V2
      • Request deferred options
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Webhooks — Introduction
      • Good Practices
      • Webhooks — Card Payments
      • Webhooks — Refunds
      • Check Your Webhooks
  • Kushki One
    • Cloud Services
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
      • Search
        • Transaction Search
      • Print
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Print
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
      • Search
        • Transaction Search — Online
        • Transaction Search — Local
  • Appian - Submerchant Register
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Submerchant Document Upload
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • RequestBodies
      • one-and-two-step-payment
    • Card
    • Channel
    • Amount-cash-in
    • ChargebackListResponse
    • StatusComponent
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • amount
    • AmountWithTaxes
    • PrintJobRequest
    • networkToken
    • ChargebackItem
    • SettlementTicketRequest
    • SubscriptionTransaction
    • extra_taxes
    • AmountCore
    • CommandText
    • currency
    • ErrorResponse400
    • ErrorResponse
    • SettlementResponse
    • webhooksItem
    • card
    • ExtraTaxes
    • CommandColumns
    • Amount
    • Country
    • ErrorResponse401
    • SettlementRecord
    • card_details
    • ColumnItem
    • extraTaxes
    • ErrorResponse403
    • enc_tlv
    • TransactionResponse
    • CommandDivider
    • Deferred
    • payment_method
    • ErrorResponse500
    • deferred
    • RawResponse
    • CommandFeed
    • Metadata
    • pos_details
    • CardData
    • CommandSpace
    • ContactDetails
    • contact_details
    • sub_merchant
    • AmountWithTip
    • CommandCut
    • documentType
    • Subscription
    • metadata
    • LinkFailure
    • CommandImage
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • Billing-Address
    • SubscriptionUpdate
    • PrinterError
    • product
    • SubscriptionAdjustmentRequest
    • PrintJobStatus
    • threeDomainSecure
    • PrintWebhookPayload
    • webhooks
    • headers
    • webhooksChargeback
    • citMit
    • network
    • binInfo
    • messageFields
    • UnexpectedErrorResponse
    • transactionType
    • ExternalReferenceId
    • ExternalSubscriptionId
BienvenidaPerú 🇵🇪México 🇲🇽
Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
BienvenidaPerú 🇵🇪México 🇲🇽
Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. México 🇲🇽

API RAW CARD PRESENT PAYMENTS 🇲🇽

The Card Present Raw API gives you direct, low-level access to Kushki's payment infrastructure for processing face-to-face card transactions in Mexico. You own the full integration stack — terminal firmware, DUKPT encryption, card reading, and request construction — and get maximum flexibility in return.
A single base URL covers every operation in the payment lifecycle: charges, two-step authorizations, voids, refunds, cardless flows, BIN lookups, MSI installment options, and transaction queries.

Base URLs#

🟢 Production
🧪 Sandbox (UAT)
https://api.kushkipagos.com/

API sections#

One-Time Payments
Single charge, MSI installments (Meses Sin Intereses), and tip — all in a single API call
Two-Step Payments
Pre-authorization → capture flow. Supports reauthorization and cardless operations.
Voids & Refunds
Same-day voids, same-day reversals, and post-settlement refunds — with or without card read.
Card Information
BIN lookup and MSI option queries. Always call before initiating a deferred charge.
Query Transactions
Paginated transaction search with filters by date, BIN, last digits, or reference.

Authentication#

Every request must include your merchant key in the appropriate header depending on the operation:
OperationHeader
Charges, voids, refundsPrivate-Merchant-Id: <your-private-key>
BIN lookup, transaction listPrivate-Credential-Id: <your-private-credential>
MSI deferred optionsPublic-Merchant-Id: <your-public-key>
Query transactions (analytics)Private-Credential-Id: <your-private-credential>

Request anatomy#

All write operations share the same base structure:
{
  "transaction_type": "charge",
  "transaction_mode": "Authorization",
  "country": "MEX",
  "client_transaction_id": "ae6dd41a-9173-4ec7-8734-3178454ef341",
  "amount": {
    "currency": "MXN",
    "subtotal_iva": 0,
    "subtotal_iva0": 500,
    "iva": 0
  },
  "card_details": {
    "reading_type": "ICC",
    "enc_tlv": "<encrypted-tlv>",
    "pin_ksn": "<ksn-value>",
    "tracks": {
      "enc_track2": "<encrypted-track2>",
      "track_ksn": "<ksn-value>"
    }
  },
  "cvm_type": "pin",
  "pos_details": {
    "brand": "SUNMI",
    "model": "P2-EU",
    "version": "1.1.28",
    "has_print": true,
    "terminal_id": "PB04209860189",
    "location": {
      "latitude": 19.4326,
      "longitude": -99.1332
    }
  }
}

Key concepts#

Currency#

Mexico uses MXN (Mexican Peso). MXN supports two decimal places.
"amount": {
  "currency": "MXN",
  "subtotal_iva": 580,
  "subtotal_iva0": 0,
  "iva": 80
}
See The Amount Object for the full field reference and IVA calculation examples.

Card reading channels#

Set card_details.reading_type to match how the card was presented at the terminal:
ValueChannelRequired card data
ICCChip (EMV)enc_tlv, pin_ksn, tracks.enc_track2, tracks.track_ksn
MCRMagnetic stripetracks.enc_track1, tracks.enc_track2
NFCContactlessenc_tlv, tracks.enc_track2, tracks.track_ksn

Cardholder verification (cvm_type)#

ValueMeaning
pinOnline PIN — encrypted PIN block in card_details.pin_block
signatureSignature at the terminal
noneNo CVM (low-value or contactless transactions)

MSI — Meses Sin Intereses#

Mexico supports MSI installments. Always call the BIN lookup first to confirm eligibility and retrieve valid month options for the card.
To trigger an MSI charge, add the deferred object with credit_type: "03" and graceMonths: "00":
{
  "is_deferred": true,
  "deferred": {
    "months": "6",
    "credit_type": "03",
    "graceMonths": "00"
  }
}
WARNING
Minimum amounts for MSI in Mexico:
MonthsMinimum amount
3$300 MXN
6$600 MXN
9$900 MXN
12$1,200 MXN
18$1,800 MXN

Cardless operations#

Beta
Cardless operations are currently in Beta phase in México. Contact the Kushki team to enable this feature.
Set omit_card: true to skip card_details and cvm_type. Supported for captures, reauthorizations, voids, reverses, and refunds.
{
  "transaction_type": "capture",
  "transaction_mode": "Authorization",
  "omit_card": true,
  "transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7",
  "amount": {
    "currency": "MXN",
    "subtotal_iva": 0,
    "subtotal_iva0": 500,
    "iva": 0
  }
}

Void and refund cutoff#

OperationWindow
VoidSame day, before 22:00 México local time
Cardless reversalSame day, before 22:00 México local time — uses client_transaction_id
RefundAfter void cutoff, up to 120 days from the original transaction

Idempotency#

Every request must include a unique client_transaction_id (UUID v4). If you retry the same request with the same ID, Kushki returns the original result — no duplicate transaction is created.

Integration models#

ModelDescriptionRequired
AcquirerThe merchant is directly registered with KushkiStandard request body
AggregatorMarketplace or payment facilitator — sub-merchants operate under your umbrellaAdd sub_merchant to the request

Aggregator — sub_merchant object#

"sub_merchant": {
  "mcc": "5411",
  "id_affiliation": "987654321",
  "soft_descriptor": "Mi Comercio México",
  "city": "Ciudad de México",
  "country_ans": "MEX",
  "zip_code": "06600",
  "address": "Av. Insurgentes Sur 1234",
  "social_reason": "Mi Comercio México S.A. de C.V.",
  "code": "SUB001MEX"
}

Encryption#

All card data — TLV, track data, and PIN blocks — must be encrypted with the DUKPT protocol before sending to the API. Kushki and your organization exchange Base Derivation Keys (BDK) through a secure Key Encryption Key (KEK) ceremony before going live.
See Key Exchange Process for the step-by-step procedure.

Webhooks#

Kushki sends POST notifications to your configured endpoint for every Card Present event: charges, pre-auths, captures, voids, reverses, and refunds.
WARNING
Card Present webhooks can only be configured through the Console (Developers > Webhooks). Webhook setup via API is not supported.
EventWebhook body reference
Charge, preAuth, capture, void, reverseCard Payments
RefundRefunds
See Webhooks — Introduction for authentication headers, signature verification, and static IPs.

Reference docs#

Amount Object
Full field reference for the amount object — IVA, subtotals, tip, and extra taxes.
Key Exchange Process
DUKPT/KEK ceremony required before processing live transactions.
Test Data
Sandbox amounts and card scenarios for testing in Mexico.
Error Catalog
HTTP status codes and ISO error codes for Visa and Mastercard.
Webhooks
Receive payment notifications.
Release Notes
Version history and changelog for the Card Present API in Mexico.

Got a suggestion on this documentation? Contact us.
Modified at 2026-07-09 23:36:35
Previous
Cancel payments
Next
The Amount Object
Built with