Virtual Accounts Use Cases

Virtual Accounts Use Cases

Dedicated Account Numbers to Collect Funds.


You can accept payments with a Virtual Account into a Rapyd Wallet, where you can hold funds in multiple currencies. Virtual Accounts act as local bank account numbers, and Rapyd Wallet’s can act as a financial hub for your business.

A few use cases of Virtual Accounts can include:

  • Setting up a Virtual Account as a local bank account to accept bank transfer payments from international customers in their local currency.
  • A customer tops-up funds into their Rapyd Wallet account via a Virtual Account, which you can organize by country, customer and currency.
  • Organize local payments collection into individual Virtual Accounts to streamline operations and improve reconciliation.

Collect Funds with Virtual Accounts Workflow

For each workflow, you Create a Rapyd Wallet and Issue a Virtual Account Number to set up your Virtual Account.

1. Accept Payments into your Marketplace

You onboard and verify your sellers with a Rapyd Wallet as described in Creating a Rapyd Wallet and Identity Verification.

  1. You issue a Virtual Account Number for a seller on your marketplace.
  2. Rapyd returns the Virtual Account Number details.
  3. You present the Virtual Account Number including account ID to the customer purchasing from the seller.
  4. The customer sends funds to the Virtual Account Number details.
  5. Rapyd sends you a webhook notification of the deposited funds and you notify the seller.

2. Create Payout after Accepting VA Payment

You follow the previous steps in 1. Accept Payments into your Marketplace

Note: This can be your client wallet as well.

  1. The customer requests a refund.
  2. You complete the create Hosted Beneficiary Account Details page flow to capture information for a beneficiary.
  3. You complete the Reusing a Sender Flow.
  4. You create a Payout with FX to the saved Beneficiary.
  5. Beneficiary receives payment and Rapyd sends a webhook.

3. Deposit Funds into Your Platform Ecosystem

You follow the previous steps in 1. Accept Payments into your Marketplace.

  1. Rapyd holds funds in a sub-wallet on behalf of the customer.
  2. Customer wants to transfer funds to another wallet.
  3. Create Wallet to Wallet Transfer from the customer to another wallet holder.
  4. The funds transfer, and Rapyd sends you a webhook.

How it Works

1. Accept a Payment with a Virtual Account

1. Issue a Virtual Account Number for a seller on your marketplace as previously mentioned.

2. List Virtual Account Details to Present to Customer.

For the request use ewallet_6bf0e86b4c5e451691cf1f4e88b52eec in your parameters as described in List Virtual Accounts by Rapyd Wallet.

Response
...
{
        "ewallet": "ewallet_67863635c1e143f3d358b08de402a921",
        "bank_accounts": [
            {
                "account_id": "DK4289000092780662",
                "account_id_type": "iban",
                "currency": "EUR",
                "country_iso": "DK",
                "issuing_id": "issuing_b8818a435778f8f924265a9d104ecdf1"
            },
            {
                "account_id": "DK6289000092780496",
                "account_id_type": "iban",
                "currency": "DKK",
                "country_iso": "DK",
                "issuing_id": "issuing_7a6faaa49489fff8175d0b5d70e69db7"
            }
        ]
    }

3. Simulate Payment into a Virtual Account.

Request
{
	"issued_bank_account": "issuing_b8818a435778f8f924265a9d104ecdf1",
	"amount": "150000",
	"currency": "EUR"
}
Response
...
 {
        "id": "issuing_b8818a435778f8f924265a9d104ecdf1",
        "merchant_reference_id": "5rtfgk8970dfbmaes",
        "ewallet": "ewallet_1c92eedc8d6dad84c7d337bab9e8830e",
        "bank_account": {
            "beneficiary_name": "CashDash UK Limited",
            "address": "Northwest House, 119 Marylebone Road NW1 5PU",
            "country_iso": "DK",
            "iban": "DK4289000092780662",
            "bic": "SXPYDKKK"
        },
        "metadata": {
            "merchant_defined": true
        },
        "status": "ACT",
        "description": "Issue test bank account",
        "funding_instructions": null,
        "currency": "EUR",
        "transactions": [
            {
                "id": "isutran_d0297998c493314fb22064f4caa196ff",
                "amount": 150000,
                "currency": "EUR",
                "created_at": 1654273630
            }
        ]
    }

2. Refund Payments Accepted through VAs

You issued a Virtual Account, and have accepted a payment through the VA into the Rapyd Wallet.

1. Retrieve Rapyd Wallet Balance

2. Follow Create Hosted Beneficiary Account Details page flow

Retrieve Beneficiary ID

Use the Hosted Beneficiary Page ID to retrieve the beneficiary ID hp_ben_0f592cd436ad6e2f7f7cd16778fe5363.

Response
...
{
        "merchant_alias": "Test Business",
        "merchant_terms": "",
        "merchant_privacy_policy": "",
        "page_expiration": 1655489011,
        "redirect_url": "https://sandboxhosted.rapyd.net/disburse/beneficiary?token=hp_ben_0f592cd436ad6e2f7f7cd16778fe5363",
        "id": "hp_ben_0f592cd436ad6e2f7f7cd16778fe5363",
        "category": "bank",
        "sender_entity_type": "company",
        "sender_country": "GB",
        "merchant_reference_id": "A-1013",
        "beneficiary_entity_type": "company",
        "beneficiary_country": "DK",
        "beneficiary_currency": "DKK",
        "sender_currency": "GBP",
        "beneficiary_id": "beneficiary_16c38749b22a384cacb8081a19fab698",
        "payout_method_type": "dk_general_bank",
        "beneficiary_validated": false,
        "timestamp": 1654279411,
        "beneficiary_optional_fields": {
            "last_name": "Doe",
            "first_name": "John",
            "company_name": null,
            "identification_type": "international_passport",
            "identification_value": "123456789"
        },
        "payout_method_types_include": null,
        "payout_method_types_exclude": null,
        "expiration": 1655489011,
        "valid_countries": {
            "all_supported": false,
            "countries": [
                "DK"
            ]
        }
    }

3. Follow Create Sender flow

Retrieve Sender

Use sender ID sender_bcce677fc847761b813b99703298dcc4 to retrieve the sender details.

Response
...
{
        "id": "sender_bcce677fc847761b813b99703298dcc4",
        "country": "GB",
        "entity_type": "company",
        "address": "1234 Test Address",
        "name": "Space Travel Marketplace",
        "postcode": "5211",
        "city": "London",
        "phone_number": "5555555",
        "company_name": "Space Travel Marketplace",
        "currency": "EUR",
        "phone_country_code": "+44"
    }

3. You Create a Payout with FX to the saved Beneficiary.

Request
{
    "beneficiary": "beneficiary_d9b59dc946ee164cd939e7a8ec4729cb",
    "beneficiary_country": "DK",
    "beneficiary_entity_type": "company",
    "description": "Payout - Bank Transfer: Beneficiary/Sender IDs",
    "merchant_reference_id": "5rtfgk8970dfbmaes",
    "ewallet": "ewallet_1c92eedc8d6dad84c7d337bab9e8830e",
    "payout_amount": "150000",
    "payout_currency": "EUR",
    "payout_method_type": "dk_general_bank",
    "sender": "sender_bcce677fc847761b813b99703298dcc4",
    "sender_country": "GB",
    "sender_currency": "EUR",
    "sender_entity_type": "company",
    "statement_descriptor":"Space Travel Third Party Return",
    "metadata": {
        "merchant_defined": true
    }
}
Response
...
 {
        "id": "payout_6a7b4028ab53d9532c58053ac39d7435",
        "payout_type": "bank",
        "payout_method_type": "dk_general_bank",
        "amount": 150000,
        "payout_currency": "EUR",
        "sender_amount": 150000,
        "sender_currency": "EUR",
        "status": "Created",
        "sender_country": "GB",
        "sender": {
            "id": "sender_bcce677fc847761b813b99703298dcc4",
            "country": "GB",
            "entity_type": "company",
            "address": "1234 Test Address",
            "name": "Space Travel Marketplace",
            "postcode": "5211",
            "city": "London",
            "phone_number": "5555555",
            "company_name": "Space Travel Marketplace",
            "currency": "EUR",
            "phone_country_code": "+44"
        },
        "beneficiary_country": "DK",
        "beneficiary": {
            "id": "beneficiary_d9b59dc946ee164cd939e7a8ec4729cb",
            "country": "DK",
            "entity_type": "company",
            "name": "Space Travel Third Party",
            "company_name": "Space Travel Third Party",
            "currency": "EUR",
            "category": "bank",
            "default_payout_method_type": "dk_general_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_1c92eedc8d6dad84c7d337bab9e8830e",
                "amount": 150000,
                "percent": 100
            }
        ],
        "metadata": {
            "merchant_defined": true
        },
        "description": "Payout - Bank Transfer: Beneficiary/Sender IDs",
        "created_at": 1654285232,
        "payout_fees": null,
        "expiration": null,
        "merchant_reference_id": "5rtfgk8970dfbmaes",
        "paid_at": null,
        "identifier_type": null,
        "identifier_value": null,
        "error": null,
        "paid_amount": 0,
        "statement_descriptor": "Space Travel Third Party Return",
        "gc_error_code": null
    }

Complete Payout

Complete the Payout using Payout ID payout_6a7b4028ab53d9532c58053ac39d7435

Response
...
{
        "id": "payout_6a7b4028ab53d9532c58053ac39d7435",
        "payout_type": "bank",
        "payout_method_type": "dk_general_bank",
        "amount": 150000,
        "payout_currency": "EUR",
        "sender_amount": 150000,
        "sender_currency": "EUR",
        "status": "Completed",
        "sender_country": "GB",
        "sender": {
            "id": "sender_bcce677fc847761b813b99703298dcc4",
            "country": "GB",
            "entity_type": "company",
            "address": "1234 Test Address",
            "name": "Space Travel Marketplace",
            "postcode": "5211",
            "city": "London",
            "phone_number": "5555555",
            "company_name": "Space Travel Marketplace",
            "currency": "EUR",
            "phone_country_code": "+44"
        },
        "beneficiary_country": "DK",
        "beneficiary": {
            "id": "beneficiary_d9b59dc946ee164cd939e7a8ec4729cb",
            "country": "DK",
            "entity_type": "company",
            "name": "Space Travel Third Party",
            "company_name": "Space Travel Third Party",
            "currency": "EUR",
            "category": "bank",
            "default_payout_method_type": "dk_general_bank"
        },
        "fx_rate": 1,
        "instructions": {
            "name": "instructions",
            "steps": [
                {
                    "step1": "The funds will be transferred to the provided account details of the beneficiary ."
                }
            ]
        },
        "instructions_value": {},
        "ewallets": [
            {
                "ewallet_id": "ewallet_1c92eedc8d6dad84c7d337bab9e8830e",
                "amount": 150000,
                "percent": 100
            }
        ],
        "metadata": {
            "merchant_defined": true
        },
        "description": "Payout - Bank Transfer: Beneficiary/Sender IDs",
        "created_at": 1654285232,
        "payout_fees": null,
        "expiration": null,
        "merchant_reference_id": "5rtfgk8970dfbmaes",
        "paid_at": "1654286576",
        "identifier_type": null,
        "identifier_value": null,
        "error": null,
        "paid_amount": 150000,
        "statement_descriptor": null,
        "gc_error_code": null
    }
2 Likes

Use case 3 " Deposit Funds into Your Platform Ecosystem" points 2, 3 & 4 suggest that the customer can transfer funds to another wallet and with a simple call the funds are moved. There is no step 3.1 where the receiving wallet must accept the funds with a β€œSet Transfer Response”.

Can a Virtual Account send funds to another Virtual Account, held by another wallet with a different KYB owner, without the need for the receiver to accept?
I cannot determine how. Please assist.