Skip to main content

Documentación

Débito directo bancario

Retire fondos directamente de las cuentas bancarias de sus clientes.

El débito directo bancario es un retiro autorizado desde la cuenta bancaria del cliente.Los débitos directos se utilizan normalmente en transacciones recurrentes como pagos de facturas, membresías y suscripciones. La funcionalidad de débito directo solo está disponible en países seleccionados donde esta capacidad existe como parte de la red bancaria.

Esquemas populares compatibles con débito directo

  • Bacs en el Reino Unido.

  • ACH en Estados Unidos

  • BECs en Australia.

  • GIRO en Singapur.

  • SEPA en la Unión Europea. Consulte la lista de países compatibles con SEPA (Debe estar domiciliado en uno de estos países para poder aceptar pagos SEPA):

    Andorra, Austria, Bélgica, Bulgaria, Chipre, República Checa, Dinamarca, Estonia, Finlandia, Francia, Alemania, Gibraltar, Grecia, Santa Sede, Hungría, Irlanda, Islandia, Italia, Liechtenstein, Lituania, Luxemburgo, Mónaco, Malta, Países Bajos, Noruega, Polonia, Portugal, Rumania, San Marino, España, Eslovenia, Suecia, Suiza

El proceso de débito directo explicado a continuación permite

  • Agregar pagos por débito directo a su flujo de trabajo empresarial

  • Crear una solicitud de pago por débito directo.

  • Capturar la respuesta del pago.

Reglas de la Red Rapyd

Los participantes de la Red Rapyd están sujetos a las Reglas de la red Rapyd. Cualquier uso o participación en la Red Rapyd que no esté cubierto por las Reglas de la Red Rapyd se regirá por los acuerdos de participación aplicables y la documentación asociada.

El siguiente ejemplo representa el flujo de una página de pago con débito directo ACH.

Formulario de prueba de autorización

El cliente debe firmar un formulario de prueba de autorización que cumpla con las reglas de la red ACH de Rapyd. Para más información, consulte la sección 13 – Entradas ACH iniciadas vía web de las Reglas de la Red Rapyd. Debe conservar una copia de este formulario en sus registros.

  1. Ingrese la información de su cuenta bancaria.

  2. Haga clic en Realizar pedido.

    6480836ea645b.png
  3. Siga las instrucciones de pago para completar el pago.

  4. Haga clic en Finalizar.

    64808371849b9.png

La forma de encontrar los métodos específicos de débito directo bancario que aceptará y los campos requeridos que los clientes deben completar se describe en Cómo funciona.

first-time-sepa.jpg
  1. El cliente selecciona el pago SEPA.

  2. Usted solicita a Rapyd que procese la solicitud.

  3. Rapyd procesa la solicitud y envía la URL de redirección.

  4. Usted presenta la URL de redirección al cliente.

  5. El cliente firma el mandato SEPA.

process-sepa.jpg
  1. El cliente completa el pago mediante transferencia bancaria ACH.

  2. El backend de su sitio web solicita a Rapyd que procese el pago ACH.

  3. Rapyd procesa el pago y responde con los detalles de la transacción.

  4. Rapyd notifica al backend del sitio web cuando el pago se completa correctamente.

Decida qué métodos de débito directo bancario aceptará, para que el cliente pueda seleccionarlos en su página de pago. Para ello, utilice Listar métodos de pago por país con los siguientes parámetros:

  • Los países disponibles pueden consultarse mediante la llamada a la API Lista de países.

  • Para fines ilustrativos, se utilizan US y USD como país y moneda en los códigos de ejemplo a continuación. US ACH es el tipo de pago por débito directo.

Descripción de los parámetros de consulta

Parámetro de consulta

Descripción

país

Ingrese US como el código de país ISO ALPHA-2 para Estados Unidos.

moneda

Ingrese USD como el código de moneda para dólares estadounidenses.

    • Solicitud

      • // Request URL: GET https://sandboxapi.rapyd.net/v1/payment_methods/country?country=US&currency=USD
        
        // Message body absent
    • .NET Core

      • using System;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string country = "US";
                        string currency = "USD";
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("GET", $"/v1/payment_methods/country?country={country}&currency={currency}");
        
                        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 result = await makeRequest('GET', '/v1/payment_methods/country?country=US&currency=USD');
        
            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('get', '/v1/payment_methods/country?country=US&currency=USD');
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
        
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        country = 'US'
        currency = 'USD'
        results = make_request(method='get',
                               path=f'/v1/payment_methods/country?country={country}&currency={currency}')
        pprint(results))
        
        
Respuesta del listado de métodos de pago por país

Listar métodos de pago por país describe los campos incluidos en la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "90ebf1ec-9e40-49f6-9175-b3a764ab3cd0"
            },
            "data": [
                {
                    "type": "us_ach_bank",
                    "name": "Evolve Bank & Trust ",
                    "category": "bank_transfer",
                    "image": "https://iconslib.rapyd.net/checkout/us_ach_bank.png",
                    "country": "us",
                    "payment_flow_type": "bank_transfer",
                    "currencies": [
                        "USD"
                    ],
                    "status": 1,
                    "is_cancelable": false,
                    "payment_options": [],
                    "is_expirable": false,
                    "is_online": false,
                    "minimum_expiration_seconds": null,
                    "maximum_expiration_seconds": null
                }
            ]
        }
        

La sección datos de esta respuesta muestra que us_ach_bank es un método de pago compatible.

Respuesta del listado de métodos de pago

Una respuesta completa de la API enumera muchos métodos de pago.

Identifique los campos que su cliente debe completar para el método de pago. Para hacerlo, utilice Obtener campos requeridos del método de pago con el siguiente parámetro:

Descripción de los parámetros de ruta

Parámetro de ruta

Descripción

tipo

Ingrese us_ach_bank como el tipo de método de pago.

Solicite el conjunto de campos requeridos para un pago us_ach_bank.

    • Solicitud

      • // Request URL: GET https://sandboxapi.rapyd.net/v1/payment_methods/us_ach_bank/required_fields
        
        // Message body absent
    • .NET Core

      • using System;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string type = "us_ach_bank";
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("GET", $"/v1/payment_methods/{type}/required_fields");
        
                        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 result = await makeRequest('GET', '/v1/payment_methods/us_ach_bank/required_fields');
        
            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('get', '/v1/payment_methods/us_ach_bank/required_fields');
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
        
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        payment_method = 'us_ach_bank'
        results = make_request(method='get',
                               path=f'/v1/payment_methods/us_ach_bank/required_fields')
        pprint(results)
        

Obtener campos requeridos del método de pago describe los campos incluidos en la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "058bc78e-49aa-4370-b0b4-3635950173ac"
            },
            "data": {
                "type": "us_ach_bank",
                "fields": [
                    {
                        "name": "proof_of_authorization",
                        "type": "boolean",
                        "regex": "",
                        "description": "",
                        "is_required": true,
                        "is_updatable": false
                    },
                    {
                        "name": "first_name",
                        "type": "string",
                        "regex": "",
                        "description": "",
                        "is_required": false,
                        "is_updatable": false
                    },
                    {
                        "name": "last_name",
                        "type": "string",
                        "regex": "",
                        "description": "",
                        "is_required": false,
                        "is_updatable": false
                    },
                    {
                        "name": "company_name",
                        "type": "string",
                        "regex": "",
                        "description": "",
                        "is_required": false,
                        "is_updatable": false
                    },
                    {
                        "name": "routing_number",
                        "type": "string",
                        "regex": "^([0-9]){9,9}$",
                        "description": "",
                        "is_required": true,
                        "is_updatable": false
                    },
                    {
                        "name": "payment_purpose",
                        "type": "string",
                        "regex": "(PAYMENT|VENDOR PMT)",
                        "description": "",
                        "is_required": true,
                        "is_updatable": false
                    },
                    {
                        "name": "account_number",
                        "type": "string",
                        "regex": "^([0-9]){1,34}$",
                        "description": "",
                        "is_required": true,
                        "is_updatable": false
                    }
                ],
                "payment_method_options": [],
                "payment_options": [],
                "minimum_expiration_seconds": null,
                "maximum_expiration_seconds": null
            }
        }
           
        

La sección datos de esta respuesta muestra que los siguientes campos son obligatorios para un pago us_ach_bank.

  • prueba_de_autorización

  • número_de_ruta

  • propósito_del_pago

  • número_de_cuenta

Los siguientes campos son opcionales:

  • nombre

  • apellido

  • nombre_empresa

Cuando su cliente paga un préstamo en su sitio web, cree una solicitud denominada Crea un pago, utilizando los siguientes parámetros, para que Rapyd procese el pago mediante transferencia bancaria ACH.

Descripción de los parámetros del cuerpo

Parámetro del cuerpo

Descripción

monto

Ingrese 2100 como el monto del pago.

moneda

Ingrese USD como el código de moneda para dólares estadounidenses.

método_de_pago

Ingrese un objeto con los siguientes campos:

  • tipo - us_ach_bank

  • prueba_de_autorización - verdadero. (indica que el cliente completó un formulario de prueba de autorización bancaria)

  • nombre - Prueba

  • apellido - Usuario

  • nombre_empresa - Acme

  • número_de_ruta - 123UA34599

  • propósito_del_pago - Pago del préstamo

  • número_de_cuenta - USA_2340234-098-0908g

Solicite a Rapyd que procese el pago de su cliente por 2,100.00 USD como una transferencia bancaria ACH.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payments
        
        // Message body: 
        {
            "amount": 2100,
            "currency": "USD",
            "payment_method": {
                "type": "us_ach_bank",
                "fields": {
                    "proof_of_authorization": true,
                    "first_name": "Test",
                    "last_name": "User",
                    "company_name": "Acme",
                    "routing_number": "123UA34599",
                    "payment_purpose": "Loan payment",
                    "account_number": "USA_2340234-098-0908g"
                }
            }
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            amount = 2100,
                            currency = "USD",
                            payment_method = new
                            {
                                type = "us_ach_bank",
                                fields = new
                                {
                                    proof_of_authorization = true,
                                    first_name = "Test",
                                    last_name = "User",
                                    company_name = "Acme",
                                    routing_number = "123UA34599",
                                    payment_purpose = "Loan payment",
                                    account_number = "USA_2340234-098-0908g",
                                }
                            }
                        };
        
                        string request = JsonSerializer.Serialize(requestObj);
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/payments", 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 = {
              amount: 2100,
              currency: 'USD',
              payment_method: {
                type: 'us_ach_bank',
                fields: {
                  proof_of_authorization: true,
                  first_name: 'Test',
                  last_name: 'User',
                  company_name: 'Acme',
                  routing_number: '123UA34599',
                  payment_purpose: 'Loan payment',
                  account_number: 'USA_2340234to098to0908g'
                }
              }
            };
            const result = await makeRequest('POST', '/v1/payments', body);
        
            console.log(result);
          } catch (error) {
            console.error('Error completing request', error);
          }
        }
        
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        payment_body = {
              "amount": 2100,
              "currency": "USD",
              "payment_method": {
                  "type": "us_ach_bank",
                  "fields": {
                     "proof_of_authorization": true,
                      "first_name": "Test",
                      "last_name": "User",
                      "company_name": "Acme",
                      "routing_number": "123UA34599",
                      "payment_purpose": "Loan payment",
                      "account_number": "USA_2340234to098to0908g"
                }
              }
            }
        
        create_payment_response = make_request(method='post',
                                               path='/v1/payments',
                                               body=payment_body)
        pprint(create_payment_response)
        pprint(results)
        

Crear pago describe los campos incluidos en la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "3ae269bc-11ff-477b-9f2a-ce69786876dc"
            },
            "data": {
                "id": "payment_a7ed3e41026614bc9e1d50981c099e07",
                "amount": 0,
                "original_amount": 2100,
                
        //      ...          
                  
                "currency_code": "USD",
                "country_code": "us",
                "status": "ACT",
        
                //      ...
        
                "customer_token": "cus_722c2234e6f83c5249b5376d743737cc",
                "payment_method": "other_1a06a5f97f4b0ff901d61f3ea704b296",
        
                //      ...
        
                "created_at": 1583408200,
        
                //      ...
        
                "paid": false,
        
                //      ...
        
                "payment_method_type": "us_ach_bank",
                "payment_method_type_category": "bank_transfer",
        
                //      ...
        
            }
        }
           
        

La sección datos de esta respuesta muestra lo siguiente:

  • El id del pago es payment_a7ed3e41026614bc9e1d50981c099e07. Cuando ejecute este proceso en su propio sandbox, obtendrá un ID diferente, el cual necesitará para un paso posterior.

  • El monto_original del pago es 2100. Necesitará este valor para un paso posterior.

  • El código_de_moneda es USD .

  • El estado es ACT. Esto significa que el proceso de pago está activo y en espera de completarse. El Objeto de pago enumera los valores posibles para el estado.

Simulación de la finalización del pago

El sandbox no simula directamente la acción que completa un pago. Puede simular esta acción utilizando el procedimiento descrito en Completar el pago. Para hacerlo, necesitará los siguientes valores de la respuesta que recibió cuando ejecutó 'Crear pago' en su sandbox:

  • id del pago

  • código (dentro del objeto textual_codes)

  • monto_original

Cuando un pago se completa, Rapyd envía un webhook. Antes de ejecutar Completar pago, configure su sistema para recibir webhooks siguiendo el procedimiento descrito en Definición de un endpoint de webhook .

Después de simular la transferencia de fondos por parte del banco de su cliente, Rapyd le envía el Webhook: pago completado, que confirma que el pago se ha completado correctamente.