Create a partner virtual account
curl --request POST \
--url https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"country": "BO",
"currency": "BOB",
"label": "Cuenta de cobro Bolivia",
"externalReference": "ref-001"
}
'import requests
url = "https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts"
payload = {
"country": "BO",
"currency": "BOB",
"label": "Cuenta de cobro Bolivia",
"externalReference": "ref-001"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
country: 'BO',
currency: 'BOB',
label: 'Cuenta de cobro Bolivia',
externalReference: 'ref-001'
})
};
fetch('https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'country' => 'BO',
'currency' => 'BOB',
'label' => 'Cuenta de cobro Bolivia',
'externalReference' => 'ref-001'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts"
payload := strings.NewReader("{\n \"country\": \"BO\",\n \"currency\": \"BOB\",\n \"label\": \"Cuenta de cobro Bolivia\",\n \"externalReference\": \"ref-001\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"country\": \"BO\",\n \"currency\": \"BOB\",\n \"label\": \"Cuenta de cobro Bolivia\",\n \"externalReference\": \"ref-001\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"country\": \"BO\",\n \"currency\": \"BOB\",\n \"label\": \"Cuenta de cobro Bolivia\",\n \"externalReference\": \"ref-001\"\n}"
response = http.request(request)
puts response.read_body{
"id": "b456c905-8d9a-4aff-9cf9-657e452e07c6",
"owner": {
"type": "businessClient",
"id": "4500678e-a900-4138-828c-b8f9c7ff5ebe"
},
"country": "US",
"currency": "USD",
"paymentMethods": [
"ach",
"wire"
],
"status": "ready",
"label": "Cuenta de cobro Bolivia",
"externalReference": "ref-001",
"coordinates": {
"holder": {
"name": "Acme Bolivia SRL",
"type": "individual",
"address": "Av. San Martin 123, Santa Cruz de la Sierra, BO"
},
"bank": {
"name": "JP Morgan Chase NA",
"address": "New York NY, US"
},
"iban": "AE950266395745362337381",
"accountNumber": "41000100267",
"swiftCode": "ZEITPRSJ",
"taxId": "1020304050",
"routingNumbers": {
"ach": "028000024",
"wire": "021000021",
"rtp": "021000021"
}
},
"createdAt": "2026-09-17T14:49:35.054Z"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}{
"statusCode": 401,
"message": "Unauthorized"
}{
"statusCode": 409,
"message": "Virtual account already exists for this country"
}Virtual accounts
Create a partner virtual account
Creates the partner collection account in the specified country. Client accounts are created automatically after their endorsements are approved.
POST
/
v2
/
virtual-accounts
Create a partner virtual account
curl --request POST \
--url https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"country": "BO",
"currency": "BOB",
"label": "Cuenta de cobro Bolivia",
"externalReference": "ref-001"
}
'import requests
url = "https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts"
payload = {
"country": "BO",
"currency": "BOB",
"label": "Cuenta de cobro Bolivia",
"externalReference": "ref-001"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
country: 'BO',
currency: 'BOB',
label: 'Cuenta de cobro Bolivia',
externalReference: 'ref-001'
})
};
fetch('https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'country' => 'BO',
'currency' => 'BOB',
'label' => 'Cuenta de cobro Bolivia',
'externalReference' => 'ref-001'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts"
payload := strings.NewReader("{\n \"country\": \"BO\",\n \"currency\": \"BOB\",\n \"label\": \"Cuenta de cobro Bolivia\",\n \"externalReference\": \"ref-001\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"country\": \"BO\",\n \"currency\": \"BOB\",\n \"label\": \"Cuenta de cobro Bolivia\",\n \"externalReference\": \"ref-001\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-rampa.mesadepagos.com/api/v2/virtual-accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"country\": \"BO\",\n \"currency\": \"BOB\",\n \"label\": \"Cuenta de cobro Bolivia\",\n \"externalReference\": \"ref-001\"\n}"
response = http.request(request)
puts response.read_body{
"id": "b456c905-8d9a-4aff-9cf9-657e452e07c6",
"owner": {
"type": "businessClient",
"id": "4500678e-a900-4138-828c-b8f9c7ff5ebe"
},
"country": "US",
"currency": "USD",
"paymentMethods": [
"ach",
"wire"
],
"status": "ready",
"label": "Cuenta de cobro Bolivia",
"externalReference": "ref-001",
"coordinates": {
"holder": {
"name": "Acme Bolivia SRL",
"type": "individual",
"address": "Av. San Martin 123, Santa Cruz de la Sierra, BO"
},
"bank": {
"name": "JP Morgan Chase NA",
"address": "New York NY, US"
},
"iban": "AE950266395745362337381",
"accountNumber": "41000100267",
"swiftCode": "ZEITPRSJ",
"taxId": "1020304050",
"routingNumbers": {
"ach": "028000024",
"wire": "021000021",
"rtp": "021000021"
}
},
"createdAt": "2026-09-17T14:49:35.054Z"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}{
"statusCode": 401,
"message": "Unauthorized"
}{
"statusCode": 409,
"message": "Virtual account already exists for this country"
}Authorizations
JWT obtained from /v2/auth/login or /v3/auth/login
Body
application/json
Response
Example:
"b456c905-8d9a-4aff-9cf9-657e452e07c6"
Show child attributes
Show child attributes
Example:
"US"
Example:
"USD"
Payment rails supported by this account. Rails that share bank details use the same account.
Example:
["ach", "wire"]
provisioning while bank details are being issued; the account exists but is not ready to share.
Available options:
ready, provisioning, inactive, active Example:
"ready"
Example:
"Cuenta de cobro Bolivia"
Example:
"ref-001"
Payment instructions given to the payer. Null while status is provisioning. Fields vary by currency: IBAN in Europe and the Middle East, account and routing numbers in the United States.
Show child attributes
Show child attributes
Example:
"2026-09-17T14:49:35.054Z"