Dispersa a cuentas bancarias

Reparte tu dinero a las cuentas bancarias de tus clientes.

Dispersar con transferencia consiste en entregar dinero a cuentas bancarias. En otras palabras, si tienes la información bancaria de tus clientes o dependientes, podrás a través de Kushki, depositarles directamente a sus cuentas a través de transferencia utilizando la lógica que elijas.

Ideal para:

  • Pago de proveedores o vendedores
  • Marketplaces
  • Aplicaciones de delivery

El flujo de pago que integrarás es el siguiente:

Flujo transfer out

A continuación te contamos los pasos para que puedas empezar a dispersar fondos.

1. Obtén el listado de bancos asociados

Es importante que te asegures que todos los bancos a los que realizarás las transferencias se encuentren en el listado de bancos asociados. Te recomendamos realizar la consulta del listado los bancos asociados utilizando nuestro endpoint de listado de banco.

  • Javascript
  • Python
  • PHP
var request = require('request');
var bankList = [];
var options = {
'method': 'GET',
'url': 'https://api-uat.kushkipagos.com/payouts/transfer/v1/bankList', // Test environment
'headers': {
'Public-Merchant-Id': '' // Replace with your Public Key
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
bankList = response.body;
// Submit your code to filter the bank you need and send its id in token request
});
import requests
url = "https://api-uat.kushkipagos.com/payouts/transfer/v1/bankList" // Test environment
bankList = []
payload = {}
headers = {
'Public-Merchant-Id': '' // Replace with your Public Key
}
response = requests.request("GET", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
bankList = response.text
// Submit your code to filter the bank you need and send its id in token request
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://api-uat.kushkipagos.com/payouts/transfer/v1/bankList'); // Test environment
$request->setRequestMethod('GET');
$request->setOptions(array());
$request->setHeaders(array(
'Public-Merchant-Id' => '' // Replace with your Public Key
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
bankList = $response->getBody();
// Submit your code to filter the bank you need and send its id in token request

2. Tokeniza la información.

Ya que has obtenido el código del banco al que esta relacionada la cuenta bancaria para realizar la transferencia, deberás realizar la petición del token utilizando nuestro endpoint de tokenización.

  • Javascript
  • Python
  • PHP
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api-uat.kushkipagos.com/payouts/transfer/v1/tokens', // Test environment
'headers': {
'Public-Merchant-Id': '', // Replace with your Public Key
'Content-Type': 'application/json'
},
body: JSON.stringify({
"documentNumber":"123456789",
"accountNumber":"99999",
"accountType":"CC",
"bankId":"000051",
"totalAmount":49.99,
"documentType":"NIT",
"currency":"COP"
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
// Submit your code to send the token you received to the next request
});
import requests
url = "https://api-uat.kushkipagos.com/payouts/transfer/v1/tokens" // Test environment
payload = "{\n \"documentNumber\": \"123456789\",\n \"accountNumber\": \"99999\",\n \"accountType\": \"CC\",\n \"bankId\": \"000051\",\n \"totalAmount\": 49.99,\n \"documentType\": \"NIT\",\n \"currency\": \"COP\"\n}"
headers = {
'Public-Merchant-Id': '', // Replace with your Public Key
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
// Submit your code to send the token you received to the next request
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://api-uat.kushkipagos.com/payouts/transfer/v1/tokens'); // Test environment
$request->setRequestMethod('POST');
$body = new http\Message\Body;
$body->append('{
"documentNumber": "123456789",
"accountNumber": "99999",
"accountType": "CC",
"bankId": "000051",
"totalAmount": 49.99,
"documentType": "NIT",
"currency": "COP"
}');
$request->setBody($body);
$request->setOptions(array());
$request->setHeaders(array(
'Public-Merchant-Id' => '', // Replace with your Public Key
'Content-Type' => 'application/json'
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
// Submit your code to send the token you received to the next request

3. Inicializa la transacción

En esta etapa, debes recibir el token obtenido e iniciar el proceso de dispersión con Kushki. Deberás realizar una llamada a nuestro endpoint de inicialización para iniciar el pago.

  • Javascript
  • Python
  • PHP
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api-uat.kushkipagos.com/payouts/transfer/v1/init', // Test environment
'headers': {
'Private-Merchant-Id': '', // Replace with your Private Key
'Content-Type': 'application/json'
},
body: JSON.stringify({
"amount":{
"subtotalIva":0,
"subtotalIva0":49.99,
"iva":0
},
"token":"53de1cb6bbb54011a0a98053d48677e0" // Replace with the token you received
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
url = "https://api-uat.kushkipagos.com/payouts/transfer/v1/init" // Test environment
payload = "{\n \"amount\": {\n \"subtotalIva\": 0,\n \"subtotalIva0\": 49.99,\n \"iva\": 0\n },\n \"token\": \"53de1cb6bbb54011a0a98053d48677e0\"\n}" // Replace with the token you received
headers = {
'Private-Merchant-Id': '', // Replace with your Private Key
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://api-uat.kushkipagos.com/payouts/transfer/v1/init'); // Test environment
$request->setRequestMethod('POST');
$body = new http\Message\Body;
$body->append('{
"amount": {
"subtotalIva": 0,
"subtotalIva0": 49.99,
"iva": 0
},
"token": "53de1cb6bbb54011a0a98053d48677e0" // Replace with the token you received
}');
$request->setBody($body);
$request->setOptions(array());
$request->setHeaders(array(
'Private-Merchant-Id' => '', // Replace with your Private Key
'Content-Type' => 'application/json'
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();

La respuesta, entrega un número de ticket y el estado de la trasnsacción.

4. Consulta el estado de la transacción (opcional)

Ahora que la transferencia está próxima a procesarse, puedes conocer el estado de la transacción utilizando: webhooks o consultando manualmente utilizando nuestra API

Webhook

El estado de la transacción se notifica automáticamente en el momento en el que el dinero ha sido entregado en la cuenta bancaria.

API

Puedes utilizar nuestro Get Status, en nuestra API. para consultar manualmente el estado de una transacción específica.

5. Anula la transacción (opcional)

La transacción ha sido inicializada, pero quieres anularla por algún motivo. ¡No te preocupes!, tenemos la solución para ti.

Simplemente debes identificar el número de ticket y enviarlo como parámetro de ruta utilizando nuestro endpoint de anulación

  • Javascript
  • Python
  • PHP
var request = require('request');
var options = {
'method': 'DELETE',
'url': 'https://api-uat.kushkipagos.com/payouts/transfer/v1/transaction/ticket number', // Test environment, replace with your ticket number
'headers': {
'Private-Merchant-Id': '' // Replace with your Private Key
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
url = "https://api-uat.kushkipagos.com/payouts/transfer/v1/transaction/ticket number" // Test environment, replace with your ticket number
payload = {}
headers = {
'Private-Merchant-Id': '' // Replace with your Private Key
}
response = requests.request("DELETE", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://api-uat.kushkipagos.com/payouts/transfer/v1/transaction/ticket number'); // Test environment, replace with your ticket number
$request->setRequestMethod('DELETE');
$request->setOptions(array());
$request->setHeaders(array(
'Private-Merchant-Id' => '' // Replace with your Private Key
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();

6. Prueba tu integración

Existen números de documentos de identificación que puedes utilizar en modo prueba para asegurarte que tu integración esta lista.

  • Transacción aprobada: 123456789
  • Transacción declinada: 999999990

7. Prepara tu certificación

Toma en consideración las siguientes pautas para aprobar la certificación técnica (requerida para obtener credenciales productivas):

  • Los cálculos de los impuestos están correctos.
  • Mensajes en pantalla de acuerdo a las respuestas de Kushki.
  • Guardar y registrar todas las respuestas de Kushki (requeridas en caso de necesitar soporte).
  • Si no se requiere enviar el comprobante al correo del cliente, no se debe especificar el email en la solicitud del token.
  • Si se recibe notificaciones por webhook correctamente, responder a la solicitud con un status 200.
  • El botón de pago se desabilita después del primer click.
  • El logo de kushki es visible. Puedes descargar los recursos en el siguiente enlace.
  • Asegurar que en el cuerpo de la petición se envíen todos los campos requeridos en el API reference.

Acepta webhooks

Maneja eventos post-cobro de la manera correcta.

Dispersión efectivo

Dispera tu dinero de forma segura a través de efectivo.