Get a tenant's report
curl --request GET \
--url https://api-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day} \
--header 'Api-Key: <api-key>'import requests
url = "https://api-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}"
headers = {"Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'Api-Key': '<api-key>'}};
fetch('https://api-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}', 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-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("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-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}")
.header("Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body"<string>"Reports
Get a tenant's report
GET
/
issuing
/
reports
/
{year}
/
{month}
/
{day}
Get a tenant's report
curl --request GET \
--url https://api-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day} \
--header 'Api-Key: <api-key>'import requests
url = "https://api-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}"
headers = {"Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'Api-Key': '<api-key>'}};
fetch('https://api-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}', 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-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("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-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}")
.header("Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.rain.xyz/v1/issuing/reports/{year}/{month}/{day}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body"<string>"Subtenants
PassincludeSubtenants=true to return a combined report covering the tenant and all of its subtenants. When the parameter is false or omitted, the report contains only the tenantβs own data.
Subtenant API keys automatically receive a subtenant-specific report. You donβt need to set includeSubtenants. The includeSubtenants parameter applies to the csv and json formats.
Example Response
transactionId,transactionDate,transactionType,status,merchantName,merchantCategoryCode,authorizationAmount,authorizationCurrency,settlementAmount,settlementCurrency,interchangeAmount,cardId,cardLast4,cardholder,isThreeDSecureTransaction,isATMTransaction,isATMPremiumTransaction,visaProductType,tokenRequestorId,walletName,isNetworkChipAuthentication,isInternationalTransaction,foreignExchangeFees,crossBorderFees,merchantCountryCode,ledgerSettlementAmount,postedAt,tenantId,billingTenantId
123456789-123456789-123456789,2026-02-14T11:59:40.665Z,spend,closed,PAYPAL,8299,63,usd,63,usd,13860,987654321-987654321-987654321,5618,John Doe,false,false,false,Classic,1234567890,,false,false,0,0,US,63,2026-02-14T11:59:40.665Z,11111111-1111-1111-1111-111111111111,11111111-1111-1111-1111-111111111111
Authorizations
Path Parameters
Year of the report
Pattern:
^\d{4}$Month of the report
Pattern:
^\d{2}$Day of the report
Pattern:
^\d{2}$Query Parameters
The format of the report
Available options:
csv, json Whether to include subtenant data in the report. When true, returns combined data from tenant and all subtenants. When false or omitted, returns only the tenant's direct data. Subtenants automatically receive subtenant-specific reports.
Response
Successful operation
The report for the given day