Desembolso a una Cuenta Bancaria
Envíe fondos directamente a una cuenta bancaria.| Empresa
Rapyd facilita a los empleadores el pago de salarios a sus empleados. Un empleador puede transferir un desembolso de salario desde una wallet del cliente directamente a la cuenta bancaria del empleado.
Consideremos un caso en el que Four Star Rideshare Service, su servicio de transporte compartido, tiene un sitio web o una aplicación móvil registrada en la plataforma Rapyd.
Su gerente de nómina utiliza una wallet corporativa de Rapyd para pagar a los conductores.La wallet se crea tal como se describe en Crear una Rapyd Wallet.
En su sitio web, el gerente de nómina solicita un desembolso del salario de uno de los conductores desde la wallet corporativa hacia la cuenta bancaria del conductor. El backend de su sitio web solicita a Rapyd que procese el desembolso. Rapyd procesa el desembolso con el banco. La plataforma Rapyd notifica al backend de su sitio web cuando el desembolso se ha completado correctamente.
La forma de encontrar los métodos específicos de desembolso bancario que coincidan con el país y la moneda que usted admitirá se describe en Cómo funciona.

En su sitio web, el gerente de nómina solicita un desembolso del salario de un empleado.
El backend del sitio web solicita a Rapyd que procese el desembolso.

Rapyd procesa el desembolso.
El banco acredita el dinero de la wallet corporativa en la cuenta bancaria del empleado.
Rapyd es notificado de que el dinero fue acreditado en la cuenta bancaria.
El backend del sitio web recibe la confirmación de Rapyd de que el desembolso se completó.
Los diagramas de secuencia de mensajes a continuación describen cómo se intercambia la información entre Rapyd, el comercio y el banco.
Crear desembolso bancario – Éxito
Crear desembolso bancario – Fallo
Requisitos previos
Para ejecutar los ejemplos de este caso de uso, debe crear el siguiente ID en su propio sandbox:
ewallet - Ejecute Crear wallet para la wallet corporativa del servicio de transporte compartido. Utilice el ID que reciba en la respuesta.
Para su página de desembolsos, necesita encontrar tipos de métodos de desembolso que coincidan con sus criterios, como la moneda del desembolso y la categoría (por ejemplo: banco).
En este ejemplo, encontrará tipos de métodos de desembolso que admiten transferencias bancarias en PHP (pesos filipinos).
Para ello, utilizará Listar tipos de métodos de desembolso con los siguientes parámetros.
Descripción de los parámetros de consulta
Parámetro de consulta | Descripción |
|---|---|
categoría | Ingrese banco como la categoría del método de desembolso. |
país_beneficiario | Ingrese PH como el código de Filipinas, el país del beneficiario. |
moneda_del_desembolso | Ingrese PHP como el código de pesos filipinos, la moneda recibida por el beneficiario. |
Solicitud de listado de tipos de métodos de desembolso
Solicite una lista de todos los tipos de métodos de desembolso disponibles para transferencias bancarias en PHP (pesos filipinos).
Solicitud
// Request URL: GET https://sandboxapi.rapyd.net/v1/payout_methods?category=bank&beneficiary_country=PH&payout_currency=PHP // Message body absent
.NET Core
using System; namespace RapydApiRequestSample { class Program { static void Main(string[] args) { try { string category = "bank"; string beneficiaryCountry = "PH"; string payoutCurrency = "PHP"; string result = RapydApiRequestSample.Utilities.MakeRequest("GET", $"/v1/payout_methods?category={category}&beneficiary_country={beneficiaryCountry}&payout_currency={payoutCurrency}"); Console.WriteLine(result); } catch (Exception e) { Console.WriteLine("Error completing request: " + e.Message); } } } }
JavaScript
const makeRequest = require('../../../../../Utilities/JS/utilities').makeRequest; async function main() { try { const result = await makeRequest( 'GET', '/v1/payout_methods?category=bank&beneficiary_country=PH&payout_currency=PHP' ); console.log(result); } catch (error) { console.error('Error completing request', error); } }
PHP
<?php $path = $_SERVER['DOCUMENT_ROOT']; $path .= "/code_race_2020/Utilities/PHP/utilities.php"; include($path); try { $object = make_request('get', "/v1/payout_methods?category=bank&beneficiary_country=PH&payout_currency=PHP"); var_dump($object); } catch (Exception $e) { echo "Error: $e"; } ?>
Python
from pprint import pprint from utilities import make_request # List Payout Method Types request beneficiary_country = 'PH' category = 'bank' payout_currency = 'PHP' path = f'/v1/payout_methods?category={category}&' \ f'beneficiary_country={beneficiary_country}&' \ f'payout_currency={payout_currency}' results = make_request(method='get', path=path) pprint(results)
Respuesta de listado de tipos de métodos de desembolso
Echemos un vistazo a la respuesta.
Respuesta
{ "status": { "error_code": "", "status": "SUCCESS", "message": "", "response_code": "", "operation_id": "479d23c0-a3a3-46ec-82f7-036eb76c0a1a" }, "data": [ "payout_method_type": "ph_anzbank_bank", "name": "Bank Transfer to ANZ Bank in the Philippines", "is_cancelable": 0, "is_expirable": 0, "is_location_specific": 0, "is_online": 0, "status": 1, "image": "", "category": "bank", "beneficiary_country": "ph", "payout_currencies": [ "PHP" ], "sender_entity_types": [ "company" ], "beneficiary_entity_types": [ "company", "individual" ], "amount_range_per_currency": [ { "maximum_amount": null, "minimum_amount": null, "payout_currency": "PHP" } // ... ] } ] }
La sección datos de esta respuesta muestra que ph_anzbank_bank es un tipo de método de desembolso aceptable para transferencias bancarias en PHP (Pesos filipinos).
Una respuesta real generalmente enumera muchos métodos de desembolso.
Debe identificar los campos requeridos para cada tipo de método de desembolso.
Para ello, utilizará Obtener campos requeridos del desembolso con los siguientes parámetros:
Descripción de los parámetros de ruta
Parámetro de ruta | Descripción |
|---|---|
tipo_de_método_de_pago | Ingrese ph_anzbank_bank como el tipo de método de desembolso. |
Descripción de los parámetros de consulta
Parámetro de consulta | Descripción |
|---|---|
país_del_remitente | Ingrese GB como el código del Reino Unido, el país del remitente. |
moneda_del_remitente | Ingrese PHP como el código de pesos filipinos, la moneda del remitente. |
país_del_beneficiario | Ingrese PH como el código de Filipinas, el país del beneficiario. |
moneda_del_desembolso | Ingrese PHP como el código de pesos filipinos, la moneda recibida por el beneficiario. |
tipo_de_entidad_del_remitente | Ingrese empresa como el tipo de entidad del remitente. |
tipo_de_entidad_del_beneficiario | Ingrese individual como el tipo de entidad del beneficiario. |
monto_del_desembolso | Ingrese 10000 como el monto recibido por el beneficiario. |
Solicitud de obtención de los campos requeridos del desembolso
Solicite el conjunto de campos requeridos para el tipo de método de desembolso ph_anzbank_bank.
Solicitud
// Request URL: GET https://sandboxapi.rapyd.net/v1/payout_methods/ph_anzbank_bank/required_fields?sender_country=GB&sender_currency=PHP&beneficiary_country=PH&payout_currency=PHP&sender_entity_type=company&beneficiary_entity_type=individual&payout_amount=10000 // Message body absent
.NET Core
using System; namespace RapydApiRequestSample { class Program { static void Main(string[] args) { try { string beneficiaryCountry = "PH"; string beneficiaryEntityType = "individual"; string payoutAmount = "10000"; string payoutCurrency = "PHP"; string senderCountry = "GB"; string senderCurrency = "PHP"; string senderEntityType = "company"; string result = RapydApiRequestSample.Utilities.MakeRequest("GET", $"/v1/payout_methods/ph_anzbank_bank/required_fields?sender_country={senderCountry}&sender_currency={senderCurrency}&beneficiary_country={beneficiaryCountry}&payout_currency={payoutCurrency}&sender_entity_type={senderEntityType}&beneficiary_entity_type={beneficiaryEntityType}&amount={payoutAmount}"); Console.WriteLine(result); } catch (Exception e) { Console.WriteLine("Error completing request: " + e.Message); } } } }
JavaScript
const makeRequest = require('../../../../../Utilities/JS/utilities').makeRequest; async function main() { try { const result = await makeRequest( 'GET', '/v1/payout_methods/ph_anzbank_bank/required_fields?sender_country=GB&sender_currency=PHP&beneficiary_country=PH&payout_currency=PHP&sender_entity_type=company&beneficiary_entity_type=individual&payout_amount=10000' ); console.log(result); } catch (error) { console.error('Error completing request', error); } }
PHP
<?php $path = $_SERVER['DOCUMENT_ROOT']; $path .= "/code_race_2020/Utilities/PHP/utilities.php"; include($path); try { $object = make_request('get', "/v1/payout_methods/ph_anzbank_bank/required_fields?sender_country=GB&sender_currency=PHP&beneficiary_country=PH&payout_currency=PHP&sender_entity_type=company&beneficiary_entity_type=individual&payout_amount=10000"); var_dump($object); } catch (Exception $e) { echo "Error: $e"; } ?>
Python
from pprint import pprint from utilities import make_request # Get Payout Required Fields request payout_method_type = 'ph_anzbank_bank' beneficiary_country = 'PH' sender_country = 'GB' beneficiary_entity_type = 'individual' sender_entity_type = 'company' payout_amount = 10000 payout_currency = 'PHP' sender_currency = 'PHP' path = f'/v1/payout_methods/{payout_method_type}/required_fields?sender_country={sender_country}&sender_currency={sender_currency}&' \ f'beneficiary_country={beneficiary_country}&payout_currency={payout_currency}&' \ f'sender_entity_type={sender_entity_type}&beneficiary_entity_type={beneficiary_entity_type}&amount={payout_amount}' results = make_request(method='get', path=path) pprint(results)
Respuesta de obtención de los campos requeridos del desembolso
Echemos un vistazo a la respuesta.
Respuesta
{ "status": { "error_code": "", "status": "SUCCESS", "message": "", "response_code": "", "operation_id": "fa3daea3-b71b-4f1d-874b-c44427be36df" }, "data": { "payout_method_type": "ph_anzbank_bank", "sender_currency": "PHP", "sender_country": "*", "sender_entity_type": "company", "beneficiary_country": "ph", "payout_currency": "PHP", "beneficiary_entity_type": "individual", "is_cancelable": 0, "is_location_specific": 0, "is_expirable": 0, "minimum_expiration_seconds": null, "maximum_expiration_seconds": null, "is_online": 0, "image": "", "status": 1, "beneficiary_required_fields": [ { "name": "first_name", "regex": "^([a-zA-Z0-9]){1,50}$)", "type": "string" }, { "name": "last_name", "regex": "^([a-zA-Z0-9]){1,50}$)", "type": "string" }, { "name": "account_number", "regex": "^([a-zA-Z0-9]){1,45}$)", "type": "string" }, { "name": "identification_type", "regex": "(work_permit|international_passport|identification_id|social_security|residence_permit|company_registered_number)", "type": "string", "description": "identification types" }, { "name": "identification_value", "regex": "^([a-zA-Z0-9]){1,30}$)", "type": "string", "description": "alphanumeric characters in length between 1-30" } ], "sender_required_fields": [ { "name": "company_name", "regex": "^([a-zA-Z0-9]){1,50}$)", "type": "string" }, { "name": "identification_type", "type": "string", "allowed_values": "company_registered_number", "description": "identification types" }, { "name": "identification_value", "regex": "^([a-zA-Z0-9]){1,30}$)", "type": "string", "description": "alphanumeric characters in length between 1-30" }, { "name": "phone_number", "regex": "^([0-9]){8,30}$", "type": "string", "description": "Phone number length between 8-30" }, { "name": "occupation", "regex": "^([a-zA-Z0-9]){1,50}$)", "type": "string" }, { "name": "source_of_income", "regex": "(business|salary|savings|loans)", "type": "string", "description": "source of income" }, { "name": "date_of_birth", "regex": "^([0-2][0-9]|(3)[0-1])(/)(((0)[0-9])|((1)[0-2]))(/)((19|20)[0-9][0-9])$", "type": "date", "description": "the date must match the following pattern: dd/mm/yyyy" }, { "name": "address", "regex": "^([a-zA-Z0-9]){2,50}$)", "type": "string" }, { "name": "purpose_code", "regex": "(investment_income|salary|insurance_payments|computer_services|real_estate_abroad|real_estate_in_host_country)", "type": "string", "description": "purpose code" }, { "name": "beneficiary_relationship", "regex": "(spouse|children|parent|sibling|brother|sister|self|friend|business partner|customer|employee|branch|subsidiary|holding|supplier)", "type": "string", "description": "beneficiary relationship" } ], // ... } }
La sección datos de esta respuesta muestra los campos requeridos para ph_bdo_bank.
Usted utilizará los campos requeridos para los objetos 'beneficiario' y 'remitente' cuando solicite a Rapyd que procese el desembolso.
Tal como se muestra en la siguiente tabla, algunos campos son obligatorios tanto para el beneficiario como para el remitente.
Beneficiario | Remitente |
|---|---|
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
|
|
| |
| |
|
Sugerencia
Utilice Validar beneficiario para verificar los campos del beneficiario antes de solicitar el desembolso. Consulte Validación de los detalles del beneficiario.
En este ejemplo, Four Star Rideshare Service es el remitente del desembolso y el conductor (el empleado) es el beneficiario que recibe el desembolso.
Cuando el gerente de nómina solicita un desembolso desde la billetera corporativa hacia la cuenta bancaria del conductor, usted solicita a Rapyd que procese el desembolso.
Para ello, utilizará Crea desembolso con los siguientes parámetros.
Descripción de los parámetros del cuerpo
Parámetro del cuerpo | Descripción |
|---|---|
ewallet | Ingrese el 'id' de la billetera que recibió cuando creó la billetera corporativa en su sandbox.Para los fines de este caso de uso, se utiliza ewallet_090e1ef18c3aa754fd43cce9ee454858, que es el ID de la billetera creado en el sandbox. |
monto_del_desembolso | Ingrese 10000 como el monto recibido por el beneficiario. |
tipo_de_método_de_desembolso | Ingrese ph_anzbank_bank como el tipo de método de desembolso. |
moneda_del_remitente | Ingrese PHP como el código de pesos filipinos, la moneda del remitente. |
país_del_remitente | Ingrese GB como el código del Reino Unido, el país del remitente. |
país_del_beneficiario | Ingrese PH como el código de Filipinas, el país del beneficiario. |
moneda_del_desembolso | Ingrese PHP como el código de pesos filipinos, la moneda recibida por el beneficiario. |
tipo_de_entidad_del_remitente | Ingrese empresa como el tipo de entidad del remitente. |
tipo_de_entidad_del_beneficiario | Ingrese individual como el tipo de entidad del beneficiario. |
beneficiario | Ingrese un objeto 'beneficiario' con los siguientes campos:
|
remitente | Ingrese un objeto 'remitente' con los siguientes campos:
|
descripción | Ingrese Desembolso de salario – de billetera a cuenta bancaria como la descripción de la transacción de desembolso. |
Usted solicita a Rapyd que procese el desembolso corporativo de 10,000 PHP (pesos filipinos) hacia la cuenta bancaria del conductor.
Solicitud
// Request URL: POST https://sandboxapi.rapyd.net/v1/payouts // Message body: { "ewallet": "ewallet_090e1ef18c3aa754fd43cce9ee454858", "payout_amount": 10000, "payout_method_type": "ph_anzbank_bank", "sender_currency": "PHP", "sender_country": "GB", "beneficiary_country": "PH", "payout_currency": "PHP", "sender_entity_type": "company", "beneficiary_entity_type": "individual", "beneficiary": { "first_name": "Test", "last_name": "Driver", "account_number": "006449956988", "identification_type": "international passport", "identification_value": "Z4703384", "phone_number": "632567000014" }, "sender": { "company_name": "Four Star Rideshare Service", "identification_type": "company registered number", "identification_value": "10207686", "phone_number": "442037443095", "occupation": "transportation", "source_of_income": "business", "date_of_birth": "31/07/1984", "address": "123 Main Street London", "purpose_code": "salary", "beneficiary_relationship": "employee" }, "description": "Salary payout - wallet to bank account" }
JavaScript
const makeRequest = require('../../../../../Utilities/JS/utilities').makeRequest; async function main() { try { const body = { ewallet: 'ewallet_090e1ef18c3aa754fd43cce9ee454858', payout_amount: 10000, payout_method_type: 'ph_anzbank_bank', sender_currency: 'PHP', sender_country: 'GB', sender_entity_type: 'company', beneficiary_country: 'PH', payout_currency: 'PHP', beneficiary_entity_type: 'individual', beneficiary: { first_name: 'John', last_name: 'Doe', account_number: '006449956988', identification_type: 'international passport', identification_value: 'Z4703384', phone_number: '632567000014' }, sender: { company_name: 'Four Star Rideshare Service', identification_type: 'company registered number', identification_value: '10207686', phone_number: '442037443095', occupation: 'transportation', source_of_income: 'business', date_of_birth: '31/07/1984', address: '123 Main Street London', purpose_code: 'salary', beneficiary_relationship: 'employee' }, description: 'Salary payout - wallet to bank account' }; const result = await makeRequest('POST', '/v1/payouts', body); console.log(result); } catch (error) { console.error('Error completing request', error); } }
PHP
<?php $path = $_SERVER['DOCUMENT_ROOT']; $path .= "/code_race_2020/Utilities/PHP/utilities.php"; include($path); $body = [ 'ewallet' => "ewallet_090e1ef18c3aa754fd43cce9ee454858", "payout_amount" => 10000, "payout_method_type" => "ph_anzbank_bank", "sender_currency" => "PHP", "sender_country" => "GB", "beneficiary_country" => "PH", "payout_currency" => "PHP", "sender_entity_type" => "company", "beneficiary_entity_type" => "individual", "beneficiary" => array( "first_name" => "John", "last_name" => "Doe", "account_number" => "006449956988", "identification_type" => "international passport", "identification_value" => "Z4703384", "phone_number" => "632567000014" ), "sender" => array( "company_name" => "Four Star Rideshare Service", "identification_type" => "company registered number", "identification_value" => "10207686", "phone_number" => "442037443095", "occupation" => "transportation", "source_of_income" => "business", "date_of_birth" => "31/07/1984", "address" => "123 Main Street London", "purpose_code" => "salary", "beneficiary_relationship" => "employee" ), "description" => "Salary payout - wallet to bank account" ]; try { $object = make_request('post', '/v1/payouts', $body); var_dump($object); } catch (Exception $e) { echo "Error: $e"; } ?>
Python
from pprint import pprint from utilities import make_request # Create Payout request beneficiary_required_fields = { "first_name": "John", "last_name": "Doe", "account_number": "006449956988", "identification_type": "international passport", "identification_value": "Z4703384", "phone_number": "632567000014" } sender_required_fields = { "company_name": "Four Star Rideshare Service", "identification_type": "company registered number", "identification_value": "10207686", "phone_number": "442037443095", "occupation": "transportation", "source_of_income": "business", "date_of_birth": "31/07/1984", "address": "123 Main Street London", "purpose_code": "salary", "beneficiary_relationship": "employee" } payout_body = { "ewallet": "ewallet_090e1ef18c3aa754fd43cce9ee454858", "payout_amount": 10000, "payout_method_type": "ph_anzbank_bank", "sender_currency": "PHP", "sender_country": "GB", "beneficiary_country": "PH", "payout_currency": "PHP", "sender_entity_type": "company", "beneficiary_entity_type": "individual", "beneficiary": beneficiary_required_fields, "sender": sender_required_fields, "description": "Salary payout - wallet to bank account" } result = make_request(method='post', path='/v1/payouts', body=payout_body) pprint(result)
Echemos un vistazo a la respuesta.
Respuesta
{ "status": { "error_code": "", "status": "SUCCESS", "message": "", "response_code": "", "operation_id": "c76de157-a222-48db-b400-aa5eab1dbe8e" }, "data": { "id": "payout_6805b889dba2250a27d977a55727e34b", "payout_type": "bank", "payout_method_type": "ph_anzbank_bank", "amount": 10000, "payout_currency": "PHP", "sender_amount": 10000, "sender_currency": "PHP", "status": "Created", "sender_country": "GB", "sender": { "id": "sender_024ef0fe5916ab6b54d99cfa9b3164ef", "country": "GB", "entity_type": "company", "address": "123 Main Street London", "name": "Four Star Rideshare Service", "date_of_birth": "31/07/1984", "phone_number": "442037443095", "company_name": "Four Star Rideshare Service", "currency": "PHP", "identification_type": "company registered number", "identification_value": "10207686", "purpose_code": "salary", "beneficiary_relationship": "employee", "source_of_income": "business", "occupation": "transportation" }, "beneficiary_country": "PH", "beneficiary": { "id": "beneficiary_39d9ddb953cdfc457d86d46fbd3aca41", "last_name": "Driver", "first_name": "Test", "country": "PH", "entity_type": "individual", "name": "Test Driver", "phone_number": "632567000014", "currency": "PHP", "identification_type": "international passport", "identification_value": "Z4703384" }, "fx_rate": 1, "instructions": { "name": "instructions", "steps": [ { "step1": "The funds will be transferred to the provided account details of the beneficiary ." } ] }, "ewallets": [ { "ewallet_id": "ewallet_090e1ef18c3aa754fd43cce9ee454858", "amount": 10000, "percent": 100 } ], "metadata": {}, "description": "Salary payout - wallet to bank account", "created_at": 1581256053, "payout_fees": null, "expiration": null, "paid_at": null, "identifier_type": null, "identifier_value": null, "error": null } }
Además de los valores de los parámetros que ingresó en la solicitud, la sección datos de esta respuesta muestra lo siguiente:
El
Iddel objeto 'desembolso' es payout_6805b889dba2250a27d977a55727e34b. Los webhooks relacionados con este desembolso hacen referencia a este ID.El tipo_de_desembolso es bancario.
En la sección
remitente:El
Ides sender_024ef0fe5916ab6b54d99cfa9b3164ef.Se enumeran los campos del objeto 'remitente'
En la sección
beneficiario:El
Ides beneficiary_39d9ddb953cdfc457d86d46fbd3aca41 .Se enumeran los campos del objeto 'beneficiario'.
El
estadoes Creado. Esto significa que el objeto de desembolso se creó correctamente y que el conductor aún no ha recibido los fondos del desembolso.El Objeto de desembolso enumera los valores posibles para elestado.Existen instrucciones que describen la transferencia de fondos hacia la cuenta bancaria del beneficiario.
Simulación de la finalización del desembolso
El sandbox no simula directamente la acción de que el beneficiario reciba los fondos del desembolso. Puede simular esta acción utilizando el procedimiento descrito en Completar desembolso. Para ello, necesitará el ID del desembolso y el monto del desembolso que generó en su sandbox.
Cuando se simula la finalización del desembolso, Rapyd envía un webhook.Configure su sistema para recibir webhooks siguiendo el procedimiento descrito en Definición de un endpoint de webhook.
Después de simular que la cuenta bancaria del conductor fue acreditada con su salario, Rapyd le envía el Webhook: Desembolso completado. Este webhook confirma que el desembolso se completó correctamente.
¿Busca información técnica más detallada?
¿Desea ver los métodos y objetos de la API de Rapyd que utilizará?Visite la Merchant API Reference para obtener más detalles técnicos.