1. Card-present payments
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. Card-present payments

Webhooks for card present

Receive notifications of events that occur in your merchant through webhooks in your system.
Webhooks allow you to subscribe to events that may occur, such as a transaction being approved or declined. When an event is triggered, we will notify you through an endpoint that you have previously configured, sending a POST request with a JSON object containing all the necessary information about the event. Available events vary by integration type.

Raw Card-Present API#

Webhooks Retry Policy#

At Kushki we make sure that you receive a Webhook callback correctly. For this reason, the Webhooks retry policy process is performed as shown below:
1.
First immediate retry: this happens via instant messaging (known as Notify Now).
2.
The system awaits a 200/201 status code.
3.
If we receive a different status, 3 retries are made in the next hour and then 4 retries are performed in the next 2 hours.
Considering that our logic of retries to send notifications works with a maximum of 7 retries within 3 hours once Notify Now fails.
4.
After the 7 retries are completed, if you do not receive a successful response, the Webhook is marked as failed and we stop retrying.
If at the end of this submission cycle we have not received a successful status and you want to receive the webhook, please contact our Support Team.

How do retries work over the elapsed time?#

If Notify Now fails, you must wait 20 minutes for the first retry to be sent and the same period of time to complete the hour, as shown below:
First retry: it is sent after 20 minutes.
Second retry: it is sent after 40 minutes.
Third retry: it is sent after 60 minutes (1 hour).
After 60 minutes (1 hour) and if the third retry fails, you must wait 30 minutes for the fourth retry to be sent until the next 2 hours are completed as described below:
Fourth retry: it is sent after 30 minutes.
Fifth retry: it is sent after 60 minutes.
Sixth retry: it is sent after 90 minutes.
Seventh retry: it is sent after 120 minutes.
Note
Keep in mind that these times are estimates and may be subject to variations.
The Webhooks sent by Kushki will contain the headers listed here
Discover the list of events available through Raw Card-Present API
Approved transactions
Rejected transactions
Authorizations
Capture of funds
Voids/refunds
Reversals
Balance inquiry
Below is the list of properties available in the webhook. Please note that some properties may not be available at the time of notification depending on the transaction settings and payment method.
PropertyTypeDescription
countryStringMerchant country.
franchiseStringVISA, MASTERCARD, PROSA (PROSA only in Mexico).
availableboolean
channelStringChannel through which the sale was made.
public_credential_idStringMerchant public key.
client_transaction_idStringId generated by the merchant.
mccStringMerchant category code.
card_countryStringCountry of processed card.
processor_nameStringProcessor name.
transaction_referenceStringUnique reference per transaction generated by Kushki.
payment_methodStringPayment method.
card_detailsObjectObject with additional information about the processed card.
card_details.prosa_infoString
card_details.reading_typeStringCard reading type.
card_details.card_sequentialString
card_details.tlvString
transaction_idStringUnique ID per transaction generated by Kushki.
createdIntegerTransaction date.
merchant_nameStringMerchant name.
transaction_typeStringOperation type.
processorObjectObject with additional processor information.
processor.codeStringProcessor response code.
processor.messageStringProcessor response message.
reference_numberStringTransaction reference number.
tax_idString
sync_modeString
additional_infoObject
additional_info.f7String
additional_info.f63String
additional_info.f11String
additional_info.f37String
additional_info.f32String
additional_info.f62s2String
subtotal_iva0NumberTax-free transaction amount.
deferredObject
deferred.monthsStringNumber of installments (if the transaction was deferred).
response_codeStringResponse code.
transaction_statusStringTransaction status.
social_reasonStringSocial reason.
payment_brandStringVISA, MASTERCARD
acquirer_bankString
request_amountStringRequested amount.
merchant_idStringMerchant id.
merchant_categoryStringMerchant category.
acq_transaction_typeString
securityObject
security.ipString
security.user_agentString
masked_credit_cardStringMasked card number.
authorization_codeStringAuthorization code.
issuing_bankStringCard issuing bank.
processor_idStringProcessor ID.
foreign_cardBoolean
pos_detailsObject
pos_details.modelStringTerminal model.
pos_details.locationObject
pos_details.location.latitudeNumber
pos_details.location.longitudeNumber
pos_details.versionStringTerminal version.
pos_details.brandStringTerminal brand.
pos_details.terminal_idStringTerminal id.
pos_details.userStringDevice operator username. Only returned if sent in the request.
pos_details.friendly_nameStringFriendly display name of the terminal. Only returned if sent in the request.
pos_details.serialStringDevice serial number. Only returned if sent in the request.
pos_details.typeStringPhysical device type. Possible values: COUNTERTOP, MPOS, SMARTPOS, SELF_SERVICE, OTHER. Only returned if sent in the request.
pos_details.connectivityStringNetwork connectivity type. Possible values: GPRS, WIFI, ETHERNET, DIAL_UP, OTHER. Only returned if sent in the request.
last_four_digitsStringLas four digits of the card.
approval_codeStringApproval code.
amountObject
amount.extra_taxesObject
amount.currencyStringTransaction currency.
amount.subtotal_iva0NumberTax-free transaction amount.
rules_responseObject
rules_response.countryString
rules_response.commercial_executiveString
rules_response.business_categoryString
rules_response.addressString
rules_response.cityString
rules_response.authorizerObject
rules_response.authorizer.authorizer_nameString
rules_response.authorizer.soft_descriptorString
rules_response.authorizer.authorizer_bank_idString
rules_response.authorizer.commerce_codeString
rules_response.authorizer.authorizer_typeString
rules_response.authorizer.retailer_idString
rules_response.authorizer.authorizer_acquirer_binString
rules_response.authorizer.category_modelString
rules_response.authorizer.urlString
rules_response.authorizer.authorizer_aliasString
rules_response.authorizer.terminal_idString
rules_response.contact_personString
rules_response.merchant_nameString
rules_response.telephoneString
rules_response.mccString
rules_response.urlString
rules_response.zip_codeString
rules_response.tax_idString
rules_response.provinceString
rules_response.business_registration_idString
rules_response.tccString
rules_response.totalString
rules_response.business_lineString
rules_response.currencyString
rules_response.idString
rules_response.acquirer_typeString
acq_transaction_scopeString
contact_detailsObject
contact_details.document_numberString
contact_details.document_typeString
acq_transaction_modeString
card_typeStringcredit, debit, prepaid
ticket_numberStringTicker number.
card_country_codeStringCountry code of the processed card.
credential_aliasString
bin_cardStringCard bin.
credential_idString
cvm_typeString
approved_transaction_amountNumberAuthorized amount.
transaction_referenceStringUnique reference per transaction generated by Kushki.
Examples of webhooks for an approved transaction.
JSON
JSON
JSON
{
    "country": "Mexico",
    "franchise": "MASTERCARD",
    "available": true,
    "channel": "POS",
    "public_credential_id": "146cbf33c7fd45c4111cbf9d3f04478d",
    "client_transaction_id": "ae6dd41a-9173-4ec7-8734-3178454ef341",
    "mcc": "1234",
    "card_country": "CHL",
    "processor_name": "MASTERCARD",
    "transaction_reference": "718fa526-6f41-405f-a1f5-a71db52dfdd2",
    "payment_method": "card",
    "card_details": {
        "prosa_info": {},
        "reading_type": "MCR"
    },
    "transaction_id": "111663595155516279",
    "created": 1663895155240,
    "merchant_name": "Tu libreria",
    "transaction_type": "SALE",
    "processor": {
        "code": "000",
        "message": "Transacción Aprobada."
    },
    "reference_number": "226520101801",
    "tax_id": "7283839521223",
    "sync_mode": "online",
    "additional_info": {
        "f7": "0922200555",
        "f63": "MDS8TNCN9",
        "f11": "101883",
        "f37": "226520101883"
    },
    "subtotal_iva0": 101.99,
    "deferred": {
        "months": "1"
    },
    "response_code": "00",
    "transaction_status": "APPROVAL",
    "social_reason": "TU LIBRERIA",
    "payment_brand": "MASTERCARD",
    "acquirer_bank": "Kushki",
    "request_amount": 101.99,
    "merchant_id": "20000000305053342000",
    "approved_transaction_amount": 101.99,
    "merchant_category": "Medium",
    "acq_transaction_type": "charge",
    "security": {
        "ip": "187.212.254.148",
        "user_agent": "PostmanRuntime/7.29.2"
    },
    "masked_credit_card": "545195XXXXXX5480",
    "authorization_code": "533804",
    "issuing_bank": "BankACQ",
    "processor_id": "1652365464",
    "foreign_card": true,
    "pos_details": {
        "model": "P2-EU",
        "location": {
            "latitude": -0.1848534,
            "longitude": -78.4769761
        },
        "brand": "SUNMI",
        "version": "Kushki SunmiV1.1.13",
        "terminal_id": "PB04209860004"
    },
    "last_four_digits": "5480",
    "approval_code": "533804",
    "amount": {
        "extra_taxes": {},
        "currency": "MXN",
        "subtotal_iva0": 101.99
    },
    "rules_response": {
        "country": "MEX",
        "address": "Centro 123",
        "business_category": "0",
        "commercial_executive": "user@example.com",
        "authorizer": {
            "authorizer_name": "MASTERCARD",
            "soft_descriptor": "KSK*TEST",
            "authorizer_bank_id": "",
            "authorizer_type": "",
            "commerce_code": "353453",
            "retailer_id": "",
            "authorizer_acquirer_bin": "545195",
            "category_model": "0",
            "terminal_id": "1652365413",
            "authorizer_alias": "MASTERCARD",
            "url": ""
        },
        "city": "Monterrey",
        "contact_person": "John Doe",
        "merchant_name": "Tu libreria",
        "telephone": "8100000001",
        "mcc": "1234",
        "tax_id": "asdf12345678",
        "url": "",
        "zip_code": "64000",
        "province": "NUEVO LEON",
        "tcc": "H",
        "total_amount": "101.990000",
        "business_registration_id": "000000000001",
        "business_line": "37006",
        "currency": "MXN",
        "id": "1652365464",
        "acquirer_type": "kushki"
    },
    "acq_transaction_scope": "international",
    "contact_details": {
        "document_number": "123666",
        "document_type": "0"
    },
    "acq_transaction_mode": "Authorization",
    "card_type": "credit",
    "ticket_number": "111663890155240264",
    "card_country_code": "MEX",
    "credential_alias": "Tu libreria",
    "bin_card": "545195",
    "credential_id": "245c10532cd844e28e4ec9a83159d89b",
    "transactionReference": "718fa526-6f41-405f-a1f5-a71db52dfdd2"
}
Examples of webhooks for a refund.
You can also check the status of refunds from your Console.
JSON
{
    "country": "Mexico",
    "franchise": "VISA",
    "available": true,
    "channel": "POS",
    "public_credential_id": "146cbf33c7fd45c0271cbf9d31d4478d",
    "client_transaction_id": "6681eadc-6d8d-44ba-8ca0-18e061c1172a",
    "mcc": "1234",
    "card_country": "MEX",
    "processor_name": "VISA",
    "transaction_reference": "daa8583d-f18c-419a-840e-be5c95011eb6",
    "payment_method": "card",
    "card_details": {
        "card_sequential": "11",
        "prosa_info": {},
        "reading_type": "ICC",
        "tlv": "9F2701809F1A0206049A032208309F02060000000120005F2A0206044F07A00000000310109F0607A00000000310109F26085DE291D252397F709F100706010A03A020009F37044A05C99750095649534120544553549F6E009F5B009F3602008C9F330360F8C89F03009C010082021C008407A00000000310105F34011195058080048000"
    },
    "transaction_id": "111663896831621702",
    "created": 1663896831738,
    "merchant_name": "Tu libreria",
    "transaction_type": "REFUND",
    "processor": {
        "code": "000",
        "message": "Transacción Aprobada."
    },
    "reference_number": "226520105211",
    "tax_id": "7283839421223",
    "sync_mode": "online",
    "additional_info": {
        "f7": "0922203351",
        "f32": "408210",
        "f11": "100611",
        "f62s2": "40000000000000000302145412649612",
        "f37": "226520100611"
    },
    "subtotal_iva0": 60,
    "deferred": {
        "months": "1"
    },
    "response_code": "00",
    "transaction_status": "APPROVAL",
    "social_reason": "TU LIBRERIA",
    "payment_brand": "VISA",
    "acquirer_bank": "Kushki",
    "request_amount": 60,
    "merchant_id": "20000000105850418000",
    "approved_transaction_amount": 0.6,
    "merchant_category": "Medium",
    "acq_transaction_type": "Refund",
    "security": {},
    "masked_credit_card": "476134XXXXXX0043",
    "authorization_code": "120606",
    "issuing_bank": "VISA",
    "processor_id": "1652365464",
    "cvm_type": "none",
    "foreign_card": true,
    "pos_details": {
        "location": {
            "latitude": -0.22480833333333333,
            "longitude": -78.487955
        },
        "model": "P2-EU",
        "version": "Kushki SunmiV1.1.26",
        "brand": "SUNMI",
        "terminal_id": "PB04216R24337"
    },
    "last_four_digits": "0043",
    "approval_code": "120606",
    "amount": {
        "extra_taxes": {},
        "currency": "MXN",
        "subtotal_iva0": 60
    },
    "rules_response": {
        "country": "MEX",
        "commercial_executive": "user@example.com",
        "business_category": "0",
        "address": "Centro 123",
        "contact_person": "Jhon Doe",
        "authorizer": {
            "authorizer_name": "VISA",
            "soft_descriptor": "KSK*TEST",
            "authorizer_bank_id": "",
            "authorizer_type": "",
            "commerce_code": "353453",
            "authorizer_acquirer_bin": "408210",
            "retailer_id": "",
            "category_model": "0",
            "terminal_id": "1652365464",
            "authorizer_alias": "VISA",
            "url": ""
        },
        "city": "Monterrey",
        "merchant_name": "Tu libreria",
        "telephone": "8100000001",
        "mcc": "1234",
        "url": "http://internal-k8s-acquirer-acquirer-83c4eec5cf-1220747559.us-east-1.elb.amazonaws.com/visa/",
        "zip_code": "64000",
        "tax_id": "asdf12345678",
        "province": "NUEVO LEON",
        "total_amount": "60.000000",
        "business_registration_id": "000000000001",
        "tcc": "H",
        "business_line": "37006",
        "currency": "MXN",
        "id": "1652365464",
        "acquirer_type": "kushki"
    },
    "acq_transaction_scope": "international",
    "contact_details": {
        "document_type": "-1"
    },
    "acq_transaction_mode": "Authorization",
    "card_type": "credit",
    "ticket_number": "111663896831738702",
    "card_country_code": "MEX",
    "credential_alias": "Tu libreria",
    "bin_card": "476134",
    "credential_id": "245c10502cd844ebae4ec9a70610d89b",
    "transactionReference": "daa8583d-f18c-419a-840e-be5c95011eb6"
}
Modificado en 2026-10-12 16:02:05
Anterior
Test data
Siguiente
Raw card-present API
Built with