curl --request GET \
--url https://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement', 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-api.va.meridianpay.com/v1/accounts/{accountId}/statement",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"accountId": "acc_01JMERUSDRET001",
"accountDisplayName": null,
"holderName": "Oak Street Holdings LLC",
"currency": "USD",
"from": "2026-03-01",
"to": "2026-03-31",
"generatedAt": "2026-04-01T00:05:00Z",
"depositInstructions": [
{
"id": "depinst_01JMERACH001",
"createdAt": "2026-02-28T14:00:00Z",
"updatedAt": "2026-02-28T14:00:00Z",
"status": "ACTIVE",
"rail": {
"type": "US.USD.ACH",
"label": "ACH"
},
"supportedCurrencies": [
"USD"
],
"fields": [
{
"key": "accountHolderName",
"label": "Account holder name",
"value": "Oak Street Holdings LLC",
"copyable": true
},
{
"key": "routingNumber",
"label": "Routing number",
"value": "123456789",
"copyable": true
},
{
"key": "accountNumber",
"label": "Account number",
"value": "1133557799",
"copyable": true
},
{
"key": "institutionName",
"label": "Institution name",
"value": "Example Bank N.A.",
"copyable": true
}
],
"disclosures": [
{
"kind": "notice",
"text": "ACH credits only."
}
]
}
],
"openingBalance": "1000.00",
"closingBalance": "1247.50",
"totalCredits": "500.00",
"totalDebits": "252.50",
"summary": [
{
"label": "Deposits",
"count": 1,
"total": "500.00"
},
{
"label": "Fees",
"count": 1,
"total": "2.50"
},
{
"label": "Withdrawals",
"count": 1,
"total": "250.00"
}
],
"days": [
{
"date": "2026-03-05",
"openingBalance": "1000.00",
"closingBalance": "1497.50",
"entries": [
{
"occurredAt": "2026-03-05T14:00:00Z",
"description": "Deposit",
"reference": "uspay-h2vuw0jaswgpzyxluhpz2709",
"direction": "CREDIT",
"amount": "500.00",
"balanceBefore": "1000.00",
"balanceAfter": "1500.00",
"isFee": false,
"statusAsOfPeriodEnd": "SETTLED"
},
{
"occurredAt": "2026-03-05T14:00:00Z",
"description": "Fee",
"reference": "uspay-h2vuw0jaswgpzyxluhpz2709",
"direction": "DEBIT",
"amount": "2.50",
"balanceBefore": "1500.00",
"balanceAfter": "1497.50",
"isFee": true,
"statusAsOfPeriodEnd": "SETTLED"
}
]
},
{
"date": "2026-03-18",
"openingBalance": "1497.50",
"closingBalance": "1247.50",
"entries": [
{
"occurredAt": "2026-03-18T09:30:00Z",
"description": "Withdrawal",
"reference": "uspay-k4rtz9mcx1ns7b0pvqle3d86",
"direction": "DEBIT",
"amount": "250.00",
"balanceBefore": "1497.50",
"balanceAfter": "1247.50",
"isFee": false,
"statusAsOfPeriodEnd": "SETTLED"
},
{
"occurredAt": "2026-03-18T16:45:00Z",
"description": "Deposit",
"reference": "uspay-w8cfj2qat5ry6ukd10hnzs43",
"direction": "CREDIT",
"amount": "300.00",
"balanceBefore": "1247.50",
"balanceAfter": "1247.50",
"isFee": false,
"statusAsOfPeriodEnd": "IN_FLIGHT"
}
]
}
]
}Get Account Statement
Returns a statement of the account’s activity over a period, formatted as JSON, CSV, or PDF. JSON is returned inline; CSV and PDF are rendered and uploaded, and this endpoint responds with a time-limited download link instead of the file itself. Statements are available from 2026-01-01 onwards, the date balance history began being recorded; a period starting before that floor is rejected.
curl --request GET \
--url https://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement', 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-api.va.meridianpay.com/v1/accounts/{accountId}/statement",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.va.meridianpay.com/v1/accounts/{accountId}/statement")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"accountId": "acc_01JMERUSDRET001",
"accountDisplayName": null,
"holderName": "Oak Street Holdings LLC",
"currency": "USD",
"from": "2026-03-01",
"to": "2026-03-31",
"generatedAt": "2026-04-01T00:05:00Z",
"depositInstructions": [
{
"id": "depinst_01JMERACH001",
"createdAt": "2026-02-28T14:00:00Z",
"updatedAt": "2026-02-28T14:00:00Z",
"status": "ACTIVE",
"rail": {
"type": "US.USD.ACH",
"label": "ACH"
},
"supportedCurrencies": [
"USD"
],
"fields": [
{
"key": "accountHolderName",
"label": "Account holder name",
"value": "Oak Street Holdings LLC",
"copyable": true
},
{
"key": "routingNumber",
"label": "Routing number",
"value": "123456789",
"copyable": true
},
{
"key": "accountNumber",
"label": "Account number",
"value": "1133557799",
"copyable": true
},
{
"key": "institutionName",
"label": "Institution name",
"value": "Example Bank N.A.",
"copyable": true
}
],
"disclosures": [
{
"kind": "notice",
"text": "ACH credits only."
}
]
}
],
"openingBalance": "1000.00",
"closingBalance": "1247.50",
"totalCredits": "500.00",
"totalDebits": "252.50",
"summary": [
{
"label": "Deposits",
"count": 1,
"total": "500.00"
},
{
"label": "Fees",
"count": 1,
"total": "2.50"
},
{
"label": "Withdrawals",
"count": 1,
"total": "250.00"
}
],
"days": [
{
"date": "2026-03-05",
"openingBalance": "1000.00",
"closingBalance": "1497.50",
"entries": [
{
"occurredAt": "2026-03-05T14:00:00Z",
"description": "Deposit",
"reference": "uspay-h2vuw0jaswgpzyxluhpz2709",
"direction": "CREDIT",
"amount": "500.00",
"balanceBefore": "1000.00",
"balanceAfter": "1500.00",
"isFee": false,
"statusAsOfPeriodEnd": "SETTLED"
},
{
"occurredAt": "2026-03-05T14:00:00Z",
"description": "Fee",
"reference": "uspay-h2vuw0jaswgpzyxluhpz2709",
"direction": "DEBIT",
"amount": "2.50",
"balanceBefore": "1500.00",
"balanceAfter": "1497.50",
"isFee": true,
"statusAsOfPeriodEnd": "SETTLED"
}
]
},
{
"date": "2026-03-18",
"openingBalance": "1497.50",
"closingBalance": "1247.50",
"entries": [
{
"occurredAt": "2026-03-18T09:30:00Z",
"description": "Withdrawal",
"reference": "uspay-k4rtz9mcx1ns7b0pvqle3d86",
"direction": "DEBIT",
"amount": "250.00",
"balanceBefore": "1497.50",
"balanceAfter": "1247.50",
"isFee": false,
"statusAsOfPeriodEnd": "SETTLED"
},
{
"occurredAt": "2026-03-18T16:45:00Z",
"description": "Deposit",
"reference": "uspay-w8cfj2qat5ry6ukd10hnzs43",
"direction": "CREDIT",
"amount": "300.00",
"balanceBefore": "1247.50",
"balanceAfter": "1247.50",
"isFee": false,
"statusAsOfPeriodEnd": "IN_FLIGHT"
}
]
}
]
}Authorizations
Bearer token authentication, for client-server calls.
Send the access token issued by POST /v1/auth/token as Authorization: Bearer {token}. The token carries its own program and user context, so the X-Meridian-* headers are not required. See Authentication.
Headers
Server-to-server (HMAC) requests only. Partner API key issued by Meridian during provisioning.
Server-to-server (HMAC) requests only. Current time in milliseconds since the Unix epoch. Must be within 60 seconds of the request.
Server-to-server (HMAC) requests only. Identifies the program context for the request.
Server-to-server (HMAC) requests only. Identifies the Meridian user targeted by the request. Required for MULTI_USER integrations; omit for SINGLE_USER.
Path Parameters
ID of the balance account to fetch a statement for: the id returned by GET /v1/accounts.
Query Parameters
First day of the statement period, inclusive (YYYY-MM-DD).
Last day of the statement period, inclusive (YYYY-MM-DD).
Response format: json (default, returned inline), csv, or pdf (both returned as a presigned download link). Case-insensitive: CSV, Csv, and csv are all accepted.
Response
For format=json, the statement itself (MeridianStatementResponse). For format=csv or format=pdf, a MeridianStatementLinkResponse (url, expiresAt) pointing at the rendered file instead.
- Statement Response
- Statement Link Response
An account statement for a period
ID of the account this statement covers
"acc_01JMERUSDRET001"
ISO 4217 currency code of the account
"USD"
First day covered by the statement, inclusive
"2026-03-01"
Last day covered by the statement, inclusive
"2026-03-31"
Timestamp when the statement was generated
"2026-04-01T00:05:00Z"
Deposit instructions for the account
Show child attributes
Show child attributes
Balance at the start of the period
"1000.00"
Balance at the end of the period
"1250.00"
Total credits posted during the period
"500.00"
Total debits posted during the period
"250.00"
Totals grouped by transaction type
Show child attributes
Show child attributes
One entry per calendar day with activity, in chronological order
Show child attributes
Show child attributes
Display name of the account
Name of the account holder