1. CARD PRESENT PAYMENTS (API RAW) Copy
English
  • Español
  • English
  • Bienvenidos
  • ONLINE PAYMENTS
    • CARD
      • 1. Request a card token
      • 2. Make a charge or deferred charge
      • 3. Void a transaction
      • 4. Refund a transaction
      • 5. Request deferred options
      • 6. Authorize payments
      • 7. Capture an authorized payment
      • 8. Bin Info
      • 9. Bin Info V2
      • 10. Validate OTP
      • 11. Voucher
      • 5. Request deferred options
      • 8. Bin Info
      • 10. Validate OTP
      • 3. Void a transaction
      • 4. Refund a transaction
      • 6. Authorize payments
      • 1. Request a card token
      • 7. Capture an authorized payment
      • 11. Voucher
      • 2. Make a charge or deferred charge
      • 9. Bin Info V2
    • CASH IN
      • 1. Request a cash in token
      • 2. Init Transaction
      • 3. Transaction Status
      • 1. Request a cash in token
      • 2. Init Transaction
      • 3. Transaction Status
    • TRANSFER IN
      • 1. Get Bank List
      • 2. Request a Transfer In token
      • 3. Init Transaction
      • 4. Get Status
      • 1. Get Bank List
      • 4. Get Status
      • 2. Request a Transfer In token
      • 3. Init Transaction
    • TRANSFER OUT
      • 1. Get Bank List
      • 2. Request a Transfer Out token
      • 3. Init Transaction
      • 4. Get Status
      • 5. Wallet Balance
      • 2. Request a Transfer Out token
      • 1. Get Bank List
      • 5. Wallet Balance
      • 3. Init Transaction
      • 4. Get Status
    • ONE-CLICK & SCHEDULED PAYMENTS
      • 1. Request a recurring charge token
      • 2. Create a recurring charge
      • 3. Update recurring charge card data
      • 4. Make an One-click payment
      • 5. Cancel a recurring charge
      • 6. Update a recurring charge
      • 7. Add a temporary charge or discount
      • 8. Authorize payments
      • 9. Capture an authorized payment
      • 10. Get recurring charge Info
      • 3. Update recurring charge card data
      • 7. Add a temporary charge or discount
      • 10. Get recurring charge Info
      • 5. Cancel a recurring charge
      • 6. Update a recurring charge
      • 4. Make an One-click payment
      • 9. Capture an authorized payment
      • 8. Authorize payments
      • 2. Create a recurring charge
      • 1. Request a recurring charge token
    • PAYMENT BUTTON
      • 1. Create a payment button
      • 1. Create a payment button
    • SMARTLINKS V2
      • 1. Create a Smartlink
      • 2. Get a Smartlink
      • 3. Delete a Smartlink
      • 4. Update a Smartlink
      • 3. Delete a Smartlink
      • 4. Update a Smartlink
      • 1. Create a Smartlink
      • 2. Get a Smartlink
    • PAYMENT CREDENTIALS
      • 1. Create a credential
      • 2. Search credentials
      • 3. Advanced search
      • 4. Activate or deactivate
      • 5. Delete credential
      • 6. Update credential
      • 7. Regenerate a credential
      • 6. Update credential
      • 5. Delete credential
      • 4. Activate or deactivate
      • 2. Search credentials
      • 1. Create a credential
      • 3. Advanced search
      • 7. Regenerate a credential
    • COMMISSIONS
      • 1. Get Commission Configuration
      • 1. Get Commission Configuration
    • GATEWAY STATUS
      • 1. Get gateway status
      • 1. Get gateway status
    • ANALYTICS
      • 1. Get transactions list
      • 1. Get transactions list
    • ASYNC CARD RECURRING CHARGES
      • 1. Request a token
      • 2. Init an async card recurring charge
      • 3. Authorize payments
      • 4. Capture an authorized payment
      • 2. Init an async card recurring charge
      • 4. Capture an authorized payment
      • 1. Request a token
      • 3. Authorize payments
    • CARD ASYNC
      • 1. Request a card async token
      • 2. Init Transaction
      • 3. Authorize payments Copy
      • 4. Capture an authorized payment Copy
      • 5. Get Status
      • 4. Capture an authorized payment Copy
      • 5. Get Status
      • 3. Authorize payments Copy
      • 2. Init Transaction
      • 1. Request a card async token
  • CARD PRESENT PAYMENTS (API RAW) Copy
    • error-catalog
    • Test data
    • One-time payments
      • Single payment
    • Two-step-payments
      • Authorization and capture
    • Voids & Refunds
      • Void & Reverse
      • Refund a transaction
    • Card information
      • Balance inquiries
      • Get BIN Info
      • BIN info V2
      • Request deferred options
    • Query Transactions
      • Transaction Search
Perú 🇵🇪APPIAN-SUBMERCHANT-REGISTERMéxico 🇲🇽Ecuador 🇪🇨Chile 🇨🇱
Perú 🇵🇪APPIAN-SUBMERCHANT-REGISTERMéxico 🇲🇽Ecuador 🇪🇨Chile 🇨🇱
  1. CARD PRESENT PAYMENTS (API RAW) Copy

Two-step-payments

Integrate the Kushki services to accept card-present two-step payments in your existing flow or create a new flow with the services we offer.
Important
Remember that it is necessary to make the requests through HTTPS using the credentials we provided. It is important that you do not share sensitive data in public places.

Processing preauthorizations, captures, and reauthorizations#

If you need to reserve an amount from your customer’s card, you can use the preauthorization service. For example, when your business needs to request a deposit to ensure that the total cost will be financed at the end of the service, you can hold a specific amount from your customer’s bank account.
Preauthorize a payment
Capture a payment
Cardless capture
Process Reauthorizations
Cardless Reauthorization
Void an preauthorization or reauthorization

Supported Reading Channels#

We support the following reading channels. The fields you send to us to process a charge may differ depending on the reading type.
ICC = Integrated Circuit Card (Chip)
MCR = Magnetic Card reader (Stripe)
NFC = Near Field Communication (Contactless)
Here we tell you about the description of each of the fields that are part of the request to accept transactions and the differences of these fields according to the reading channel of the POS terminal of your business.
FieldTypeDescriptionRequiredICC (Chip)MCR (Stripe)NFC (Contactless)
amountobjectTransaction total amountrequired✅✅✅
amount.currencystringType of currency in which the transaction is being processedrequired✅✅✅
amount.extra_taxesobjectAdditional taxes to be taken into account in the collection of taxesoptional✅✅✅
amount.extra_taxes.airport_taxnumberAirport taxoptional✅✅✅
amount.extra_taxes.iacnumberAggregate Consumption Taxoptional✅✅✅
amount.extra_taxes.icenumberSpecial Excise Tax.
It must be set to 0 in case the transaction does not have this tax
optional✅✅✅
amount.extra_taxes.travel_agencynumberTravel agency surcharge. Used in airlinesoptional✅✅✅
amount.ivanumberValue Added Tax.
Should be set to 0 in case the transaction has no VAT tax
required✅✅✅
amount.subtotal_ivanumberValue Added Tax subtotal.
Should be set to 0 in case the transaction has no VAT tax.
required✅✅✅
amount.subtotal_iva0numberTotal amount of the transaction in case it is not taxed.
The total amount of the transaction should be set here if the transaction is not taxed. Otherwise, it should be set to 0.
required✅✅✅
amount.tipnumberTipoptional✅✅✅
cardobjectCard information of the card with which the customer is making the transactionoptional✅✅✅
card.card_holder_namestringName of cardholderoptional✅✅✅
card_detailsobjectCard information details. Depends on the input moderequired✅✅✅
card_details.enc_tlvstringNot required when the card is read with magnetic stripesrequired✅❌✅
card_details.pin_blockstringThe PIN block is a data block that is used to encapsulate a personal identification number (PIN) during the process. It must be sent if the transaction is an online PIN transaction and must be encrypted with the BDK PIN key shared by Kushkioptional✅✅✅
card_details.pin_ksnstringRequired if the pin_block field is sent.
Allowed values: 16 characters 20 characters
optional✅✅✅
card_details.pin_ksn_descstringRequired if the pin_block field is sent.
Allowed values: 655 A55
optional✅✅✅
card_details.reading_typestringIndicates the reader type.
Allowed values: ICC, MCR, NFC
required✅✅✅
card_details.tracksobjectTrack informationrequired✅✅✅
card_details.tracks.enc_track1stringRequired when reading is done by magnetic stripe.optional❌✅❌
card_details.tracks.enc_track2stringRequired when reading by chip, magnetic stripe or NFC.required✅✅✅
card_details.tracks.track_ksnstringRequired when reading is done by chip or NFC. Data encryption key.required✅❌✅
card_details.tracks.track_ksn_descstringRequired if the track_ksn field is sent.optional✅✅✅
card_details.tracks.track2_lengthstringNumber in string format representing the length of track 2.optional✅✅✅
client_transaction_idstringUUID v4 generated from the trade side. A unique ID must be created per transaction.required✅✅✅
countrystringISO 3166-1 alpha-3
Allowed values: PER
required✅✅✅
is_cashbackbooleanCashback or refund alertsoptional✅✅✅
cashback_amountnumberRequired when is_cashback = trueoptional✅✅✅
pos_detailsobjectPOS terminal informationrequired✅✅✅
pos_details.brandstringTerminal reference.required✅✅✅
pos_details.has_printbooleanIndicates whether the POS terminal has hardware for voucher printing.optional✅✅✅
pos_details.locationobjectThe longitude and latitude where the POS terminal is located.optional✅✅✅
pos_details.location.latitudenumberThe latitude where the POS terminal is located.optional✅✅✅
pos_details.location.longitudenumberThe length where the POS terminal is located.optional✅✅✅
pos_details.modelstringPOS terminal model.optional✅✅✅
pos_details.terminal_idstringIdentification generated by Kushki. Applies a per-terminal identificationrequired✅✅✅
pos_details.versionstringTerminal software versionoptional✅✅✅
contact_detailsobjectContact detailsrequired✅✅✅
contact_details.document_numberstringDocument number. Optional when document_type = -1required✅✅✅
contact_details.document_typestring-1: No document will be sent.
0: DNI
1: Passport
required✅✅✅
contact_details.emailstringCardholder's email addressoptional✅✅✅
contact_details.first_namestringCardholder's first nameoptional✅✅✅
contact_details.last_namestringCardholder's last nameoptional✅✅✅
contact_details.second_last_namestringCardholder's second last nameoptional✅✅✅
contact_details.phone_numberstringCardholder's cell phone number. EE.164 standardoptional✅✅✅
transaction_modestringTransaction mode
Allowed values: Authorization, Reverse, Void
required✅✅✅
transaction_typestringTransaction type.
Allowed values: capture, charge, preAuth, reAuthorization, refund, posTip
required✅✅✅
cvm_typestringCardholder verification methods.
Allowed values: none, pin, signature
required✅✅✅
sub_merchantobjectSubmerchant informationoptional✅✅✅
sub_merchant.mccstringMCC- Merchant Category Coderequired✅✅✅
sub_merchant.id_affiliationstringMerchant Affiliation Idrequired✅✅✅
sub_merchant.soft_descriptorstringText that will appear on the cardholder's statement.required✅✅✅
sub_merchant.citystringCity where the submerchant is locatedrequired✅✅✅
sub_merchant.city_codestringCity code according to ISO 3166-2 (3 characters).required✅✅✅
sub_merchant.country_ansstringISO 3166-1 alpha-3required✅✅✅
sub_merchant.zip_codestring<= 10 charactersrequired✅✅✅
sub_merchant.addressstringSubmerchant addressrequired✅✅✅
sub_merchant.social_reasonstringSubmerchant's business name. Applies to Visa transactions only.required✅✅✅
sub_merchant.codestringSubmerchant identifierrequired✅✅✅
merchant_idstringIdentifier generated by the merchant. It must contain 9 digits.optional✅✅✅
metadataobjectAdditional information of the transactionoptional✅✅✅

Preauthorize a payment#

To make authorizations, send preAuth in the transaction_type field and authorization in the transaction_mode field as part of the body of your request.
Check the examples below:
ICC (Chip)
MCR (Magnetic Stripe)
NFC (Contactless)
{
  "card": {
    "card_holder_name": "John Doe"
  },
  "amount": {
    "iva": 0,
    "tip": 0,
    "currency": "PEN",
    "extra_taxes": {
      "iac": 0,
      "ice": 0,
      "airport_tax": 0,
      "travel_agency": 0
    },
    "subtotal_iva": 0,
    "subtotal_iva0": 600
  },
  "country": "PER",
  "cvm_type": "none",
  "is_cashback": false,
  "is_deferred": false,
  "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"
}

Capture a payment (optional)#

Once your business is requested to charge your customer’s card, you can capture the amount of the purchased product or service.
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.
To capture a payment, you need to consume the endpoint /pos/v1/transaction and send capture in the transaction_type field and Authorization in the transaction_mode field as part of the request body.
Important
Please note that the transaction_reference field must come from an authorization and not from a reauthorization.
Check the examples below:
ICC (Chip)
MCR (Magnetic Stripe)
NFC (Contactless)
{
  "card": {
    "card_holder_name": "John Doe"
  },
  "amount": {
    "iva": 0,
    "tip": 0,
    "currency": "PEN",
    "extra_taxes": {
      "iac": 0,
      "ice": 0,
      "airport_tax": 0,
      "travel_agency": 0
    },
    "subtotal_iva": 0,
    "subtotal_iva0": 60000
  },
  "country": "PER",
  "cvm_type": "none",
  "is_cashback": false,
  "is_deferred": false,
  "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",
  "transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7"
}

Cardless capture#

Note
This functionality is currently in Beta phase in Peru.
To perform a cardless capture, send the omit_card field with the value of true and then the other non-required fields are omitted:
{
    "amount": {
        "currency": "PEN",
        "iva": 0.0,
        "subtotal_iva": 0.0,
        "subtotal_iva0": 600
    },
    "transaction_mode": "Authorization",
    "transaction_type": "capture",
    "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a",
    "transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7",
    "omit_card": true
}

Process Reauthorizations#

With this service, you can perform the following actions to modify a transaction that was previously approved:
Increase the payment amount or make an adjustment to the authorization.
Tip
Sending an amount of 0 in the reauthorization is a common practice to extend the capture date without actually capturing any funds from the cardholder’s account.
To perform reauthorizations, you need to consume the endpoint /pos/v1/transaction and send reAuthorization in the transaction_type field and Authorization in the transaction_mode field as part of the request body.
Check the examples below:
ICC (Chip)
MCR (Magnetic Stripe)
NFC (Contactless)
{
  "card": {
    "card_holder_name": "John Doe"
  },
  "amount": {
    "iva": 0,
    "tip": 0,
    "currency": "PEN",
    "extra_taxes": {
      "iac": 0,
      "ice": 0,
      "airport_tax": 0,
      "travel_agency": 0
    },
    "subtotal_iva": 0,
    "subtotal_iva0": 6000
  },
  "country": "PER",
  "cvm_type": "none",
  "is_cashback": false,
  "is_deferred": false,
  "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",
  "transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7"
}

Cardless Reauthorization#

Note
This functionality is currently in Beta phase in Peru.
To perform a cardless reauthorization, send the omit_card field with the value of true and then the other non-required fields are omitted:
{
    "amount": {
        "currency": "PEN",
        "iva": 0.0,
        "subtotal_iva": 0.0,
        "subtotal_iva0": 600
    },
    "transaction_mode": "Authorization",
    "transaction_type": "reAuthorization",
    "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a",
    "transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7",
    "omit_card": true
}

Void a preauthorization or reauthorization#

If you need to void an authorization or reauthorization to release the funds to the cardholder, you can do so by performing a void, using the transaction_reference obtained in the authorization.
To void an authorization or reauthorization, send Void in the transaction_mode field, preAuth or reAuthorization in the transaction_type and the client_transaction_id (an ID for the void transaction) as part of the body of your request along with the transaction_reference of the preauthorization or reauthorization to cancel.
Note
How to cancel a preauthorization with associated reauthorizations?
You only need to void the last generated reauthorization.

Cardless void#

Note
This functionality is currently in Beta phase in Peru.
To perform a cardless operation, send the omit_card field with the value of true and then the other non-required fields are omitted:
{
  "amount": {
    "iva": 0,
    "currency": "PEN",
    "subtotal_iva": 0,
    "subtotal_iva0": 600
  },
  "omit_card": true,
  "transaction_mode": "Void",
  "transaction_type": "preAuth",
  "client_transaction_id": "6680eadc-6c8d-44aa-8ca0-18e061c1472a",
  "transaction_reference": "f2f29080-0214-42c0-95a5-77ecf3434cd7"
}
Modified at 2026-04-16 14:01:18
Previous
Single payment
Next
Authorization and capture
Built with