1. Recurring Payments Webhooks
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
    • Introduction to 3DS
    • Functionalities by business model
    • How do third party commissions work?
    • Integration guide Third Party Commissions
    • One-step Payments
      • How do Card Payments Work?
      • Accept a Card Payment
      • Accept One-Time Payments with OTP
      • OTP Authentication Error Codes
      • Error codes for single card payments
    • Scheduled payments
      • How do Credit or Debit Card Payment Recurring Charges Work?
      • Create a recurring charge
      • Manage your Scheduled Charges
    • Refunds
      • Returns, cancellations, and refunds
    • 3DS Authentication
      • 3DS API integration
      • 3DS integration with kushki.js library
      • 3DS API integration plus kushki.js library
      • 3DS Error Codes
  • Recurring Card Payments (Online)
    • Functionalities by business model
    • Error codes in recurring charges
    • Authenticate your subscriptions with 3DS
    • External subscriptions to Kushki
    • OneClick Payments
      • Accepting One-Click Payments
  • Wire Transfers
    • How do Payments by Wire Transfers Work?
    • 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
  • 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 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. Recurring Payments Webhooks

Webhook for Recurring Payments Made with Card

Kushki can send events to your webhook notifying your application at the time when one of the following events occurs:
1.
When a subscription is created (subscriptionApproved). If it is created through Smartlink, the status will be approvedTransaction.
2.
When a charge is successfully made (succesfullCharge)
3.
When a scheduled subscription charge retry failed (failedRetry)
4.
When all the scheduled subscription charge retries have failed (lastRetry)
5.
When a charge of a on-demand subscription is declined (declinedCharge)
6.
When a subscription is removed (subscriptionDelete)

Structure#

The webhooks sent by Kushki will contain the headers listed here.

These are the possible variables that are submitted in the webhook body:
Method: POST
Body: Object
VariableTypeDescription
name"succesfullCharge" "failedRetry" "lastRetry" "declinedCharge" "subscriptionDelete" "subscriptionApproved"
eventObject
event.idstring
event.metadataObject
event.metadata.key0string
event.metadata.key1string
event.metadata.key2string
event.subscriptionIdnumber
event.cardHolderNamestring
event.amountObject
event.amount.subtotalIvanumber
event.amount.subtotalIva0number
event.amount.ivanumber
event.amount.icenumber
event.amount.currencystring
event.amount.extraTaxesObject
event.amount.extraTaxes.agenciaDeViajenumber
event.amount.extraTaxes.iacnumber
event.amount.extraTaxes.propinanumber
event.amount.extraTaxes.tasaAeroportuarianumber
event.periodicitystring
event.contactDetailsObject
event.contactDetails.firstNamestring
event.contactDetails.lastNamestring
event.contactDetails.emailstring
event.tokenstring
event.merchantIdstring
event.startDatenumber (Unix Timestamp Format)
event.endDatenumber (Unix Timestamp Format)
event.creatednumber (Unix Timestamp Format)
event.planNamestring
event.binInfoObject
event.binInfo.bankstring
event.binInfo.typestring
event.binInfo.processorstring
event.binInfo.brandstring
event.dayOfMonthnumber
event.monthstring
event.dayOfWeekstring
event.retry.typeObject
event.retry.attemptsnumber
event.retry.maxnumber
event.retry.firstAttemptDatenumber
event.retry.periodicitynumber
event.retry.daysLeftarray
event.retry.daysLeft.itemsinteger
event.retryCountnumber
event.expirationTimenumber
event.activeboolean
event.lastFourDigitsstring
event.adjustmentobject
event.adjustment.amountobject
event.adjustment.amount.subtotalIvanumber
event.adjustment.amount.subtotalIva0number
event.adjustment.amount.ivanumber
event.adjustment.amount.icenumber
event.adjustment.amount.currencystring
event.adjustment.amount.extraTaxesobject
event.adjustment.amount.extraTaxes.agenciaDeViajenumber
event.adjustment.amount.extraTaxes.iacnumber
event.adjustment.amount.extraTaxes.propinanumber
event.adjustment.amount.extraTaxes.tasaAeroportuarianumber
event.adjustment.periodsnumber
event.retryConfigurationobject
event.retryConfiguration.retryTypestring
event.retryConfiguration.valuearray
event.retryConfiguration.value.itemsinteger
event.nextAttemptDaynumber
event.lastRetryDatenumber
event.urlstring
event.approvalCodestring
event.ticketNumberstring
event.lastChargeDatenumber
responseCodestringResponse code. Only for declines.
responseTextstringResponse text. Only for declines.
processor.codestringProcessor code. Only for declines.
processor.messagestringProcessor message. Only for declines.
messageFields.f38stringField specific to declines by issuer or brand.
messageFields.f48objectResponse codes. Only for Mastercard.
messageFields.f48.s22stringCorresponds to the citMit code sent in the request. Only for Mastercard.
messageFields.f48.s84stringMAC code (Merchant Advice Code) from Mastercard for declined transactions.
messageFields.f39stringField specific to declines by issuer or brand.

Examples#

JSON
JSON
Codigo
Codigo
// Approved charge
{
  "name": "succesfullCharge",
  "event": {
    "userAgent": "Go-http-client/1.1",
    "metadata": {
      "plan": {
        "fitness": {
          "pool": "include",
          "rumba": "include",
          "cardio": "include"
        }
      }
    },
    "subscriptionId": "1602024113521000",
    "created": 1602024113,
    "ip": "35.193.164.95",
    "lastChargeDate": 1602024176,
    "contactDetails": {
      "firstName": "Diego",
      "lastName": "Cadena",
      "phoneNumber": "+593988734644",
      "documentType": "CC",
      "documentNumber": "1009283738",
      "email": "test@test.com"
    },
    "periodicity": "monthly",
    "lastFourDigits": "4242",
    "active": true,
    "dayOfMonth": 6,
    "token": "da44953475f74c02abca31c5371e1792",
    "binInfo": {
      "bank": null,
      "brand": "VISA",
      "processor": "NA",
      "bin": "424242",
      "info": {
        "country": {
          "emoji": "🇺🇸",
          "latitude": 38,
          "alpha2": "US",
          "name": "United States of America",
          "numeric": "840",
          "currency": "USD",
          "longitude": -97
        },
        "number": {},
        "bank": {},
        "scheme": "visa",
        "type": "credit"
      }
    },
    "cardHolderName": "Pruebas",
    "maskedCardNumber": "424242XXXXXX4242",
    "month": "*",
    "planName": "Premium",
    "dayOfWeek": "?",
    "startDate": 1601942400,
    "amount": {
      "currency": "USD",
      "ice": 0,
      "subtotalIva0": 0,
      "iva": 0.14,
      "subtotalIva": 1
    },
    "id": "160202411352100020000000XXXXXXXX2000",
    "plccMetadataId": "187169a42eed456a9964dab5e7ec9468",
    "merchantId": "20000000XXXXXXXX2000",
    "transactionReference": "9eb4ec3d-5e83-4450-8d90-5047121bddbf",
    "approvalCode": "000000",
    "binCard": "424242",
    "issuingBank": null,
    "ticketNumber": "646245907500066871"
  }
}
Modificado en 2026-10-14 19:48:38
Anterior
Recurring Payments Webhooks
Siguiente
Payment button Webhooks
Built with