1. Webpay Plus 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. Webpay Plus Payments

Reserve funds with Webpay Plus

Authorizes the separation of funds from a card, to capture them later
This functionality is available for the following models:
☐ Acquirer

☑ Aggregator
Now you can implement authorization and capture in your payments with Transbank's Webpay Plus. Your customers will be able to make purchases using credit cards, RedCompra cards, prepaid cards and through OnePay. This is the most common type of online transaction in Chile.
When a payment is authorized, the bank guarantees the availability of the amount and will hold it on the customer's card for 7 days. If the payment is not captured in that time, it will be automatically cancelled and the funds will be released.
The amount to be captured must be equal to or less than the authorized amount.
You can make multiple partial captures as long as their sum does not exceed the authorized amount.
Unlike other forms of integration, in this one, the customer will be redirected to a Transbank payment page and their bank to complete the transaction.

How does it work?#

A Webpay payment flow generally consists of the following steps:
diagrama-webpay
1.
The user initiates the payment process on your site or app.
2.
The user is redirected to the Webpay portal to make the payment, where they enters their card data.
3.
Then, they go to the card issuer's portal (the bank or other financial institution) where they authenticate using their credentials.
4.
Once the authentication is completed, the payment is authorized and the user returns to your site.
5.
A success or failure message is displayed depending on the result of the payment.
On your merchant's side, to reserve funds from a single-use card with Webpay Plus, you will need to:
1.
Obtain the token.
2.
Initiate the authorization with Kushki.
3.
Kushki will try to perform the authorization with the card issuer.
4.
If the response is positive, the merchant will be able to capture an amount and charge the customer's card.
The flow you will integrate is as follows:
Flujo Webpay plus con Autorización y Captura

1. Configure your front-end#

The responsibility of the front-end is to collect the user's card information in a secure way, tokenize it through Kushki's servers and then send it to your back-end to initiate the payment process.
You have two options to integrate: Kajita and Kushki.js.

Kajita#

Kushki has payment forms ready to collect card information securely. You can use any of our versions:
Cajita: the first version of the payment form. It is not customizable.
Kajita: the second version. It allows you to customize your payment forms from your Administration Console and even have several versions of Kajita.

Create and customize your Kajitas#

With Kushki you can create your Kajitas from the Administration Console. Click here to learn how to do it.

Configure Kajita#

Include the kushki-checkout.js script in your checkout page by adding it to the <head> of your HTML file. Always load kushki-checkout directly from cdn.kushkipagos.com. Do not include the script in a bundle or package or host a copy of it.

Add Kajita to your site#

Kajita needs a space within your page. Enter the following code in the <body> of your site where you want the payment form to be displayed.
For Kajita (v.2):
For Cajita (v.1):
Remember to configure the action of the action form according to the corresponding endpoint in your back-end, to get the token.
Then, add the script tag. Make sure the form has loaded.
For Kajita (v.2) you will be able to get the script from your Admin Console as explained here.
For v.1 (Cajita), add the following script. It is important that you add the variable return_url which is where the user will return once the payment process is completed in the Webpay portal.
This will create a predefined form on your page to accept payments.
You can use Cajita to offer not only card payments, but also cash and bank transfers.

Kushki.js#

Use Kushki.js if you need more control over the look & feel of your card form.

Configure Kushki.js#

Option 1 - CDN#
Use the following script tag at the end of the <body> on your payment page.
Option 2 - NPM#
Install the package from npm.
Then import it into your code using the following code.
Configure the Kushki object#
Add the following code to your application

Collect user information and send it to your back-end.#

You can collect user information as you wish. In this case we only need the email, so you can provide it directly if you already have it, or display an email field for the user to enter it.
Once the email is obtained, request the token from Kushki to send it to your back-end as follows:
Check the full reference in our Kushki.js reference

2. Configure your back-end#

The responsibility of the back-end is to receive the token obtained from your front-end and initiate the payment process with Kushki.
When the user submits the form, your front-end transfers a token to an endpoint you have specified. With this token, you must make a call to our Webpay Plus authorization initiation endpoint, to initiate the payment and redirect the user.
JavaScript
Check our API Reference for more information.
As a response to the call, you will get the redirect_url variable that you should use to redirect the user to the Webpay payment page to proceed with the payment.
For the redirect, try not to use containers like Frame, Panel, or IFrame. Avoid functions such as pop-up windows as they may be blocked by the browser. Redirect the user in the same tab or window.

3. Capture the transaction#

Once the payment is completed, the client will be returned with a GET call to the return_url provided as a parameter in step 1. This call will be accompanied by a parameter called token located in the path, which represents the unique identifier of the transaction.
For example, for return_url = "http://www.example.com/return the client will be returned to:
GET http://www.example.com/return?token=020199203102301203
where token is equal to 020199203102301203.
According to the response you receive, show the user a success or failure screen to inform the customer if the subscription was created successfully or if there was an error.

4. Kushki verifies authorization#

Kushki will validate the availability of funds with the card issuer. You can check the status of the transaction by making a call to the Get Status endpoint or via webhook. Once the response is obtained, save the ticketNumber as this will be the identifier for later capture, as well as a refund.

5. Capture (Optional)#

Capture the amount you define according to the authorized by calling our capture endpoint, using the ticketNumber obtained in the authorization.
JavaScript
You can get more information in our API reference.

5.1 Reversals or Refunds (Optional)#

Once an authorization has been made, it will not be possible to make a reversal of the separation of funds. If the reserved amount is not captured in the first 7 days, it will be automatically released on the seventh day.
On the other hand, you will be able to make a refund of a charge already made, through this endpoint, within the first 7 days. If more than 7 days have passed since the capture, you must request a refund, which we will perform through the Transbank portal, up to 90 days.

6. Test your integration#

There are test cards you can use in the UAT environment to make sure your integration is ready. Use them with any future expiration date.
CardNumberCVVOutcome
VISA4051 8856 0044 6623123Generates approved transactions
AMEX3700 0000 0002 0321234Generates approved transactions
MASTERCARD5186 0595 5959 0568123Generates declined transactions
Redcompra4051 8842 3993 7763Generates approved transactions
Redcompra4511 3466 6003 7060Generates approved transactions
Redcompra5186 0085 4123 3829Generates declined transactions
Prepago VISA4051 8860 0005 6590123Generates approved transactions
Prepago MASTERCARD5186 1741 1062 9480123Generates declined transactions
When an authentication form appears with RUT and key, you must use the RUT 11.111.111-1 and the key 123.
Modificado en 2026-10-14 19:50:02
Anterior
Accept Payments through Webpay Plus
Siguiente
Refunds
Built with