List Payer Names
curl --request GET \
--url https://api.rolla.xyz/api/v1/external/payer-names \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rolla.xyz/api/v1/external/payer-names"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.rolla.xyz/api/v1/external/payer-names', 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://api.rolla.xyz/api/v1/external/payer-names",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rolla.xyz/api/v1/external/payer-names"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.rolla.xyz/api/v1/external/payer-names")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/payer-names")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Payer names retrieved",
"success": true,
"data": {
"payer_names": [
{
"id": "9f8e7d6c-5b4a-4938-8271-0a1b2c3d4e5f",
"type": "business",
"name": "Acme Trading Ltd",
"firstName": null,
"lastName": null,
"registrationNumber": "RC1234567",
"registrationDate": "2019-04-02",
"country": "NG",
"address": {
"line1": "14 Marina Road",
"city": "Lagos",
"state": "Lagos",
"postalCode": "101001"
},
"status": "active",
"isDefault": true,
"decisionNote": null,
"documents": [
{
"id": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091",
"fileName": "certificate-of-incorporation.pdf",
"description": "Certificate of incorporation",
"fileType": "application/pdf",
"fileSize": 284122,
"downloadUrl": "https://files.rolla.xyz/payer_name_docs/...",
"createdAt": "2026-09-01T09:14:22.000Z"
}
],
"metadata": {
"vendor_id": "V-4471"
},
"createdAt": "2026-09-01T09:14:22.000Z",
"updatedAt": "2026-09-02T11:02:41.000Z"
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"total": 1,
"totalPages": 1
},
"requirements": {
"documentsRequired": true
}
}
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}{
"status": 403,
"message": "Payer names are not enabled for this account. Contact your Rolla account manager to turn them on.",
"code": "PAYER_NAMES_DISABLED"
}Payer Names (Named Payouts)
List Payer Names
Retrieves a paginated list of the payer names registered by your account, newest first, plus whether a submission from this account must carry a supporting document.
GET
/
payer-names
List Payer Names
curl --request GET \
--url https://api.rolla.xyz/api/v1/external/payer-names \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rolla.xyz/api/v1/external/payer-names"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.rolla.xyz/api/v1/external/payer-names', 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://api.rolla.xyz/api/v1/external/payer-names",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rolla.xyz/api/v1/external/payer-names"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.rolla.xyz/api/v1/external/payer-names")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/payer-names")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Payer names retrieved",
"success": true,
"data": {
"payer_names": [
{
"id": "9f8e7d6c-5b4a-4938-8271-0a1b2c3d4e5f",
"type": "business",
"name": "Acme Trading Ltd",
"firstName": null,
"lastName": null,
"registrationNumber": "RC1234567",
"registrationDate": "2019-04-02",
"country": "NG",
"address": {
"line1": "14 Marina Road",
"city": "Lagos",
"state": "Lagos",
"postalCode": "101001"
},
"status": "active",
"isDefault": true,
"decisionNote": null,
"documents": [
{
"id": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091",
"fileName": "certificate-of-incorporation.pdf",
"description": "Certificate of incorporation",
"fileType": "application/pdf",
"fileSize": 284122,
"downloadUrl": "https://files.rolla.xyz/payer_name_docs/...",
"createdAt": "2026-09-01T09:14:22.000Z"
}
],
"metadata": {
"vendor_id": "V-4471"
},
"createdAt": "2026-09-01T09:14:22.000Z",
"updatedAt": "2026-09-02T11:02:41.000Z"
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"total": 1,
"totalPages": 1
},
"requirements": {
"documentsRequired": true
}
}
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}{
"status": 403,
"message": "Payer names are not enabled for this account. Contact your Rolla account manager to turn them on.",
"code": "PAYER_NAMES_DISABLED"
}Returns the payer names registered by your account, newest first, along with whether a submission from this account must carry a supporting document.
So to find the names you can pay under today, filter on
Whether your account must attach at least one supporting document to a submission. When it is
Named Payouts are off until Rolla enables them for your account. Every endpoint in this group answers
403 with code: PAYER_NAMES_DISABLED until then. See the Named Payouts guide.Example Request
curl "https://api.rolla.xyz/api/v1/external/payer-names?status=approved&pageSize=20" \
-H "X-API-Key: your_api_key_here"
Example Response
{
"status": 200,
"message": "Payer names retrieved",
"success": true,
"data": {
"payer_names": [
{
"id": "9f8e7d6c-5b4a-4938-8271-0a1b2c3d4e5f",
"type": "business",
"name": "Acme Trading Ltd",
"firstName": null,
"lastName": null,
"registrationNumber": "RC1234567",
"registrationDate": "2019-04-02",
"country": "NG",
"address": {
"line1": "14 Marina Road",
"city": "Lagos",
"state": "Lagos",
"postalCode": "101001"
},
"status": "active",
"isDefault": true,
"decisionNote": null,
"documents": [
{
"id": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091",
"fileName": "certificate-of-incorporation.pdf",
"description": "Certificate of incorporation",
"fileType": "application/pdf",
"fileSize": 284122,
"downloadUrl": "https://files.rolla.xyz/payer_name_docs/...",
"createdAt": "2026-09-01T09:14:22.000Z"
}
],
"metadata": { "vendor_id": "V-4471" },
"createdAt": "2026-09-01T09:14:22.000Z",
"updatedAt": "2026-09-02T11:02:41.000Z"
}
],
"pagination": {
"page": 1,
"pageSize": 20,
"total": 1,
"totalPages": 1
},
"requirements": {
"documentsRequired": true
}
}
}
Filtering by status
Thestatus filter takes review statuses. The status returned on each record is the customer-facing status, which additionally reports how far registration has got. The two vocabularies overlap but are not the same list:
| Filter value | Matching returned statuses |
|---|---|
pending_review | pending_review |
changes_requested | changes_requested |
approved | processing, active, action_required |
rejected | rejected |
archived | archived |
approved and keep the ones returned as active. The Named Payouts guide explains each status.
requirements.documentsRequired
Whether your account must attach at least one supporting document to a submission. When it is true, a Create Payer Name call with no file is rejected with a 400. Read it before you build your submission form rather than discovering it from a failed POST.
downloadUrl on each document is a signed link that expires 1 hour after the response was generated. For a fresh link, call Get Document URL.Authorizations
Your Rolla API key
Query Parameters
Filter by review status. These are review statuses, not the customer-facing status returned on each record — filter on approved to find names that have cleared review, then keep the ones returned as active.
Available options:
pending_review, changes_requested, approved, rejected, archived Filter by payer type.
Available options:
individual, business Page number (default: 1)
Required range:
x >= 1Results per page (default: 20, max: 200)
Required range:
1 <= x <= 200