1. One-Click & Scheduled Payments
Español
  • English
  • Español
  • Docs de API 🇵🇪
  • Online Payments
    • Errores ISO
    • Errores del API de Kushki
    • Notas de versión
    • Card Payments
      • Solicitar un token de tarjeta
      • Hacer un cargo o cargo diferido
      • Preautorización (sin token)
      • Crear pago (sin token)
      • Anular una transacción
      • Reembolsar una transacción
      • Verificar cuenta
      • Solicitar opciones de diferido
      • Autorizar pagos
      • Reautorizar pagos
      • Capturar un pago autorizado
      • Validar OTP
      • Información de BIN
      • Información de BIN V2
    • One-Click & Scheduled Payments
      • Solicitar un token de cargo recurrente
        POST
      • Crear un cargo recurrente
        POST
      • Actualizar los datos de la tarjeta del cargo recurrente
        PUT
      • Hacer un pago One-click
        POST
      • Cancelar un cargo recurrente
        DELETE
      • Actualizar un cargo recurrente
        PATCH
      • Agregar un cargo o descuento temporal
        PUT
      • Autorizar pagos
        POST
      • Capturar un pago autorizado
        POST
      • Consultar información del cargo recurrente
        GET
    • Card Out
      • Obtener token de Card Payout
      • Obtener token de suscripción
      • Push funds
      • Push Funds en suscripciones
      • Consultar estado de la transacción
      • Eliminar suscripción
    • Transfer In
      • Consultar lista de bancos
      • Solicitar un token de Transfer In
      • Iniciar transacción
      • Consultar estado
    • Transfer Out
      • Consultar lista de bancos
      • Consultar lista de bancos V2
      • Solicitar un token de Transfer Out
      • Iniciar transacción
      • Consultar estado
      • Saldo para payouts
    • Cash In
      • Solicitar un token de Cash In
      • Iniciar transacción
      • Estado de la transacción
    • Smartlinks V2
      • Crear un Smartlink
      • Actualizar un Smartlink
      • Consultar un Smartlink
      • Eliminar un Smartlink
    • Analytics
      • Consultar listado de transacciones v2
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Gateway Status
      • Consultar estado del gateway
    • Payment Credentials
      • Crear una credencial
      • Buscar credenciales
      • Búsqueda avanzada
      • Activar o desactivar
      • Eliminar credencial
      • Actualizar credencial
      • Regenerar una credencial
    • Payment Button
      • Crear un Payment Button
    • Platform Status
      • Consultar estado de la plataforma
    • Subscription Transactions
      • Consultar transacciones de suscripción
    • Settlement
      • Consultar liquidación
    • Fraud Report
      • Consultar alertas de fraude
  • Card Present Payments (API Raw)
    • Notas de versión
    • Proceso de intercambio de llaves
    • Datos de prueba
    • Catálogo de errores de Kushki para transacciones POS
    • El objeto Amount
    • One-time Payments
      • Pago único
    • Two-step Payments
      • Autorización y captura
    • Voids & Refunds
      • Reembolsar una transacción
      • Anular y reversar
    • Card information
      • Consultar información de BIN
      • Información de BIN V2
      • Solicitar opciones de diferido
    • Query Transactions
      • Búsqueda de transacciones
    • Webhooks
      • Introducción
      • Buenas prácticas
      • Reembolsos
      • Pagos con tarjeta
      • Revisa tus webhooks
    • Chargebacks
      • Consultar chargebacks
      • Solicitar exportación de chargebacks
    • Fraud Report
      • Consultar alertas de fraude
  • Kushki One
    • Error Catalog
    • Release notes
    • Transaction Examples
    • Webhooks
    • Cloud Services
      • Payment Cloud
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Refund
          • Abort
          • Void
        • Async
          • Charge (Async)
          • Authorization — Pre-auth (Async)
          • Capture (Async)
          • Re-authorization (Async)
          • Post-tip (Async)
          • Void (Async)
        • Search
          • Transaction Search
      • Print Cloud
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Payment Local
        • Sync
          • Charge
          • Authorization (Pre-auth)
          • Capture
          • Re-authorization
          • Post-tip
          • Void
          • Refund
          • Abort
        • Async
          • Charge (Async)
          • Authorization — Pre-auth (Async)
          • Capture (Async)
          • Re-authorization (Async)
          • Post-tip (Async)
          • Void (Async)
          • Abort (Async)
        • Search
          • Transaction Search — Online
          • Transaction Search — Local
      • Print Local
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
  • Appian - Submerchant Register
    • Release Notes
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Submerchant Document Upload
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • Shared
      • ErrorResponse
      • BadRequestResponse
      • InvalidBinResponse
      • payment_method
      • payment_submethod
      • messageFields
      • Channel
    • Amount & Taxes
      • Amount-cash-in
      • GetConfigurationRequest
    • Identity & Contact
      • Shipping Address
    • Card & Payments
      • ChargesVoidCardResponse
      • Promotions
      • Submerchant
    • Subscriptions
      • SubscriptionUpdate
      • SubscriptionAdjustmentRequest
      • SubscriptionTransactionsResponse
    • Webhooks
    • Analytics
      • AnalyticsTransactionItem
      • AnalyticsListResponse
    • Settlement
      • SettlementDateRangeRequest
      • SettlementTicketRequest
      • SettlementResponse
    • Chargebacks
      • ChargebackListResponse
      • ChargebackSearchRequest
    • Cash
      • CashChargeInitRequest
      • CashStatusResponse
    • Transfer
      • TransferTokenRequest
      • TransferInitRequest
      • TransferStatusResponse
    • Payouts
      • PayoutsWebhooksItem
    • Smart Link
      • SmartLinkAmount
    • Terminal
      • TerminalContactDetails
      • TerminalCardDetails
      • TerminalPosDetails
      • TransactionSearchRequest
      • TerminalCardData
    • RequestBodies
      • one-and-two-step-payment
    • card-old
    • AmountWithTaxes-old
    • TransactionResponse
    • PrintJobRequest
    • one-and-two-step-payment
    • Card Present (CP)
    • one-and-two-step-payment1
    • Card
    • amount
    • FraudAlertRequest
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • Shipping Address
    • transactionType
    • ChargebackItem-old
    • SubscriptionTransaction
    • amount
    • AmountCore-old
    • CommandText-old
    • Language
    • extra_taxes
    • CommandText
    • RawResponse
    • Card Not Present (CNP)
    • Deferred
    • networkToken
    • FraudAlertResponse
    • ErrorResponse400-old
    • Deferred-old
    • SettlementResponse
    • extra_taxes-old
    • ExtraTaxes-old
    • CommandColumns-old
    • card
    • CommandColumns
    • CardData
    • FraudAlertRecord
    • currency
    • currency
    • ErrorResponse
    • webhooksItem
    • orderDetails-old
    • Country
    • ErrorResponse401-old
    • SettlementRecord
    • pos_details-old
    • ColumnItem-old
    • LinkFailure
    • ColumnItem
    • Amount
    • card_details
    • ValidationError
    • documentType
    • ErrorResponse403-old
    • card_details-old
    • TransactionResponse-old
    • CommandDivider-old
    • enc_tlv
    • CommandDivider
    • TransactionEvent
    • extraTaxes
    • extraTaxes-old
    • payment_method
    • ErrorResponse500-old
    • threeDomainSecure
    • enc_tlv
    • RawResponse-old
    • CommandFeed-old
    • CommandFeed
    • TransactionStatus
    • deferred
    • binInfo
    • contact_details-old
    • CardData-old
    • CommandSpace-old
    • CommandSpace
    • ReadingType
    • pos_details
    • Billing-Address-old
    • deferred-old
    • sub_merchant
    • AmountWithTip-old
    • CommandCut-old
    • metadata
    • sub_merchant
    • CommandCut
    • FailureReason
    • contact_details
    • headers
    • metadata
    • LinkFailure-old
    • CommandImage-old
    • CommandImage
    • EventTerminal
    • Amount-old
    • ContactDetails-old
    • SubscriptionUpdate
    • TransactionSearchRequest-old
    • CommandQR-old
    • orderDetails
    • CommandQR
    • EventOperation
    • Subscription
    • payment_submethod
    • citMit
    • SubscriptionAdjustmentRequest
    • CommandBarcode-old
    • Shipping Address
    • CommandBarcode
    • EventAmount
    • messageFields
    • PrinterError-old
    • Billing Address
    • EventExtraTaxes
    • PrintJobAccepted
    • webhooksChargeback
    • Language
    • PrintJobStatus-old
    • PrinterError
    • EventMetadata
    • networkToken-old
    • PrintWebhookPayload-old
    • AmountWithTaxes
    • PrintJobStatus
    • PrintJobStatusRequest
    • threeDomainSecure
    • webhooks
    • AmountCore
    • webhooks
    • product-old
    • headers
    • PrintWebhookPayload
    • ExtraTaxes
    • Metadata
    • webhooksChargeback
    • UnexpectedErrorResponse-old
    • AmountWithTip
    • citMit
    • TransactionSearchBody
    • TransactionSearchOnlineBody
    • network
    • Card-old-old
    • binInfo
    • AmountWithOptionalTip
    • TransactionSearchLocalBody
    • TransactionEvent_2
    • messageFields
    • Promotions-old
    • UnexpectedErrorResponse
    • FailureReason_2
    • transactionType
    • EventTerminal_2
    • EventOperation_2
    • InvalidBinResponse-old
    • EventAmount_2
    • EventExtraTaxes_2
    • EventMetadata_2
    • currency
    • Amount-CL-old
    • SettlementTicketRequest
    • metadata
    • payment_method
    • currency
    • currency
    • Submerchant
    • Shipping Address
    • GetConfigurationRequest-old
    • BadRequestResponse
    • ContactDetails
    • product
    • TransactionEvent_21
    • TransactionStatus2
    • ReadingType3
    • FailureReason_24
    • EventTerminal_25
    • EventOperation_26
    • EventAmount_27
    • EventMetadata_28
    • EventExtraTaxes_29
    • PrintWebhookPayload10
    • TransactionEvent11
    • FailureReason12
    • EventTerminal13
    • EventOperation14
    • EventAmount15
    • EventMetadata16
    • EventExtraTaxes17
HomePerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
HomePerú 🇵🇪
México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. One-Click & Scheduled Payments

Crear un cargo recurrente

https://api-uat.kushkipagos.com
https://api-uat.kushkipagos.com
POST
/subscriptions/v1/card

Esta funcionalidad está disponible para los siguientes modelos:#

☑ Adquirencia
☑ Agregador
Crea un cargo recurrente con un token entregado por Kushki que representa la tarjeta de crédito del cliente.

Ejecución del pago#

Kushki procesa automáticamente los cargos recurrentes a la tarjeta registrada. Los pagos se ejecutan y se repiten según el monto y el periodo indicados en la suscripción.
La lógica de facturación empieza a correr todos los días desde las 6am GMT-5. Si quieres que el primer pago se ejecute el mismo día del registro, asegúrate de crear la suscripción antes de esa hora. Como alternativa, tu cliente puede registrar su tarjeta algunos días antes de que Kushki ejecute el primer cargo. Al crear una suscripción, debes indicar la fecha de inicio startDate.

Reintentos#

Si un pago se rechaza, Kushki cuenta con una lógica de reintentos para recuperar el cargo. Por defecto, hay 3 reintentos durante 3 días seguidos a partir del día de pago definido originalmente en startDate. Por ejemplo, para una suscripción mensual con fecha de inicio 10-01-2021 y un rechazo el 10-02-2021, el pago se reintentará hasta el 13-02-2021, 3 veces por día, para un total de 9 intentos de pago.
Puedes modificar los días de reintento de una suscripción y también definir días de cobro específicos.
Si el último intento de cargo fue declinado, podemos enviarte una notificación por WebHook para avisarte. En esos casos, te recomendamos contactar al dueño de la tarjeta y ofrecerle alternativas para pagar la cuota que no se pudo cobrar; por ejemplo, cambiar la tarjeta de crédito registrada y generar un charge on demand solo por una vez. Kushki seguirá ejecutando los cargos automáticos en los periodos siguientes.
Personaliza la lógica de reintentos#
Puedes personalizar la lógica de reintentos de cobro enviando el objeto retryConfiguration de esta forma:
1.
retryType:"schedule". Si eliges schedule, puedes especificar en el campo value cada cuánto se reintentará el cobro.
En el siguiente ejemplo, el cobro se reintentará 3 veces por día cada 2 días durante todo el mes.
{
   "retryConfiguration":{
      "retryType":"schedule",
      "value":[2]
   }
}
2.
retryType:"fixed". Envía los días específicos del mes en los que se debe reintentar. Ej. 10, 20 y 30.
En el siguiente ejemplo, el cargo solo se reintentará 3 veces al día, los días 10, 20 y 30 del mes correspondiente.
{
  "retryConfiguration":{
     "retryType":"fixed",
     "value":[10,20,30]
  }
}
Envía el retryType como fixed si no quieres reintentar el cobro durante todo el mes.
Si el último intento de cargo fue declinado, podemos enviarte una notificación por WebHook para avisarte. En esos casos, te recomendamos contactar al dueño de la tarjeta y ofrecerle alternativas para pagar la cuota que no se pudo cobrar; por ejemplo, cambiar la tarjeta de crédito registrada y generar un One-click payment solo por una vez. Kushki seguirá ejecutando los cargos automáticos en los periodos siguientes.

¡Importante!#

Al personalizar los reintentos, ten en cuenta que una vez iniciado el primer cobro, si falla y arrancan los reintentos, cualquier actualización de los reintentos se aplicará hasta el siguiente periodo de la suscripción (semanal, mensual o anual).

Periodicidad#

Puedes elegir la frecuencia de los cargos recurrentes enviando cualquiera de estos valores en el campo obligatorio periodicity:
daily: cada 1 día.
weekly: cada 7 días.
biweekly: cada 15 días.
monthly: cada 30 días.
threefortnights: cada seis semanas o 42 días.
bimonthly: cada 60 días.
quarterly: cada 90 días.
fourmonths: cada 120 días.
halfyearly: cada 180 días
yearly: cada 360 días.
custom: para one click payments.

Uso de fullResponse: v3#

Enviar "fullResponse": "v3" devuelve una respuesta ampliada en la que el objeto details incluye campos adicionales frente a v2. Uno de esos campos es validationTicketNumber, que contiene el número de ticket del cargo de validación ejecutado al crear la suscripción.

Estabilidad de la respuesta v3#

La respuesta v3 puede incluir campos nuevos o deprecados sin aviso previo. No construyas lógica que dependa del conjunto exacto de campos devueltos en details. Maneja siempre de forma tolerante los campos inesperados o ausentes.
¿Tienes una sugerencia sobre esta documentación? Contáctanos.

¿Tienes tu propio motor de autenticación 3DS?#

Asegúrate de incluir el objeto threeDomainSecure en tu solicitud.

Request

Header Params

Body Params application/json

Examples

Responses

🟢201Created
application/json
Created
Bodyapplication/json

🟠400Bad Request
🔴500Server Error
Request Request Example
Shell
JavaScript
Java
Swift
curl --location '/subscriptions/v1/card' \
--header 'Private-Merchant-Id;' \
--header 'Content-Type: application/json' \
--data-raw '{
    "token": "gV3ox6100000sAxClU033646vnnJsT83",
    "planName": "Premium",
    "periodicity": "monthly",
    "contactDetails": {
        "documentType": "CE",
        "documentNumber": "1009283738",
        "email": "user@example.com",
        "firstName": "John",
        "lastName": "Doe",
        "phoneNumber": "+51912345678"
    },
    "amount": {
        "subtotalIva": 1,
        "subtotalIva0": 0,
        "ice": 0,
        "iva": 0.14,
        "currency": "PEN"
    },
    "startDate": "2022-05-25",
    "metadata": {
        "plan": {
            "fitness": {
                "cardio": "include",
                "rumba": "include",
                "pool": "include"
            }
        }
    }
}'
Response Response Example
201 - default
{
    "subscriptionId": "1601594972296000"
}
Modified at 2026-09-11 14:53:30
Previous
Solicitar un token de cargo recurrente
Next
Actualizar los datos de la tarjeta del cargo recurrente
Built with