Pago de cuenta bancaria
Envía fondos directamente a una cuenta bancaria. | Empresa
Rapyd facilita a los empleadores el pago de los salarios de los empleados. Un empleador puede transferir el pago de un salario del monedero de un cliente directamente a la cuenta bancaria de un empleado
Consideremos un caso en el que Four Star Rideshare Service, tu servicio de viajes compartidos, tiene un sitio web o una aplicación móvil registrados en la plataforma Rapyd.
Su gerente de nómina usa una billetera de la empresa Rapyd para pagar a sus conductores. Se crea una cartera tal y como se describe en Creación de una billetera Rapyd.
En tu sitio web, tu administrador de nóminas solicita el pago de uno de los salarios de tu conductor desde la cartera de la empresa a la cuenta bancaria del conductor. El back-end de tu sitio web le pide a Rapyd que procese el pago. Rapyd procesa el pago con el banco. La plataforma Rapyd notifica al back-end de tu sitio web cuando el pago se ha completado correctamente.
La búsqueda de los métodos de pago bancarios específicos que coincidan con el país y la moneda que aceptarás se describe en ¿Cómo funciona.

En tu sitio web, tu administrador de nóminas solicita el pago del salario de un empleado.
El back-end del sitio web le pide a Rapyd que procese el pago.

Rapyd procesa el pago.
El banco acredita en la cuenta bancaria del empleado el dinero del monedero de la empresa.
Se notifica a Rapyd que el dinero se acreditó en la cuenta bancaria.
El back-end del sitio web recibe la confirmación de Rapyd de que se completó el pago.
Los siguientes diagramas de secuencia de mensajes describen cómo se intercambia la información entre Rapyd, el comerciante y el banco.
Crear un pago bancario: éxito
Crear pago bancario: error
Prerrequisitos
Para ejecutar los ejemplos de este caso de uso, debe crear el siguiente ID en su propio sandbox:
monedero electrónico - Corre Crea una billetera para la cartera empresarial del servicio de viajes compartidos. Usa el identificador que aparece en la respuesta
Para tu página de pago, necesitas encontrar los tipos de métodos de pago que coincidan con tus criterios, como la moneda y la categoría de pago (por ejemplo: banco).
En este ejemplo, encontrarás tipos de métodos de pago que admiten transferencias bancarias en PHP (pesos filipinos).
Para eso, utilizarás Enumere los tipos de métodos de pago con los siguientes parámetros:
Descripción de los parámetros de consulta
Parámetro de consulta | Descripción |
|---|---|
categoría | Entrar banco como categoría del método de pago. |
país_beneficiario | Entrar PH como código para Filipinas, el país del beneficiario. |
divisa_de_pago | Entrar PHP como código para los pesos filipinos, la moneda recibida por el beneficiario. |
Solicitud de tipos de métodos de pago de listas
Solicita una lista de todos los tipos de métodos de pago 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"; } ?>
Pitón
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)
Lista de tipos de métodos de pago y respuesta
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" } // ... ] } ] }
El datos la sección de esta respuesta muestra que ph_anzbank_bank es un tipo de método de pago aceptable para transferencias bancarias en PHP (Pesos filipinos).
Una respuesta real suele incluir muchos métodos de pago.
Debes encontrar los campos obligatorios para cada tipo de método de pago.
Para eso, utilizarás Obtenga los campos obligatorios de pago 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 | Entrar ph_anzbank_bank como tipo de método de pago. |
Descripción de los parámetros de consulta
Parámetro de consulta | Descripción |
|---|---|
país del remitente | Entrar GB como código para el Reino Unido, el país del remitente. |
divisa del remitente | Entrar PHP como código para los pesos filipinos, la moneda del remitente. |
país_beneficiario | Entrar PH como código para Filipinas, el país del beneficiario. |
divisa_de_pago | Entrar PHP como código para los pesos filipinos, la moneda recibida por el beneficiario. |
tipo_de_entidad_remitente | Entrar empresa como el tipo de entidad para el remitente. |
tipo_de_entidad_beneficiaria | Entrar individual como el tipo de entidad para el beneficiario. |
importa_desembolso | Entrar 10000 como la cantidad recibida por el beneficiario. |
Solicitud de campos obligatorios para obtener el pago
Solicita el conjunto de campos obligatorios para ph_anzbank_bank tipo de método de pago.
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"; } ?>
Pitón
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)
Obtener respuesta de campos obligatorios de pago
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" } ], // ... } }
El datos la sección de esta respuesta muestra los campos obligatorios para ph_bdo_bank.
Cuando pidas a Rapyd que procese el pago, utilizarás los campos obligatorios para las objeciones de «beneficiario» y «remitente».
Como se muestra en la tabla siguiente, algunos campos son obligatorios tanto para el beneficiario como para el remitente.
Beneficiario | Remitente |
|---|---|
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
|
|
| |
| |
|
Sugerencia
Utilice Validar beneficiario para comprobar los campos del beneficiario antes de solicitar el pago. Consulte Validación de los detalles del beneficiario .
En este ejemplo, Four Star Rideshare Service es el remitente del pago y el conductor (el empleado) es el beneficiario que recibe el pago.
Cuando tu gestor de nóminas solicita un pago del monedero de la empresa a la cuenta bancaria del conductor, le pides a Rapyd que procese el pago.
Para eso, utilizarás Crea Payout con los siguientes parámetros:
Descripción de los parámetros corporales
Parámetro corporal | Descripción |
|---|---|
monedero electrónico | Introduce el «identificador» de la cartera que recibiste cuando creaste la cartera de la empresa en tu entorno de pruebas. Para los fines de esta lección de casos de uso, estamos usando ewallet_090e1ef18c3aa754fd43cce9ee454858, que es el identificador de monedero que hemos creado en nuestra zona de pruebas. |
importa_desembolso | Entrar 10000 como la cantidad recibida por el beneficiario. |
tipo_de_método de pago | Entrar ph_anzbank_bank como tipo de método de pago. |
divisa del remitente | Entrar PHP como código para los pesos filipinos, la moneda del remitente. |
país del remitente | Entrar GB como código para el Reino Unido, el país del remitente. |
país_beneficiario | Entrar PH como código para Filipinas, el país del beneficiario. |
divisa_de_pago | Entrar PHP como código para los pesos filipinos, la moneda recibida por el beneficiario. |
tipo_de_entidad_remitente | Entrar empresa como el tipo de entidad para el remitente. |
tipo_de_entidad_beneficiaria | Entrar individual como el tipo de entidad para el beneficiario. |
beneficiario | Introduzca un objeto «beneficiario» que tenga los siguientes campos:
|
remitente | Introduzca un objeto «remitente» que tenga los siguientes campos:
|
descripción | Entrar Pago del salario: del monedero a la cuenta bancaria como descripción de la transacción de pago. |
Le pides a Rapyd que procese el pago de 10.000 PHP (pesos filipinos) de tu empresa a 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"; } ?>
Pitón
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 ha introducido en la solicitud, el datos la sección de esta respuesta muestra:
El
Idsi el objeto de «pago» es payout_6805b889dba2250a27d977a55727e34b. Los webhooks relacionados con este pago hacen referencia a este IDEl
payout_typees banco.Bajo
remitente:El
Ides sender_024ef0fe5916ab6b54d99cfa9b3164ef.Se muestran los campos del objeto «remitente».
Bajo
beneficiario:El
Ides beneficiary_39d9ddb953cdfc457d86d46fbd3aca41 .Se muestran los campos del objeto «beneficiario».
El
estadoes Creado. Esto significa que el objeto de «pago» se creó correctamente y que el conductor aún no recibió los fondos de pago Objeto de pago enumera los valores posibles paraestado.Hay instrucciones que describen la transferencia de fondos a la cuenta bancaria del beneficiario.
Simulación de la finalización de un pago
El sandbox no simula directamente la acción del beneficiario que recibe los fondos de pago. Puede simular esta acción con Desembolso completo. Para ello, necesitarás el ID de pago y el importe de pago que generaste en tu
Cuando se simula la finalización de un pago, Rapyd envía un webhook. Configura tu sistema para recibir webhooks Definición de un endpoint de webhook.
Tras simular que se acreditó su salario en la cuenta bancaria del conductor, Rapyd te envía Webhook: pago completado. El webhook confirma que se completó el pago
¿Busca información técnica más detallada?
¿Quieres ver los métodos y objetos de la API de Rapyd que utilizarás? Merchant API Reference para obtener más detalles técnicos.