curl --request GET \
--url https://api.meridian.example.com/v1/transactions \
--header 'X-Meridian-Api-Key: <x-meridian-api-key>' \
--header 'X-Meridian-Program-Id: <x-meridian-program-id>' \
--header 'X-Meridian-Signature: <api-key>' \
--header 'X-Meridian-Timestamp: <x-meridian-timestamp>'import requests
url = "https://api.meridian.example.com/v1/transactions"
headers = {
"X-Meridian-Program-Id": "<x-meridian-program-id>",
"X-Meridian-Api-Key": "<x-meridian-api-key>",
"X-Meridian-Timestamp": "<x-meridian-timestamp>",
"X-Meridian-Signature": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Meridian-Program-Id': '<x-meridian-program-id>',
'X-Meridian-Api-Key': '<x-meridian-api-key>',
'X-Meridian-Timestamp': '<x-meridian-timestamp>',
'X-Meridian-Signature': '<api-key>'
}
};
fetch('https://api.meridian.example.com/v1/transactions', 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.meridian.example.com/v1/transactions",
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-Meridian-Api-Key: <x-meridian-api-key>",
"X-Meridian-Program-Id: <x-meridian-program-id>",
"X-Meridian-Signature: <api-key>",
"X-Meridian-Timestamp: <x-meridian-timestamp>"
],
]);
$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.meridian.example.com/v1/transactions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Meridian-Program-Id", "<x-meridian-program-id>")
req.Header.Add("X-Meridian-Api-Key", "<x-meridian-api-key>")
req.Header.Add("X-Meridian-Timestamp", "<x-meridian-timestamp>")
req.Header.Add("X-Meridian-Signature", "<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.meridian.example.com/v1/transactions")
.header("X-Meridian-Program-Id", "<x-meridian-program-id>")
.header("X-Meridian-Api-Key", "<x-meridian-api-key>")
.header("X-Meridian-Timestamp", "<x-meridian-timestamp>")
.header("X-Meridian-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meridian.example.com/v1/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Meridian-Program-Id"] = '<x-meridian-program-id>'
request["X-Meridian-Api-Key"] = '<x-meridian-api-key>'
request["X-Meridian-Timestamp"] = '<x-meridian-timestamp>'
request["X-Meridian-Signature"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"transactions": [
{
"id": "txn_01JVY8Y4N9X2M6S5Q7T1",
"messageId": "msg_01JVY8Y4N9X2M6S5Q7T1",
"source": {
"type": "external_submission",
"externalSubmission": {
"id": "sub_01JVY8Y4N9X2M6S5Q7T1",
"displayName": "Customer message submission"
}
},
"type": "transfer",
"createdAt": "2026-04-07T20:11:42Z",
"updatedAt": "2026-04-07T20:12:05Z",
"status": "PENDING",
"statusReason": null,
"externalId": "e2e-20260407-000123",
"relatedTransactionId": null,
"amounts": {
"debit": {
"amount": "125000.00",
"currency": "USD"
},
"credit": {
"amount": "124975.00",
"currency": "USD"
},
"fees": [
{
"type": "NETWORK_FEE",
"label": "Network fee",
"amount": "25.00",
"currency": "USD"
}
],
"exchangeRate": "1.0000"
},
"debitInstrument": {
"type": "ORIGINATOR",
"originator": {
"displayName": "Northwind Imports LLC",
"accountNumber": "****9021"
}
},
"creditInstrument": {
"type": "BENEFICIARY_ACCOUNT",
"beneficiaryAccount": {
"id": "bfa_01JVY8Y4N9X2M6S5Q7T1",
"displayName": "Contoso Treasury USD Account",
"currency": "USD"
}
}
},
{
"id": "txn_01JVY91MN2C4J7S6Q8U2",
"messageId": "msg_01JVY91MN2C4J7S6Q8U2",
"source": {
"type": "system_initiation"
},
"type": "transfer",
"createdAt": "2026-04-07T19:58:11Z",
"updatedAt": "2026-04-07T20:01:14Z",
"status": "COMPLETED",
"statusReason": null,
"externalId": "e2e-20260407-000122",
"relatedTransactionId": "txn_01JVY8Y4N9X2M6S5Q7T1",
"amounts": {
"debit": {
"amount": "124975.00",
"currency": "USD"
},
"credit": {
"amount": "124975.00",
"currency": "USD"
},
"fees": [],
"exchangeRate": "1.0000"
},
"debitInstrument": {
"type": "BALANCE",
"balance": {
"id": "bal_01JVY91MN2C4J7S6Q8U2",
"displayName": "USD settlement balance",
"currency": "USD"
}
},
"creditInstrument": {
"type": "BENEFICIARY_ACCOUNT",
"beneficiaryAccount": {
"id": "bfa_01JVY91MN2C4J7S6Q8U2",
"displayName": "Contoso Treasury USD Account",
"currency": "USD"
}
}
}
],
"pageIndex": 1,
"pageSize": 50,
"totalRecords": 2
}{
"validationErrors": [
{
"type": "<string>",
"fieldRef": "<string>",
"message": "Invalid format"
}
],
"message": "Request validation failed",
"errorCode": "INVALID_REQUEST"
}{
"validationErrors": [
{
"type": "<string>",
"fieldRef": "<string>",
"message": "Invalid format"
}
],
"message": "Request validation failed",
"errorCode": "INVALID_REQUEST"
}{
"validationErrors": [
{
"type": "<string>",
"fieldRef": "<string>",
"message": "Invalid format"
}
],
"message": "Request validation failed",
"errorCode": "INVALID_REQUEST"
}List payout transactions
Returns transactions with their latest processing status. You can optionally filter the results by the Meridian messageId returned from the message submission endpoint.
Authentication uses Meridian HMAC headers:
- X-Meridian-Api-Key
- X-Meridian-Timestamp
- X-Meridian-Signature
curl --request GET \
--url https://api.meridian.example.com/v1/transactions \
--header 'X-Meridian-Api-Key: <x-meridian-api-key>' \
--header 'X-Meridian-Program-Id: <x-meridian-program-id>' \
--header 'X-Meridian-Signature: <api-key>' \
--header 'X-Meridian-Timestamp: <x-meridian-timestamp>'import requests
url = "https://api.meridian.example.com/v1/transactions"
headers = {
"X-Meridian-Program-Id": "<x-meridian-program-id>",
"X-Meridian-Api-Key": "<x-meridian-api-key>",
"X-Meridian-Timestamp": "<x-meridian-timestamp>",
"X-Meridian-Signature": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Meridian-Program-Id': '<x-meridian-program-id>',
'X-Meridian-Api-Key': '<x-meridian-api-key>',
'X-Meridian-Timestamp': '<x-meridian-timestamp>',
'X-Meridian-Signature': '<api-key>'
}
};
fetch('https://api.meridian.example.com/v1/transactions', 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.meridian.example.com/v1/transactions",
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-Meridian-Api-Key: <x-meridian-api-key>",
"X-Meridian-Program-Id: <x-meridian-program-id>",
"X-Meridian-Signature: <api-key>",
"X-Meridian-Timestamp: <x-meridian-timestamp>"
],
]);
$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.meridian.example.com/v1/transactions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Meridian-Program-Id", "<x-meridian-program-id>")
req.Header.Add("X-Meridian-Api-Key", "<x-meridian-api-key>")
req.Header.Add("X-Meridian-Timestamp", "<x-meridian-timestamp>")
req.Header.Add("X-Meridian-Signature", "<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.meridian.example.com/v1/transactions")
.header("X-Meridian-Program-Id", "<x-meridian-program-id>")
.header("X-Meridian-Api-Key", "<x-meridian-api-key>")
.header("X-Meridian-Timestamp", "<x-meridian-timestamp>")
.header("X-Meridian-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meridian.example.com/v1/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Meridian-Program-Id"] = '<x-meridian-program-id>'
request["X-Meridian-Api-Key"] = '<x-meridian-api-key>'
request["X-Meridian-Timestamp"] = '<x-meridian-timestamp>'
request["X-Meridian-Signature"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"transactions": [
{
"id": "txn_01JVY8Y4N9X2M6S5Q7T1",
"messageId": "msg_01JVY8Y4N9X2M6S5Q7T1",
"source": {
"type": "external_submission",
"externalSubmission": {
"id": "sub_01JVY8Y4N9X2M6S5Q7T1",
"displayName": "Customer message submission"
}
},
"type": "transfer",
"createdAt": "2026-04-07T20:11:42Z",
"updatedAt": "2026-04-07T20:12:05Z",
"status": "PENDING",
"statusReason": null,
"externalId": "e2e-20260407-000123",
"relatedTransactionId": null,
"amounts": {
"debit": {
"amount": "125000.00",
"currency": "USD"
},
"credit": {
"amount": "124975.00",
"currency": "USD"
},
"fees": [
{
"type": "NETWORK_FEE",
"label": "Network fee",
"amount": "25.00",
"currency": "USD"
}
],
"exchangeRate": "1.0000"
},
"debitInstrument": {
"type": "ORIGINATOR",
"originator": {
"displayName": "Northwind Imports LLC",
"accountNumber": "****9021"
}
},
"creditInstrument": {
"type": "BENEFICIARY_ACCOUNT",
"beneficiaryAccount": {
"id": "bfa_01JVY8Y4N9X2M6S5Q7T1",
"displayName": "Contoso Treasury USD Account",
"currency": "USD"
}
}
},
{
"id": "txn_01JVY91MN2C4J7S6Q8U2",
"messageId": "msg_01JVY91MN2C4J7S6Q8U2",
"source": {
"type": "system_initiation"
},
"type": "transfer",
"createdAt": "2026-04-07T19:58:11Z",
"updatedAt": "2026-04-07T20:01:14Z",
"status": "COMPLETED",
"statusReason": null,
"externalId": "e2e-20260407-000122",
"relatedTransactionId": "txn_01JVY8Y4N9X2M6S5Q7T1",
"amounts": {
"debit": {
"amount": "124975.00",
"currency": "USD"
},
"credit": {
"amount": "124975.00",
"currency": "USD"
},
"fees": [],
"exchangeRate": "1.0000"
},
"debitInstrument": {
"type": "BALANCE",
"balance": {
"id": "bal_01JVY91MN2C4J7S6Q8U2",
"displayName": "USD settlement balance",
"currency": "USD"
}
},
"creditInstrument": {
"type": "BENEFICIARY_ACCOUNT",
"beneficiaryAccount": {
"id": "bfa_01JVY91MN2C4J7S6Q8U2",
"displayName": "Contoso Treasury USD Account",
"currency": "USD"
}
}
}
],
"pageIndex": 1,
"pageSize": 50,
"totalRecords": 2
}{
"validationErrors": [
{
"type": "<string>",
"fieldRef": "<string>",
"message": "Invalid format"
}
],
"message": "Request validation failed",
"errorCode": "INVALID_REQUEST"
}{
"validationErrors": [
{
"type": "<string>",
"fieldRef": "<string>",
"message": "Invalid format"
}
],
"message": "Request validation failed",
"errorCode": "INVALID_REQUEST"
}{
"validationErrors": [
{
"type": "<string>",
"fieldRef": "<string>",
"message": "Invalid format"
}
],
"message": "Request validation failed",
"errorCode": "INVALID_REQUEST"
}Authorizations
Meridian HMAC header authentication.
Required headers:
- X-Meridian-Api-Key
- X-Meridian-Program-Id
- X-Meridian-Timestamp
- X-Meridian-Signature
Headers
Identifies your Meridian program. Required on all requests but not included in the canonical signing string.
8 - 128Public client key identifier used to look up the HMAC secret
8 - 128RFC 3339 UTC timestamp used in the HMAC signing string and replay protection. Requests outside the accepted clock skew window should be rejected.
HMAC-SHA256 signature of the canonical signing string. Recommended format: sha256={hex_digest}
^sha256=[A-Fa-f0-9]{64}$Query Parameters
x >= 11 <= x <= 200Optional filter using the Meridian-assigned message identifier returned when the message was accepted
8 - 128