Pago con FX
Pague a sus empleados en la moneda correcta. | Empresarial
Rapyd facilita que los empleadores paguen a sus empleados en moneda extranjera. El empleador tiene la opción de confirmar la FX tasa antes de que se complete el pago.
Los casos de uso comunes pueden incluir:
Una plataforma de conciertos paga a un banco extranjero de un trabajador en la moneda que prefiera por un proyecto terminado
Su empresa comienza a contratar trabajadores a través de las fronteras y se ofrece a pagar en su moneda
Actualización: puede realizar un pago con FX con el lado del remitente fijo
En el ejemplo actual, mostramos un pago de divisas con un valor fijo beneficiario cantidad. La API de pago de Rapyd también permite fijar el importe del remitente (débito).
Por ejemplo, el remitente quiere pagar 1000 USD y el beneficiario recibirá la cantidad equivalente de BGN (lev búlgaro), según el tipo de cambio actual.
Nota: Para completar el pago con FX sin necesidad de realizar una segunda llamada a la API, puedes configurar confirmar_automáticamente para cierto.
Su plataforma de conciertos utiliza la cartera de cliente, que está en USD (dólares estadounidenses). Uno de los trabajadores vive en Bulgaria y necesita que le paguen en BGN (lev búlgaro)

Solicitas el pago del salario de la cuenta en USD de tu monedero a la cuenta bancaria en BGN del empleado con Crea un pago.
Rapyd procesa la solicitud y te envía el tipo de cambio.
Confirmas el tipo de cambio con Confirma el pago con FX.
Rapyd procesa el pago a la cuenta bancaria de los empleados y te envía una respuesta.
Recibirás la confirmación de pago. Cuando el banco confirme la recepción de los fondos, también recibirás un webhook
Los siguientes diagramas de secuencia de mensajes describen cómo se intercambia la información entre Rapyd, el comerciante y el beneficiario.
Crea un pago con FX - Confirmación automática
Crea un pago con FX - Confirmación manual
El siguiente diagrama de estados finitos resume los estados de los pagos con FX.
Descripción de los estados
Estado | Descripción |
|---|---|
Creado | Se creó el pago. |
Pendiente | El pago se está procesando. Se debe confirmar el tipo |
Confirmación | El beneficiario ha recibido los fondos de pago. |
Completado | El pago se ha completado. El beneficiario ha recibido los fondos del pago. |
Cancelado | Se canceló el pago. |
Error | El pago no se ha creado o el pago ha fallado. |
Expirado | El pago ha caducado. |
Prerrequisitos
Para ejecutar los ejemplos de este caso de uso, debe ejecutar las siguientes llamadas a la API:
'ewallet' - Ejecutar Crea un monedero para la cartera del servicio de viajes compartidos. Usa la «identificación» que aparece en la respuesta. Para obtener más información, consulte Creación de una billetera Rapyd.
tipo_de_método de pago- Corre Enumere los tipos de métodos de pago para obtener los tipos de métodos de pago disponibles para el país que deseas. En este ejemplo, utilizamos BulgariaBG).Campos obligatorios - Corre Obtenga los campos obligatorios de pago para obtener los campos obligatorios para el beneficiario, el remitente y el pago en sí. En este ejemplo, utilizamos bg_general_bank.
Nota: Si no es necesaria la confirmación de la tarifa, puedes realizar toda la operación de pago automáticamente. Establecer confirmación_automática a verdadero.
Nota: Puede comprobar el tipo de cambio actual con Obtenga el tipo de cambio.
El administrador de nóminas solicita un pago en USD (dólares estadounidenses) por enviar 2000 BGN (lev búlgaro) a la cuenta bancaria del empleado.
Para eso, usas Crea Payout con los siguientes parámetros:
Descripción de los parámetros corporales
Parámetro corporal | Descripción |
|---|---|
beneficiario | Complete el objeto «beneficiario» con los siguientes detalles:
|
país_beneficiario | Entrar BG como código de país del beneficiario. |
tipo_de_entidad_beneficiaria | Entrar individual como el tipo de entidad para el beneficiario. |
confirmar_automáticamente | Entrar falso para indicar que se requiere una confirmación manual. |
descripción | Entrar Salario como la descripción. |
monedero electrónico | Introduce el «identificador» de la cartera que recibiste cuando creaste la cartera en tu entorno de pruebas. Para los fines de esta lección de casos de uso, estamos usando ewallet_82dd0417a86aebb564da2f96936ce2d2, que es el identificador de la cartera que hemos creado en nuestra zona de pruebas. |
importa_desembolso | Entrar 2000 como la cantidad de moneda a comprar, en unidades del buy_currency. |
divisa_de_pago | Entrar BGN como moneda de pago. Un código ISO 4217 de tres letras para la divisa que se va a comprar |
tipo_de_método de pago | Entrar bg_general_bank como tipo de método. Enumere los tipos de métodos de pago y Obtenga los campos obligatorios de pago. |
remitente | Rellene el objeto «remitente» con los siguientes detalles:
|
país del remitente | Entrar BG como código de país para Bulgaria. |
divisa del remitente | Entrar USD como moneda del remitente. |
tipo_de_entidad_remitente | Entrar empresa como tipo de entidad remitente. |
Le pides a Rapyd que procese el pago del administrador de nóminas de 2000 BGN (lev búlgaro) a la cuenta bancaria del empleado.
Crear solicitud de pago
Solicitud
// Request URL: POST https://sandboxapi.rapyd.net/v1/payouts // Message body: { "beneficiary": { "payment_type": "priority", "address": "456 Second Street", "city": "Plovdiv", "first_name": "Test", "last_name": "Employee", "iban": "DE3376599444263666923298", "bic_swift": "BUINBGSF" }, "beneficiary_country": "BG", "beneficiary_entity_type": "individual", "confirm_automatically": false, "description": "Salary", "ewallet": "ewallet_82dd0417a86aebb564da2f96936ce2d2", "payout_amount": "2000", "payout_currency": "BGN", "payout_method_type": "bg_general_bank", "sender": { "first_name": "Test", "last_name": "Manager", "address": "123 First Street", "city": "Sofia", "date_of_birth": "22/02/1980" }, "sender_country": "BG", "sender_currency": "USD", "sender_entity_type": "company" }
.NET Core
using System; using System.Text.Json; namespace RapydApiRequestSample { class Program { static void Main(string[] args) { try { var requestObj = new { beneficiary = new { payment_type = "priority", address = "456 Second Street", city = "Plovdiv", first_name = "John", last_name = "Doe", iban = "DE3376599444263666923298", bic_swift = "BUINBGSF" }, beneficiary_country = "BG", beneficiary_entity_type = "individual", confirm_automatically = false, description = "Salary", ewallet = "ewallet_82dd0417a86aebb564da2f96936ce2d2", payout_amount = "2000", payout_currency = "BGN", payout_method_type = "bg_general_bank", sender = new { first_name = "Jane", last_name = "Doe", address = "123 First Street", city = "Sofia", date_of_birth = "22/02/1980" }, sender_country = "BG", sender_currency = "USD", sender_entity_type = "company" }; string request = JsonSerializer.Serialize(requestObj); string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/payouts", request); Console.WriteLine(result); } catch (Exception e) { Console.WriteLine("Error completing request: " + e.Message); } } } }
JavaScript
const makeRequest = require('<path-to-your-utility-file>/utilities').makeRequest; async function main() { try { const body = { beneficiary: { payment_type: 'priority', address: '456 Second Street', city: 'Plovdiv', first_name: 'John', last_name: 'Doe', iban: 'DE3376599444263666923298', bic_swift: 'BUINBGSF' }, beneficiary_country: 'BG', beneficiary_entity_type: 'individual', confirm_automatically: false, description: 'Salary', ewallet: 'ewallet_82dd0417a86aebb564da2f96936ce2d2', payout_amount: '2000', payout_currency: 'BGN', payout_method_type: 'bg_general_bank', sender: { first_name: 'Jane', last_name: 'Doe', address: '123 First Street', city: 'Sofia', date_of_birth: '22/02/1980' }, sender_country: 'BG', sender_currency: 'USD', sender_entity_type: 'company' }; 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 .= "/<path-to-your-utility-file>/utilities.php"; include($path); $body = [ "beneficiary" => array( "payment_type" => "priority", "address" => "456 Second Street", "city" => "Plovdiv", "first_name" => "John", "last_name" => "Doe", "iban" => "DE3376599444263666923298", "bic_swift" => "BUINBGSF" ), "beneficiary_country" => "BG", "beneficiary_entity_type" => "individual", "confirm_automatically" => false, "description" => "Salary", "ewallet" => "ewallet_82dd0417a86aebb564da2f96936ce2d2", "payout_amount" => "2000", "payout_currency" => "BGN", "payout_method_type" => "bg_general_bank", "sender" => array( "first_name" => "Jane", "last_name" => "Doe", "address" => "123 First Street", "city" => "Sofia", "date_of_birth" => "22/02/1980" ), "sender_country" => "BG", "sender_currency" => "USD", "sender_entity_type" => "company" ]; 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 beneficiary_fields = { "payment_type": "priority", "address": "456 Second Street", "city": "Plovdiv", "first_name": "John", "last_name": "Doe", "iban": "DE3376599444263666923298", "bic_swift": "BUINBGSF" } sender_fields = { "first_name": "Jane", "last_name": "Doe", "address": "123 First Street", "city": "Sofia", "date_of_birth": "22/02/1980" } payout_body = { "beneficiary": beneficiary_fields, "beneficiary_country": "BG", "beneficiary_entity_type": "individual", "confirm_automatically": False, "description": "Salary", "ewallet": "ewallet_82dd0417a86aebb564da2f96936ce2d2", "payout_amount": "2000", "payout_currency": "BGN", "payout_method_type": "bg_general_bank", "sender": sender_fields, "sender_country": "BG", "sender_currency": "USD", "sender_entity_type": "company" } result = make_request(method='post', path='/v1/payouts', body=payout_body) pprint(result)
Crear respuesta de pago
Echemos un vistazo a la respuesta.
Respuesta
{ "status": { "error_code": "", "status": "SUCCESS", "message": "", "response_code": "", "operation_id": "77745716-89fc-4313-abbe-162a4d25f12f" }, "data": { "id": "payout_56010c333d71789b6110fd36bc5066ca", "payout_type": "bank", "payout_method_type": "bg_general_bank", "amount": 2000, "payout_currency": "BGN", "sender_amount": 1191.1, "sender_currency": "USD", "status": "Confirmation", "sender_country": "BG", "sender": { "last_name": "Manager", "first_name": "Test", "country": "BG", "entity_type": "company", "address": "123 First Street", "name": "Test Manager", "date_of_birth": "22/02/1980", "city": "Sofia", "currency": "USD" }, "beneficiary_country": "BG", "beneficiary": { "last_name": "Employee", "first_name": "Test", "country": "BG", "entity_type": "individual", "address": "456 Second Street", "name": "Test Employee", "city": "Plovdiv", "currency": "BGN", "bic_swift": "BUINBGSF", "iban": "DE3376599444263666923298", "payment_type": "priority" }, "fx_rate": 0.59555, "instructions": { // ... }, "ewallets": [ { "ewallet_id": "ewallet_82dd0417a86aebb564da2f96936ce2d2", "amount": 1191.1, "percent": 100 } ], "metadata": {}, "description": "Salary" // ... } }
El datos la sección de esta respuesta muestra:
El
Idsi el objeto de «pago» es payout_56010c333d71789b6110fd36bc5066ca. Cuando ejecutes este ejemplo en tu propia zona de pruebas, obtendrás un ID diferente, que necesitarás para un paso posterior en este caso prácticoEl
fx_ratees 0.59555.
Cuando recibas la respuesta, dispones de poco tiempo para aprobar el tipo de cambio. El tiempo exacto varía de un método de pago a otro.
Confirme la solicitud de pago
Para confirmar el pago, usa Confirme el pago con FX con los siguientes parámetros:
Descripción de los parámetros de ruta
Parámetro de ruta | Descripción |
|---|---|
ID de pago | Introduce el «identificador» de pago que recibiste cuando creaste el pago en tu entorno de pruebas. Para los fines de esta lección de casos de uso, estamos usando payout_56010c333d71789b6110fd36bc5066ca, que es el identificador del pago que hemos creado en nuestra zona de pruebas. |
Solicitud
// Request URL: POST https://sandboxapi.rapyd.net/v1/payouts/confirm/payout_56010c333d71789b6110fd36bc5066ca // Message body absent.
.NET Core
using System; namespace RapydApiRequestSample { class Program { static void Main(string[] args) { try { string payout = "payout_56010c333d71789b6110fd36bc5066ca"; string result = RapydApiRequestSample.Utilities.MakeRequest("POST", $"/v1/payouts/confirm/{payout}"); Console.WriteLine(result); } catch (Exception e) { Console.WriteLine("Error completing request: " + e.Message); } } } }
JavaScript
const makeRequest = require('<path-to-your-utility-file>/utilities').makeRequest; async function main() { try { const body = {}; const result = await makeRequest( 'POST', '/v1/payouts/confirm/payout_56010c333d71789b6110fd36bc5066ca', body ); console.log(result); } catch (error) { console.error('Error completing request', error); } }
PHP
<?php $path = $_SERVER['DOCUMENT_ROOT']; $path .= "/<path-to-your-utility-file>/utilities.php"; include($path); try { $object = make_request('post', '/v1/payouts/confirm/payout_56010c333d71789b6110fd36bc5066ca'); var_dump($object); } catch (Exception $e) { echo "Error: $e"; } ?>
Pitón
from pprint import pprint from utilities import make_request payout = 'payout_56010c333d71789b6110fd36bc5066ca' results = make_request(method='post', path=f'/v1/payouts/confirm/{payout}') pprint(results)
Confirme la respuesta de pago
Echemos un vistazo a la respuesta.
Respuesta
{ "status": { "error_code": "", "status": "SUCCESS", "message": "", "response_code": "", "operation_id": "bb05d0a9-295d-4cad-958c-e20dd8dbe461" }, "data": { "id": "payout_89a8df5e8716b9785f4f1de42e453bac", "payout_type": "bank", "payout_method_type": "bg_general_bank", "amount": 2000, "payout_currency": "BGN", "sender_amount": 1191.1, "sender_currency": "USD", "status": "Created", "sender_country": "BG", "sender": { "id": "sender_4bc400c5c08fd6e6d4655d5ddef73e4e", "last_name": "Manager", "first_name": "Test", "country": "BG", "entity_type": "company", "address": "123 First Street", "name": "Test Manager", "date_of_birth": "22/02/1980", "city": "Sofia", "currency": "USD" }, "beneficiary_country": "BG", "beneficiary": { "id": "beneficiary_97f8a3c6955967280a11223f7c3114ca", "last_name": "Employee", "first_name": "Test", "country": "BG", "entity_type": "individual", "address": "456 Second Street", "name": "Test Employee", "city": "Plovdiv", "currency": "BGN", "bank_name": "Test Employee", "bic_swift": "BUINBGSF", "iban": "DE3376599444263666923298", "payment_type": "priority" }, "fx_rate": 0.59555, "instructions": { // ... } ], "ewallets": [ { "ewallet_id": "ewallet_82dd0417a86aebb564da2f96936ce2d2", "amount": 1191.1, "percent": 100 } ], "metadata": {}, "description": "Salary", "created_at": 1583676917, // ... } }
El datos la sección de esta respuesta muestra:
estado- Creado - Esto indica que el proceso de pago ha comenzado.cantidad- La cantidad de dinero que se transferirá a la cuenta bancaria del empleado, 2000 BGN.divisa_de_pago- La moneda enviada a la cuenta bancaria del empleado, BGN.divisa del remitente- La moneda de su cuenta de eWallet, USD.creado en- La hora en que se creó el pago, en tiempo de Unix.
El carteras el objeto muestra la siguiente información:
ewallet_id- El identificador del monedero de tu empresa.cantidad- El importe de USD tomado de tu billetera, 1191,10 USD.
Simulación de la finalización de un pago
El caja de arena no simula directamente la acción del beneficiario que recibe los fondos de pago. Puede simular esta acción con el procedimiento descrito en 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
Después de simular que el banco del empleado finaliza la recepción de su salario, Rapyd le envía Webhook: pago completado. Para indicar que el pago se completó, el estado el campo cambia a Completado.
¿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.