Skip to main content

Documentation

Reusing Beneficiary or Sender

Streamline your future payouts. | Enterprise

Rapyd streamlines payouts and makes it easy to reuse beneficiary and sender information. Rapyd creates IDs to represent each contact to avoid entering detail information each payout.

For example, your payroll manager can get IDs that represent the beneficiary and sender in a salary payout. The payroll manager can use these IDs for each monthly salary payout. This avoids the need to manually reenter detailed information for each payout.

Common use cases include:

  • On-going payout to a business or businesses in a marketplace

  • On-going payouts to a contract worker or employee

  • Payout to suppliers (B2B) that provide for your business

Finding the specific payout methods you'll use is described under How it Works.

Step 1: Getting a Sender ID
get-a-sender.jpg
  1. On your website, your payroll manager requests an ID for the sender.

  2. The website back end asks Rapyd to create a sender ID.

  3. Rapyd sends a sender ID to the website back end.

  4. Your payroll manager receives the sender ID from your website.

get-a-beneficiary.jpg
  1. Your payroll manager requests an ID for the beneficiary.

  2. The website back end asks Rapyd to create a beneficiary ID .

  3. Rapyd sends a beneficiary ID to the website backend.

  4. Your payroll manager receives the beneficiary ID from your website.

use-ids-for-payout.jpg
  1. Your payroll manager requests a payout for an employee's salary, specifying the sender and beneficiary IDs.

  2. The website back end asks Rapyd to process the payout.

  3. Rapyd processes the payout.

  4. The website back end receives confirmation from Rapyd that the payout was completed.

Prerequisites

To run the examples of this use case, you must create the following ID in your own sandbox:

For your payout page, you need to find payout method types that match your criteria, such as the payout currency and category (for example, bank or cash).

In this example, you'll find payout method types that support bank transfers in PHP (Philippine Pesos).

For that, you'll use List Payout Method Types with the following parameters:

Description of Query Parameters

Query Parameter

Description

category

Enter bank as the category of the payout method.

beneficiary_country

Enter PH as the code for the Philippines, the beneficiary's country.

payout_currency

Enter PHP as the code for Philippine Pesos, the currency received by the beneficiary.

List Payout Method Types Request

You ask for a list of all available payout method types for bank transfers in PHP (Philippine Pesos).

    • Request

      • // 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('<path-to-your-utility-file>/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 .= "/<path-to-your-utility-file>/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
        
        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}'
        methods = make_request(method='get', path=path)
        pprint(methods)
List Payout Method Types Response

Let's take a look at the response.

    • Response

      • {
                "status": {
                        "error_code": "",
                        "status": "SUCCESS",
                        "message": "",
                        "response_code": "",
                        "operation_id": "f5b4ebce-b159-427e-b424-62aba58f8cd8"
                },
                "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",
                                        "individual"
                                ],
                                "beneficiary_entity_types": [
                                        "company",
                                        "individual"
                                ],
                                "amount_range_per_currency": [{
                                                "maximum_amount": null,
                                                "minimum_amount": null,
                                                "payout_currency": "PHP"
                                        }
                                ]
                        }
                ]
        }

The data section of this response shows that ph_anzbank_bank is an acceptable payout method type for bank transfers in PHP (Philippine Pesos).

A real response usually lists many payout methods.

You need to find the required fields for each payout method type.

For that, you'll use Get Payout Required Fields with the following parameters:

Description of Path Parameters

Path Parameter

Description

payout_method_type

Enter ph_anzbank_bank as the payout method type.

Description of Query Parameters

Query Parameter

Description

sender_country

Enter GB as the code for the United Kingdom, the sender's country.

sender_currency

Enter PHP as the code for Philippine Pesos, the sender's currency.

beneficiary_country

Enter PH as the code for the Philippines, the beneficiary's country.

payout_currency

Enter PHP as the code for Philippine Pesos, the currency received by the beneficiary.

sender_entity_type

Enter company as the type of entity for the sender.

beneficiary_entity_type

Enter individual as the type of entity for the beneficiary.

payout_amount

Enter 10000 as the amount received by the beneficiary.

Get Payout Required Fields Request

You ask for the set of required fields for the ph_anzbank_bank payout method type.

    • Request

      • // 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 payoutMethodType = "ph_anzbank_bank";
                        string senderCountry = "GB";
                        string senderCurrency = "PHP";
                        string beneficiaryCountry = "PH";
                        string payoutCurrency = "PHP";
                        string senderEntityType = "company";
                        string beneficiaryEntityType = "individual";
                        string payoutAmount = "10000";
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("GET", $"/v1/payout_methods/{payoutMethodType}/required_fields?sender_country={senderCountry}&sender_currency={senderCurrency}&beneficiary_country={beneficiaryCountry}&payout_currency={payoutCurrency}&sender_entity_type={senderEntityType}&beneficiary_entity_type={beneficiaryEntityType}&payout_amount={payoutAmount}");
        
                        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/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 .= "/<path-to-your-utility-file>/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
        
        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}&payout_amount={payout_amount}'
        required_fields = make_request(method='get', path=path)
        pprint(required_fields)
Get Payout Required Fields Response

Let's take a look at the response.

    • Response

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "f3b51074-63f6-436b-9294-6fb6361a098d"
            },
            "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",
             
        //      ...          
                  
                "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"
                    }
                ],
              
        //    ...          
                  
            }
        }

The data section of this response shows required fields for ph_anzbank_bank.

You will use the fields listed under beneficiary_required_fields and sender_required_fields when you ask Rapyd to create IDs for the 'beneficiary' and 'sender' objects.

As shown in the following table, some fields are required for both the beneficiary and the sender.

Beneficiary

Sender

account_number

address

beneficiary_relationship

company_name

date_of_birth

first_name

identification_type

identification_type

identification_value

identification_value

last_name

occupation

phone_number

phone_number

purpose_code

source_of_income

In this example, your payroll manager Jane Doe is the sender of the salary payout.

When Jane requests an ID to represent the 'sender' object in the payout request, you ask Rapyd to create a sender ID.

For that, you'll use Create Sender with the following parameters, which include:

  • Parameters that are always required for a 'Create Sender' request.

  • Parameters that are listed under sender_required_fields in the 'Get Payout Required Fields' response for the ph_anzbank_bank payout method type.

Description of Body Parameters

Body Parameter

Description

country

Enter GB as the code for the United Kingdom, the sender's country.

currency

Enter PHP as the code for Philippine pesos, the sender's currency.

entity_type

Enter company as the type of entity for the sender.

company_name

Enter Four Star Rideshare Service.

identification_type

Enter company registered number.

identification_value

Enter 10207686 .

phone_number

Enter 442037443095 .

occupation

Enter transportation .

source_of_income

Enter business .

date_of_birth

Enter 31/07/1984 .

address

Enter 123 Main Street London.

purpose_code

Enter salary.

beneficiary_relationship

Enter employee .

Create Sender Request

You ask Rapyd to process Jane's request for a sender ID.

    • Request

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payouts/sender
        
        // Message body:
        {
                "country": "GB",
                "currency": "PHP",  
                "entity_type": "company",
                "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"
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
        
                        var requestObj = new
                        {
        
                            country = "GB",
                            currency = "PHP",
                            entity_type = "company",
                            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"
                        };
        
                        string request = JsonSerializer.Serialize(requestObj);
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/payouts/sender", 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 = {
              country: 'GB',
              currency: 'PHP',
              entity_type: 'company',
              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'
            };
            const result = await makeRequest('POST', '/v1/payouts/sender', 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 = [
            "country" => "GB",
            "currency" => "PHP",
            "entity_type" => "company",
            "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"
        ];
        
        try {
            $object = make_request('post', '/v1/payouts/sender', $body);
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        # Create Sender request
        body = {
            "country": "GB",
            "currency": "PHP",
            "entity_type": "company",
            "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"
        }
        results = make_request(method='post',
                               path='/v1/payouts/sender',
                               body=body)
        pprint(results)
        
Create Sender Response

Let's take a look at the response.

    • Response

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "790974a1-5600-4f38-b8b5-c9cd10deda1c"
            },
            "data": {
                "id": "sender_2c3d6492f50f7de237b867bb3e40a247",
                "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"
            }
        }

The data section of this response shows:

  • The id for the sender is sender_2c3d6492f50f7de237b867bb3e40a247. When you run this example in your own sandbox, you will get a different ID, which you will need for a later step in this use case.

  • Fields of the 'sender' object that the ID represents are listed.

In this example, John Doe (the employee) is the beneficiary who receives the salary payout.

When your payroll manager Jane requests an ID to represent the 'beneficiary' object in the payout request, you ask Rapyd to create a beneficiary ID.

For that, you'll use Create Beneficiary with the following parameters, which include:

  • Parameters that are always required for a 'Create Beneficiary' request.

  • Parameters that are listed under beneficiary_required_fields in the 'Get Payout Required Fields' response for the ph_anzbank_bank payout method type.

Description of Body Parameters

Body Parameter

Description

category

Enter bank as the category of the payout method.

country

Enter PH as the code for the Philippines, the beneficiary's country.

currency

Enter PHP as the code for Philippine Pesos, the currency received by the beneficiary.

entity_type

Enter individual as the type of entity for the beneficiary.

first_name

Enter John as the first name of the beneficiary.

last_name

Enter Doe as the last name of the beneficiary.

account_number

Enter 006449956988 .

identification_type

Enter international passport.

identification_value

Enter Z4703384 .

phone_number

Enter 632567000014 .

Note

You can also create a beneficiary object with Create Beneficiary Tokenization Page. When the process is complete, Rapyd sends you Webhook - Beneficiary Created, which contains the beneficiary ID.

Create Beneficiary Request

You ask Rapyd to process Jane's request for a beneficiary ID.

    • Request

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payouts/beneficiary
        
        // Message body:
        {
                "category": "bank",
                "country": "PH",
                "currency": "PHP",
                "entity_type": "individual",
                "first_name": "John",
                "last_name": "Doe",
                "account_number": "006449956988",
                "identification_type": "international passport",
                "identification_value": "Z4703384",
                "phone_number": "632567000014"
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
        
                        var requestObj = new
                        {
                            category = "bank",
                            country = "PH",
                            currency = "PHP",
                            entity_type = "individual",
                            first_name = "John",
                            last_name = "Doe",
                            account_number = "006449956988",
                            identification_type = "international passport",
                            identification_value = "Z4703384",
                            phone_number = "632567000014"
                        };
        
                        string request = JsonSerializer.Serialize(requestObj);
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/payouts/beneficiary", 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 = {
              category: 'bank',
              country: 'PH',
              currency: 'PHP',
              entity_type: 'individual',
              first_name: 'John',
              last_name: 'Doe',
              account_number: '006449956988',
              identification_type: 'international passport',
              identification_value: 'Z4703384',
              phone_number: '632567000014'
            };
            const result = await makeRequest('POST', '/v1/payouts/beneficiary', 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 = [
            "category" => "bank",
            "country" => "PH",
            "currency" => "PHP",
            "entity_type" => "individual",
            "first_name" => "John",
            "last_name" => "Doe",
            "account_number" => "006449956988",
            "identification_type" => "international passport",
            "identification_value" => "Z4703384",
            "phone_number" => "632567000014"
        ];
        
        try {
            $object = make_request('post', '/v1/payouts/beneficiary', $body);
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        beneficiary_details = {
            "category": "bank",
            "country": "PH",
            "currency": "PHP",
            "entity_type": "individual",
            "first_name": "John",
            "last_name": "Doe",
            "account_number": "006449956988",
            "identification_type": "international passport",
            "identification_value": "Z4703384",
            "phone_number": "632567000014"
        }
        
        result = make_request(method='post',
                              path='/v1/payouts/beneficiary',
                              body=beneficiary_details)
        pprint(result)
Create Beneficiary Response

Let's take a look at the response.

    • Response

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "1fb218a9-e5a4-4cc0-8377-27d52f18d133"
            },
            "data": {
                "id": "beneficiary_a0345a157ccac51bf4d4a54b388c32ba",
                "last_name": "Doe",
                "first_name": "John",
                "country": "PH",
                "entity_type": "individual",
                "name": "John Doe",
                "phone_number": "632567000014",
                "currency": "PHP",
                "identification_type": "international passport",
                "identification_value": "Z4703384",
                "category": "bank"
            }
        }

The data section of this response shows:

  • The id for the beneficiary is beneficiary_a0345a157ccac51bf4d4a54b388c32ba. When you run this example in your own sandbox, you will get a different ID, which you will need for a later step in this use case.

  • Fields of the 'beneficiary' object that the ID represents are listed.

Tip

Use Validate Beneficiary to check the beneficiary fields before you request the payout. See Validating Beneficiary Details .

When Jane requests a payout from the company wallet to John's bank account, you ask Rapyd to process the payout.

For that, you'll use Create Payout with the following parameters:

Description of Body Parameters

Body Parameter

Description

ewallet

Enter the wallet 'id' that you received when you created the company wallet in your sandbox. For purposes of this use case lesson, we are using ewallet_090e1ef18c3aa754fd43cce9ee454858, which is the wallet ID we created in our sandbox.

payout_amount

Enter 10000 as the amount received by the beneficiary.

payout_method_type

Enter ph_anzbank_bank as the payout method type.

sender_currency

Enter PHP as the code for Philippine Pesos, the sender's currency.

sender_country

Enter GB as the code for the United Kingdom, the sender's country.

beneficiary_country

Enter PH as the code for the Philippines, the beneficiary's country.

payout_currency

Enter PHP as the code for Philippine Pesos, the currency received by the beneficiary.

sender_entity_type

Enter company as the type of entity for the sender.

beneficiary_entity_type

Enter individual as the type of entity for the beneficiary.

beneficiary

Enter the beneficiary 'id' that you received when you created the beneficiary in your sandbox. For purposes of this use case lesson, we are using beneficiary_a0345a157ccac51bf4d4a54b388c32ba, which is the beneficiary ID we created in our sandbox.

sender

Enter the sender 'id' that you received when you created the sender in your sandbox. For purposes of this use case lesson, we are using sender_2c3d6492f50f7de237b867bb3e40a247, which is the sender ID we created in our sandbox.

description

Enter Salary payout - eWallet to bank account as the description of the payout transaction.

Create Payout Request

You ask Rapyd to process Jane's payout of 10,000 PHP (Philippine Pesos) to John's bank account.

    • Request

      • // 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": "beneficiary_a0345a157ccac51bf4d4a54b388c32ba",
                "sender": "sender_2c3d6492f50f7de237b867bb3e40a247",
                "description": "Salary payout - wallet to bank account"
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            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_a0345a157ccac51bf4d4a54b388c32ba",
                            sender = "sender_2c3d6492f50f7de237b867bb3e40a247",
                            description = "Salary payout - eWallet to bank account"
                        };
        
                        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 = {
              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_a0345a157ccac51bf4d4a54b388c32ba',
              sender: 'sender_2c3d6492f50f7de237b867bb3e40a247',
              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 .= "/<path-to-your-utility-file>/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" => "beneficiary_a0345a157ccac51bf4d4a54b388c32ba",
            "sender" => "sender_2c3d6492f50f7de237b867bb3e40a247",
            "description" => "Salary payout - eWallet 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
        
        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_a0345a157ccac51bf4d4a54b388c32ba",
            "sender": "sender_2c3d6492f50f7de237b867bb3e40a247",
            "description": "Salary payout - eWallet to bank account"
        }
        
        result = make_request(method='post', path='/v1/payouts', body=payout_body)
        pprint(result)
Create Payout Response

Let's take a look at the response.

    • Response

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "90e4b733-accd-4d1d-a2b0-43c6374d0b56"
            },
            "data": {
                "id": "payout_13b1eb7d39ba9be479df4e28b7f1716d",
                "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_2c3d6492f50f7de237b867bb3e40a247",
                    "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_a0345a157ccac51bf4d4a54b388c32ba",
                    "last_name": "Doe",
                    "first_name": "John",
                    "country": "PH",
                    "entity_type": "individual",
                    "name": "John Doe",
                    "phone_number": "632567000014",
                    "account_number": "006449956988",
                    "currency": "PHP",
                    "identification_type": "international passport",
                    "identification_value": "Z4703384",
                    "bank_name": "John Doe",
                    "category": "bank"
                },
                "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",
              
        //    ...          
                  
            }
        }

Besides parameter values that you entered in the request, the data section of this response shows:

  • The id of the 'payout' object is payout_13b1eb7d39ba9be479df4e28b7f1716d. Webhooks that relate to this payout refer to this ID.

  • The payout_type is bank.

  • Under sender:

    • The id is sender_2c3d6492f50f7de237b867bb3e40a247 .

    • Fields of the 'sender' object that the ID represents are listed.

  • Under beneficiary:

    • The id is beneficiary_a0345a157ccac51bf4d4a54b388c32ba .

    • Fields of the 'beneficiary' object that the ID represents are listed.

  • The status is Created. This means that the 'payout' object was created successfully and John did not yet receive the payout funds.

  • There are instructions that describe the transfer of funds to the beneficiary bank account.

Simulating Payout Completion

The sandbox does not directly simulate the action of the beneficiary receiving the payout funds. You can simulate this action with the procedure described in Complete Payout. For this, you will need the payout ID and payout amount that you generated in your sandbox.

When a payout completion is simulated, Rapyd sends a webhook. Configure your system to receive webhooks with the procedure described in Defining a Webhook Endpoint.

After you simulate that John's bank account was credited with his salary, Rapyd sends you Webhook - Payout Completed. The webhook confirms that the payout was completed.

The sender and beneficiary IDs represent objects containing the values of the required fields listed when the 'Get Payout Required Fields' response was generated.

You can use the IDs for any payout method with required fields that all match fields that were required when the IDs were created. The IDs are valid for a payout method that has fewer required fields, but not for a payout method with any additional or different required fields.

Note

The required fields for the original payout method may change over time.

If you cannot use an existing ID, do one of the following:

  • Get a new ID using the methods described above. To create an ID that you can use with multiple payout methods, include all fields that are required by each payout method.

  • Manually insert the object with all of the required field values, as described in Payout to a Bank Account .

Need More In-Depth Technical Information?

Want to see the Rapyd API methods and objects that you'll use? Visit the API Reference for more technical details.