1. Raw card-present API
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
    • 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
    • Scheduled payments
      • How do Credit or Debit Card Payment Recurring Charges Work?
      • Schedule a recurring charge
      • Manage your Scheduled Charges
    • 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
    • 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
    • Transactions
      • Transactions
      • Cancel payments
  • Wire Transfers
    • Banks and transaction details for bank transfer payments
    • Receive Wire Transfers
    • Check the Status of a Transaction
    • Error Codes for Transfers
  • Cash Payments
    • How do Cash Payments Work?
    • Accept a Cash Payment
    • Authorized locations
    • Error Codes for declined cash transaction
  • Alternative payment methods (APM)
    • How do APM payments work?
    • Accept Bre-B payments
  • Money Disbursement
    • Payment Distribution
    • Recharge your balance for dispersions
    • Wire Transfer
      • How Does a Payment Distribution by Wire Transfer Work?
      • Payment Distribution to Bank Accounts
      • Disburse with Bre-B
      • Error codes for transfer dispersions
    • Cash
      • How does payment distribution in cash work?
      • Distribute Payments in Cash
      • Manage your Payment Distribution Transactions
  • 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
    • Recurring Payments Webhooks
      • Webhook for Recurring Payments Made with Card
    • Payment Distribution Webhooks
      • Webhook for payment disbursement through wire transfer
      • Webhook for Payment Distribution in Cash
    • 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. Raw card-present API

Take Payments

Accept payments with a certified POS terminal from your point of sale through the Raw card-present API. With the Raw card-present API you can use and manage your own terminals, connecting to our payment network to process transactions. You must securely generate and manage the cryptographic keys that will allow you to encrypt the information read from the card through the terminals. Send the required information in the request to perform a successful operation through our API.
Beta version product
We are working on our beta version of  API Raw Card Present. Stay tuned for the official launch! You can also contact your account manager for more information.

Request data model#

These are all the parameters you can configure when making a request.
PropertyTypeRequiredDescriptionAllowed values
amountObjectYesTotal transaction amount (including tip and taxes).
amount.currencyStringYesTransaction currency.MXN, COP, USD, CLP, PEN
amount.ivaNumberYesValue Added Tax (IVA) amount.
amount.subtotal_ivaNumberYesTransaction amount excluding taxes.
amount.subtotal_iva0NumberYesIf the transaction does not have taxes, place the total amount in this property.
amount.tipNumberNoOptional amount to add tip to the transaction.
amount.extra_taxesObjectNoObject with additional tax properties.
amount.extra_taxes.airport_taxNumberNoAirport tax.
amount.extra_taxes.iacNumberNoAggregate consumption tax.
amount.extra_taxes.iceNumberNoSpecial consumption tax.
amount.extra_taxes.travel_agencyNumberNoUsed in airlines
cardObjectNoObject with card information.
card.card_holder_nameStringNoCardholder name.
card_detailsObjectYesObject with card information.
card_details.enc_tlvStringNoOnly required for CHIP reading transactions. It is a field containing encrypted information that comes from the EMV chips of the cards.
card_details.pin_blockStringNoThe pin block is a block of data that is used to encapsulate a personal identification number (PIN) during the process.
card_details.pin_ksnStringNoRequired if the pin_block field is sent. It is required in the DUKPT process to identify which initial key was used to encrypt the information.
card_details.pin_ksn_descStringNoPin descriptor.
card_details.reading_typeStringYesType of reading:
  • ICC : Chip.
  • MCR: Magnetic stripe.
  • NFC: Contactless.
ICC, MCR, NFC
card_details.tracksObjectYesObject with information read from the card.
card_details.tracks.enc_track1StringNoRequired when reading by magnetic stripe (MCR). Encrypted information contained within the card.
card_details.tracks.enc_track2StringNoRequired when reading by chip (ICC), magnetic stripe (MCR) or contactless (NFC). Encrypted information contained within the card.
card_details.tracks.track_ksnStringYesRequired when reading by chip (ICC) or contactless (NFC). Data encryption key.
card_details.tracks.track_ksn_descStringNoRequired when sending the track_ksn property. KSN descriptor.
card_details.tracks.track2_lengthStringNoNumber in string format that represents the length of enc_track2 but without the filler digits to complete the 16 positions.
client_transaction_idStringYesIUUID v4 generated from the merchant side. It must be a unique ID per transaction.
countryStringYesCountry (ISO 3166-1 alpha-3).COL, MEX, CHL, PER
is_deferredBooleanNoFlag to set a transaction as deferred
deferredObjectNoRequired when the is_deferred property is set to true. Object with the transaction's deferred settings.
deferred.monthsStringNoNumber of installments.
is_cashbackBooleanNoFlag to perform a cashback operation.
cashback_amountNumberNoRequired when submitting the is_cashback property. Set the cashback amount.
pos_detailsObjectYesObject containing information about the terminal.
pos_details.brandStringYesTerminal brand.
pos_details.has_printBooleanNoIndicate whether the terminal has an integrated printer.
pos_details.locationObjectNoObject with location information.
pos_details.location.latitudeNumberNoLatitude from which the transaction originates.
pos_details.location.longitudeNumberNoLongitude from which the transaction originates.
pos_details.modelStringNoTerminal model.
pos_details.terminal_idStringNoTerminal ID generated on your side.
pos_details.versionStringNoTerminal software version.
contact_detailsObjectYesObject with customer information.
contact_details.document_numberStringNoCustomer identification document number.
contact_details.document_typeStringYesIdentification document type
contact_details.emailStringNoCustomer email.
contact_details.first_nameStringNoCustomer name.
contact_details.last_nameStringNoCustomer last name.
contact_details.second_last_nameStringNoSecond surname (applies only to Colombia).
contact_details.phone_numberStringNoCustomer phone number.
transaction_modeStringYesTransaction mode.Authorization, Reverse, Void
transaction_typeStringYesTransaction type.capture, charge, preAuth, reAuthorization, tip, refund
cvm_typeStringYesCardholder Verification Methods..
  • none : No pin or signature verification method.
  • pin: Pin verification method.
  • signature: Signature verification method.
none, pin, signature
sub_merchantObjectNoObject with merchant information.
sub_merchant.mccStringNoMerchant category code.
sub_merchant.id_affiliationStringNoMerchant affiliation ID.
sub_merchant.soft_descriptorStringNoText that will appear on the cardholder's statement. It is useful to help customers identify purchases and avoid unrecognized charges.
sub_merchant.cityStringNoCity
sub_merchant.city_codeStringNoCity code (ISO 3166-2). Required for Mexico only.
sub_merchant.country_ansStringNoISO 3166-1 alpha-3.
sub_merchant.zip_codeStringNoZip code.
sub_merchant.addressStringNoAddress.
sub_merchant.social_reasonStringNoSocial reason. Applies only to Visa transactions.
sub_merchant.codeStringNoSubmerchant ID.
merchant_idStringNoMerchant ID.
omit_cardBooleanNoPerform a cardless operation. Available only in Chile.
metadataObjectNoObject with additional merchant information.

Operations#

Discover all the operations available through Raw card-present API integrations.

Sale#

Take present payment with physical or digital cards at your local store via a terminal. The terminal allows you to read your customer’s card and perform operations involved in the DUKPT process. The responsibility of your POS system is to send the data read from the terminal to Kushki for processing.
To make a sale, consume the Single payment endpoint, set the transaction mode (transaction_mode) to Authorization, the transaction type (transaction_type) to charge, and send the rest of the required information.
Request example:
{
  "card": {
    "card_holder_name": "John Doe"
  },
  "amount": {
    "iva": 0,
    "currency": "CLP",
    "subtotal_iva": 0,
    "subtotal_iva0": 60000
  },
  "country": "CLP",
  "cvm_type": "none",
  "merchant_id": "0987654321",
  "pos_details": {
    "brand": "SUNMI",
    "model": "P2-EU",
    "version": "Kushki SunmiV1.1.26",
    "location": {
      "latitude": -0.22480833333333333,
      "longitude": -78.487955
    },
    "has_print": true,
    "terminal_id": "PB04216R20537"
  },
  "card_details": {
    "tracks": {
      "track_ksn": "FFFF4357486333600002",
      "enc_track2": "283587285CE10278E7FA50AD5C97CFFE87F472C9FE6406F8"
    },
    "enc_tlv": "CE447A062C49774934E42A7F826668C0C478E38402C158062EE794C0E471B43EA8CE49C256C2C8B157526B0B2BE74FC23F65E18D4F52B99A1A0910E6CCD9B11A32D6D537E2B6E2B011C89569DE6A3D53318080BC77E0E70B398ED3083FD7366CCF8FB4DBF34A116E6D52CFBEF26371878D842034E5029EF62DF235D2C427F04102E451773D9E8975978917E3BC531327702967052E239F8C592734AE14688E603C52B858FC1D97B763AE623603F1475FFFB065EC07AF7A29",
    "pin_ksn": "FFFF4357486333600002",
    "reading_type": "ICC"
  },
  "contact_details": {
    "email": "",
    "last_name": "",
    "first_name": "",
    "phone_number": "",
    "document_type": "-1",
    "document_number": "",
    "second_last_name": ""
  },
  "transaction_mode": "Authorization",
  "transaction_type": "charge",
  "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a"
}

Cashback#

To perform a cashback transaction, consume the Single payment endpoint, set the transaction mode and transaction type the same as in a sale, set the is_cashback property to true, and set the amount of cash to withdraw during the transaction in the cashback_amount property.
Important: The cashback feature is not supported for contactless transactions. Make sure the card reading method (reading_type) is not set to NFC when attempting to perform this type of operation.
Subject to commercial approval.
Please note that Cashback only works with local cards.
Request example:
{
  "is_cashback": true,
  "cashback_amount": 1000,
  "card": {
    "card_holder_name": "John Doe"
  },
  "amount": {
    "iva": 0,
    "currency": "CLP",
    "subtotal_iva": 0,
    "subtotal_iva0": 60000
  },
  "country": "CLP",
  "cvm_type": "none",
  "merchant_id": "0987654321",
  "pos_details": {
    "brand": "SUNMI",
    "model": "P2-EU",
    "version": "Kushki SunmiV1.1.26",
    "location": {
      "latitude": -0.22480833333333333,
      "longitude": -78.487955
    },
    "has_print": true,
    "terminal_id": "PB04216R20537"
  },
  "card_details": {
    "tracks": {
      "track_ksn": "FFFF4357486333600002",
      "enc_track2": "283587285CE10278E7FA50AD5C97CFFE87F472C9FE6406F8"
    },
    "enc_tlv": "CE447A062C49774934E42A7F826668C0C478E38402C158062EE794C0E471B43EA8CE49C256C2C8B157526B0B2BE74FC23F65E18D4F52B99A1A0910E6CCD9B11A32D6D537E2B6E2B011C89569DE6A3D53318080BC77E0E70B398ED3083FD7366CCF8FB4DBF34A116E6D52CFBEF26371878D842034E5029EF62DF235D2C427F04102E451773D9E8975978917E3BC531327702967052E239F8C592734AE14688E603C52B858FC1D97B763AE623603F1475FFFB065EC07AF7A29",
    "pin_ksn": "FFFF4357486333600002",
    "reading_type": "ICC"
  },
  "contact_details": {
    "email": "",
    "last_name": "",
    "first_name": "",
    "phone_number": "",
    "document_type": "-1",
    "document_number": "",
    "second_last_name": ""
  },
  "transaction_mode": "Authorization",
  "transaction_type": "charge",
  "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a"
}

Tipping#

To add tip during a transaction, consume the Single payment endpoint, set the transaction mode and transaction type the same as in a sale, and set the tip amount in the tip property inside the amount object.
Request example:
{
  "card": {
    "card_holder_name": "John Doe"
  },
  "amount": {
    "tip": 100,
    "iva": 0,
    "currency": "PEN",
    "subtotal_iva": 0,
    "subtotal_iva0": 60000
  },
  "country": "PER",
  "cvm_type": "none",
  "merchant_id": "0987654321",
  "pos_details": {
    "brand": "SUNMI",
    "model": "P2-EU",
    "version": "Kushki SunmiV1.1.26",
    "location": {
      "latitude": -0.22480833333333333,
      "longitude": -78.487955
    },
    "has_print": true,
    "terminal_id": "PB04216R20537"
  },
  "card_details": {
    "tracks": {
      "track_ksn": "FFFF4357486333600002",
      "enc_track2": "283587285CE10278E7FA50AD5C97CFFE87F472C9FE6406F8"
    },
    "enc_tlv": "CE447A062C49774934E42A7F826668C0C478E38402C158062EE794C0E471B43EA8CE49C256C2C8B157526B0B2BE74FC23F65E18D4F52B99A1A0910E6CCD9B11A32D6D537E2B6E2B011C89569DE6A3D53318080BC77E0E70B398ED3083FD7366CCF8FB4DBF34A116E6D52CFBEF26371878D842034E5029EF62DF235D2C427F04102E451773D9E8975978917E3BC531327702967052E239F8C592734AE14688E603C52B858FC1D97B763AE623603F1475FFFB065EC07AF7A29",
    "pin_ksn": "FFFF4357486333600002",
    "reading_type": "ICC"
  },
  "contact_details": {
    "email": "",
    "last_name": "",
    "first_name": "",
    "phone_number": "",
    "document_type": "-1",
    "document_number": "",
    "second_last_name": ""
  },
  "transaction_mode": "Authorization",
  "transaction_type": "charge",
  "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a"
}
Important!
The tip amount submitted in the tip field SHOULD NOT be included in the transaction subtotal, which is submitted in the subtotal_iva or subtotal_iva0 fields.
For more information on how to add tip in a transaction, please see our FAQ section.

Deferred payments#

To make a deferred payment, consume the Single payment endpoint, set the transaction mode and transaction type the same as in a sale, set the is_deferred property to true, and set the number of installments to defer a payment in the months property within the deferred object.
Subject to commercial approval.
Request example:
{
  "is_deferred": true,
  "deferred": {
    "months": "12"
  },
  "card": {
    "card_holder_name": "John Doe"
  },
  "amount": {
    "iva": 0,
    "currency": "PEN",
    "subtotal_iva": 0,
    "subtotal_iva0": 6000
  },
  "country": "CLP",
  "cvm_type": "none",
  "merchant_id": "0987654321",
  "pos_details": {
    "brand": "SUNMI",
    "model": "P2-EU",
    "version": "Kushki SunmiV1.1.26",
    "location": {
      "latitude": -0.22480833333333333,
      "longitude": -78.487955
    },
    "has_print": true,
    "terminal_id": "PB04216R20537"
  },
  "card_details": {
    "tracks": {
      "track_ksn": "FFFF4357486333600002",
      "enc_track2": "283587285CE10278E7FA50AD5C97CFFE87F472C9FE6406F8"
    },
    "enc_tlv": "CE447A062C49774934E42A7F826668C0C478E38402C158062EE794C0E471B43EA8CE49C256C2C8B157526B0B2BE74FC23F65E18D4F52B99A1A0910E6CCD9B11A32D6D537E2B6E2B011C89569DE6A3D53318080BC77E0E70B398ED3083FD7366CCF8FB4DBF34A116E6D52CFBEF26371878D842034E5029EF62DF235D2C427F04102E451773D9E8975978917E3BC531327702967052E239F8C592734AE14688E603C52B858FC1D97B763AE623603F1475FFFB065EC07AF7A29",
    "pin_ksn": "FFFF4357486333600002",
    "reading_type": "ICC"
  },
  "contact_details": {
    "email": "",
    "last_name": "",
    "first_name": "",
    "phone_number": "",
    "document_type": "-1",
    "document_number": "",
    "second_last_name": ""
  },
  "transaction_mode": "Authorization",
  "transaction_type": "charge",
  "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a"
}

Pre-authorization#

In case you need to reserve an amount from your client's bank account, you can use the pre-authorization service. For example, when your merchant needs to request a deposit to guarantee that the total cost will be financed at the end of the service, you can retain a specific amount from your client's bank account.
To perform a pre-authorization, consume the Authorization and capture endpoint, set the transaction mode (transaction_mode) to Authorization, the transaction type (transaction_type) to preAuth, and send the rest of the required information.
Subject to commercial approval.
Request example:
{
  "card": {
    "card_holder_name": "John Doe"
  },
  "amount": {
    "iva": 0,
    "currency": "CLP",
    "subtotal_iva": 0,
    "subtotal_iva0": 60000
  },
  "country": "CLP",
  "cvm_type": "none",
  "merchant_id": "0987654321",
  "pos_details": {
    "brand": "SUNMI",
    "model": "P2-EU",
    "version": "Kushki SunmiV1.1.26",
    "location": {
      "latitude": -0.22480833333333333,
      "longitude": -78.487955
    },
    "has_print": true,
    "terminal_id": "PB04216R20537"
  },
  "card_details": {
    "tracks": {
      "track_ksn": "FFFF4357486333600002",
      "enc_track2": "283587285CE10278E7FA50AD5C97CFFE87F472C9FE6406F8"
    },
    "enc_tlv": "CE447A062C49774934E42A7F826668C0C478E38402C158062EE794C0E471B43EA8CE49C256C2C8B157526B0B2BE74FC23F65E18D4F52B99A1A0910E6CCD9B11A32D6D537E2B6E2B011C89569DE6A3D53318080BC77E0E70B398ED3083FD7366CCF8FB4DBF34A116E6D52CFBEF26371878D842034E5029EF62DF235D2C427F04102E451773D9E8975978917E3BC531327702967052E239F8C592734AE14688E603C52B858FC1D97B763AE623603F1475FFFB065EC07AF7A29",
    "pin_ksn": "FFFF4357486333600002",
    "reading_type": "ICC"
  },
  "contact_details": {
    "email": "",
    "last_name": "",
    "first_name": "",
    "phone_number": "",
    "document_type": "-1",
    "document_number": "",
    "second_last_name": ""
  },
  "transaction_mode": "Authorization",
  "transaction_type": "preAuth",
  "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a"
}

Reauthorization#

If you need to modify the amount of a previously pre-authorization or extend the date of the capture, you can use the reauthorization service. Send an amount equal to $0 in a reauthorization to extend the capture period or send an amount in the reauthorization to extend the pre-authorization.
To perform a reauthorization, consume the Authorization and capture endpoint, set the transaction mode (transaction_mode) to Authorization, the transaction type (transaction_type) to reAuthorization, and send the rest of the required information.
Subject to commercial approval.
Request example:
{
  "card": {
    "card_holder_name": "John Doe"
  },
  "amount": {
    "iva": 0,
    "currency": "CLP",
    "subtotal_iva": 0,
    "subtotal_iva0": 60000
  },
  "country": "CLP",
  "cvm_type": "none",
  "merchant_id": "0987654321",
  "pos_details": {
    "brand": "SUNMI",
    "model": "P2-EU",
    "version": "Kushki SunmiV1.1.26",
    "location": {
      "latitude": -0.22480833333333333,
      "longitude": -78.487955
    },
    "has_print": true,
    "terminal_id": "PB04216R20537"
  },
  "card_details": {
    "tracks": {
      "track_ksn": "FFFF4357486333600002",
      "enc_track2": "283587285CE10278E7FA50AD5C97CFFE87F472C9FE6406F8"
    },
    "enc_tlv": "CE447A062C49774934E42A7F826668C0C478E38402C158062EE794C0E471B43EA8CE49C256C2C8B157526B0B2BE74FC23F65E18D4F52B99A1A0910E6CCD9B11A32D6D537E2B6E2B011C89569DE6A3D53318080BC77E0E70B398ED3083FD7366CCF8FB4DBF34A116E6D52CFBEF26371878D842034E5029EF62DF235D2C427F04102E451773D9E8975978917E3BC531327702967052E239F8C592734AE14688E603C52B858FC1D97B763AE623603F1475FFFB065EC07AF7A29",
    "pin_ksn": "FFFF4357486333600002",
    "reading_type": "ICC"
  },
  "contact_details": {
    "email": "",
    "last_name": "",
    "first_name": "",
    "phone_number": "",
    "document_type": "-1",
    "document_number": "",
    "second_last_name": ""
  },
  "transaction_mode": "Authorization",
  "transaction_type": "reAuthorization",
  "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a"
}

Capture#

Once you are required to collect the funds from your customer's bank account, capture the amount for only the products or services used.
The requested capture corresponds to the sum of the authorization and all reauthorizations made that have not been canceled.
By receiving payments under the authorization and capture scheme, your business can ensure the availability of the amount on your customer’s card for a maximum of 28 days for credit cards and 7 days for debit cards. If the transaction payment is not captured during the mentioned times, the held funds will be released by the issuing bank back to the cardholder.
The amount to be captured can be equal to or less than the authorized or reauthorized amount.
To capture a payment, you need to consume the Authorization and capture endpoint, set the transaction mode (transaction_mode) to Authorization, the transaction type (transaction_type) to capture and add the transaction_reference property with the value of the reference returned at the time of performing a pre-authorization
Subject to commercial approval.
Request example:
{
  "transaction_reference": "d5979f96-0449-414b-9ece-b0b3681089d6"
  "card": {
    "card_holder_name": "John Doe"
  },
  "amount": {
    "iva": 0,
    "currency": "PEN",
    "subtotal_iva": 0,
    "subtotal_iva0": 60000
  },
  "country": "PER",
  "cvm_type": "none",
  "merchant_id": "0987654321",
  "pos_details": {
    "brand": "SUNMI",
    "model": "P2-EU",
    "version": "Kushki SunmiV1.1.26",
    "location": {
      "latitude": -0.22480833333333333,
      "longitude": -78.487955
    },
    "has_print": true,
    "terminal_id": "PB04216R20537"
  },
  "card_details": {
    "tracks": {
      "track_ksn": "FFFF4357486333600002",
      "enc_track2": "283587285CE10278E7FA50AD5C97CFFE87F472C9FE6406F8"
    },
    "enc_tlv": "CE447A062C49774934E42A7F826668C0C478E38402C158062EE794C0E471B43EA8CE49C256C2C8B157526B0B2BE74FC23F65E18D4F52B99A1A0910E6CCD9B11A32D6D537E2B6E2B011C89569DE6A3D53318080BC77E0E70B398ED3083FD7366CCF8FB4DBF34A116E6D52CFBEF26371878D842034E5029EF62DF235D2C427F04102E451773D9E8975978917E3BC531327702967052E239F8C592734AE14688E603C52B858FC1D97B763AE623603F1475FFFB065EC07AF7A29",
    "pin_ksn": "FFFF4357486333600002",
    "reading_type": "ICC"
  },
  "contact_details": {
    "email": "",
    "last_name": "",
    "first_name": "",
    "phone_number": "",
    "document_type": "-1",
    "document_number": "",
    "second_last_name": ""
  },
  "transaction_mode": "Authorization",
  "transaction_type": "capture",
  "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a"
}

Response#

If the information submitted is correct, you will receive a response similar to the following with the information of the processed transaction.
{
  "F11": "101619",
  "cvm_type": "none",
  "franchise": "MASTERCARD",
  "message_fields": {
    "F38": "121866",
    "F39": "00"
  },
  "kushki_response": {
    "code": "000",
    "message": "Transacción Aprobada."
  },
  "transaction_type": "charge",
  "authorized_amount": 611,
  "additional_amounts": {
    "amount": 0,
    "card_type": "",
    "amount_type": "",
    "account_type": "",
    "currency_code": ""
  },
  "transaction_status": "APPROVAL",
  "transaction_reference": "fb1d8f34-31fc-4d9d-ab7e-375d7f0801a5"
}
In case of error, you can get a response with a structure similar to the following:
{
  "code": "E001",
  "details": {
    "Origin": "Process Generic Transaction | validateRequest",
    "Message": "document_number: cannot be blank; document_type: cannot be blank."
  },
  "message": "Cuerpo de la petición inválido."
}
See the full list of error codes.
Please review the Raw card-present API reference for more information.

Test data
Make any necessary adjustments to your system using the test data.
Transactions
Get the list of transactions with information relevant to your operations.
Modificado en 2026-10-14 19:55:36
Anterior
Sample script to encrypt information
Siguiente
Frequently Asked Questions
Built with