curl --request POST \
--url 'https://api.atoa.me/api/payments/transactions?page=0&size=20' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"status": ["COMPLETED", "AUTHORIZED"],
"paymentMethod": ["CARD"]
}'
import requests
url = "https://api.atoa.me/api/payments/transactions"
params = {"page": 0, "size": 20}
payload = {
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"status": ["COMPLETED", "AUTHORIZED"],
"paymentMethod": ["CARD"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, params=params, json=payload, headers=headers)
print(response.json())
const response = await fetch(
"https://api.atoa.me/api/payments/transactions?page=0&size=20",
{
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
},
body: JSON.stringify({
fromDate: "2025-01-01",
toDate: "2025-12-31",
status: ["COMPLETED", "AUTHORIZED"],
paymentMethod: ["CARD"],
}),
}
);
const data = await response.json();
console.log(data);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.atoa.me/api/payments/transactions?page=0&size=20",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
"fromDate" => "2025-01-01",
"toDate" => "2025-12-31",
"status" => ["COMPLETED", "AUTHORIZED"],
"paymentMethod" => ["CARD"]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.atoa.me/api/payments/transactions?page=0&size=20"
payload := strings.NewReader(`{
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"status": ["COMPLETED", "AUTHORIZED"],
"paymentMethod": ["CARD"]
}`)
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, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://api.atoa.me/api/payments/transactions?page=0&size=20")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\"fromDate\":\"2025-01-01\",\"toDate\":\"2025-12-31\",\"status\":[\"COMPLETED\",\"AUTHORIZED\"],\"paymentMethod\":[\"CARD\"]}")
.asString();
{
"data": [
{
"paymentIdempotencyId": "ATOA1692417435050",
"paymentRequestId": "9baa68d8-362a-4127-994d-2ea622ef35ee",
"customerId": "550e8400-e29b-41d4-a716-446655440000",
"consumerId": "consumer_123",
"merchantName": "My Shop",
"merchantId": "eed6202f-4dfd-42fc-9bc6-48323556b59d",
"orderId": "ORDER-001",
"consumerName": "John Doe",
"paidAmount": 10.50,
"currency": "GBP",
"status": "COMPLETED",
"transactionType": "CARD",
"notes": "Payment for order #001",
"metadata": {
"bookingId": "BK-42427",
"orderReference": "ORD-1"
},
"storeDetails": {
"id": "d77e02d5-4e93-46cf-a8be-50da650df562",
"address": "London",
"locationName": "London Store"
},
"cardPaymentDetails": {
"cardType": "VISA",
"transactionSubType": "CARD",
"captureType": "AUTO_CAPTURE",
"metadata": {
"isMitPayment": true
},
"paymentMethodId": "card_abc123def456"
},
"createdAt": "2025-06-15T10:30:00.000Z",
"updatedAt": "2025-06-15T10:31:00.000Z"
}
],
"totalCount": 100,
"page": 0,
"size": 20
}
{
"name": "BAD_REQUEST",
"message": "From date must be in YYYY-MM-DD format.",
"status": 400,
"errors": []
}
Payments
Get Transactions | Payments API
Retrieve transactions via the Atoa Payments API, request parameters, response schema and code samples in cURL, Python, JavaScript, PHP, Go and Java.
POST
/
api
/
payments
/
transactions
curl --request POST \
--url 'https://api.atoa.me/api/payments/transactions?page=0&size=20' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"status": ["COMPLETED", "AUTHORIZED"],
"paymentMethod": ["CARD"]
}'
import requests
url = "https://api.atoa.me/api/payments/transactions"
params = {"page": 0, "size": 20}
payload = {
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"status": ["COMPLETED", "AUTHORIZED"],
"paymentMethod": ["CARD"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, params=params, json=payload, headers=headers)
print(response.json())
const response = await fetch(
"https://api.atoa.me/api/payments/transactions?page=0&size=20",
{
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
},
body: JSON.stringify({
fromDate: "2025-01-01",
toDate: "2025-12-31",
status: ["COMPLETED", "AUTHORIZED"],
paymentMethod: ["CARD"],
}),
}
);
const data = await response.json();
console.log(data);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.atoa.me/api/payments/transactions?page=0&size=20",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
"fromDate" => "2025-01-01",
"toDate" => "2025-12-31",
"status" => ["COMPLETED", "AUTHORIZED"],
"paymentMethod" => ["CARD"]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.atoa.me/api/payments/transactions?page=0&size=20"
payload := strings.NewReader(`{
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"status": ["COMPLETED", "AUTHORIZED"],
"paymentMethod": ["CARD"]
}`)
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, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://api.atoa.me/api/payments/transactions?page=0&size=20")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\"fromDate\":\"2025-01-01\",\"toDate\":\"2025-12-31\",\"status\":[\"COMPLETED\",\"AUTHORIZED\"],\"paymentMethod\":[\"CARD\"]}")
.asString();
{
"data": [
{
"paymentIdempotencyId": "ATOA1692417435050",
"paymentRequestId": "9baa68d8-362a-4127-994d-2ea622ef35ee",
"customerId": "550e8400-e29b-41d4-a716-446655440000",
"consumerId": "consumer_123",
"merchantName": "My Shop",
"merchantId": "eed6202f-4dfd-42fc-9bc6-48323556b59d",
"orderId": "ORDER-001",
"consumerName": "John Doe",
"paidAmount": 10.50,
"currency": "GBP",
"status": "COMPLETED",
"transactionType": "CARD",
"notes": "Payment for order #001",
"metadata": {
"bookingId": "BK-42427",
"orderReference": "ORD-1"
},
"storeDetails": {
"id": "d77e02d5-4e93-46cf-a8be-50da650df562",
"address": "London",
"locationName": "London Store"
},
"cardPaymentDetails": {
"cardType": "VISA",
"transactionSubType": "CARD",
"captureType": "AUTO_CAPTURE",
"metadata": {
"isMitPayment": true
},
"paymentMethodId": "card_abc123def456"
},
"createdAt": "2025-06-15T10:30:00.000Z",
"updatedAt": "2025-06-15T10:31:00.000Z"
}
],
"totalCount": 100,
"page": 0,
"size": 20
}
{
"name": "BAD_REQUEST",
"message": "From date must be in YYYY-MM-DD format.",
"status": 400,
"errors": []
}
Returns a paginated list of transactions for the authenticated merchant. Use filters to narrow down results by date, status, payment method, customer, or store.
Request Body Schema
All fields are optional. Omit the field to skip filtering.
Response
Authorization
Bearer<accessSecret>
Query Parameters
number
default:"0"
Page number (0-indexed).
number
default:"20"
Number of items per page.
Array filters must have at least 1 item when provided. Passing an empty array
[] will return a validation error.string
Free-text search by consumer name, order ID, payment request ID, or amount.
string
Start date in
YYYY-MM-DD format. Example: 2025-01-01.string
End date in
YYYY-MM-DD format. Example: 2025-12-31.string[]
Filter by payment status.
Possible values
Possible values
COMPLETED— Payment successfully capturedFAILED— Payment failedPENDING— Payment is being processedREFUNDED— Payment fully refundedPARTIALLY_REFUNDED— Payment partially refundedAUTHORIZED— Payment authorized, not yet captured (MANUAL_CAPTURE)CANCELLED— Payment was cancelled
string[]
Filter by Atoa customer UUIDs (from Create Customer). Each must be a valid UUID.
string[]
Filter by payment method.
Possible values
Possible values
PAY_BY_BANK— Open banking paymentsCARD— Card payments
string[]
Filter by store UUIDs. Each must be a valid UUID.
array
Show child attributes
Show child attributes
string
Unique transaction identifier (e.g.,
ATOA1692417435050).string
Payment request UUID.
string
Customer UUID.
string
Merchant order reference.
string
Customer name.
number
Amount paid.
string
Currency code (e.g.,
GBP).string
Transaction status (COMPLETED, FAILED, PENDING, REFUNDED, PARTIALLY_REFUNDED, AUTHORIZED, CANCELLED).
string
CARD for card payments, OPEN_BANKING for Pay by Bank.string
Payment notes.
object
Only present when metadata was supplied on the payment. See Process Payment for the field limits.
string
Error description for failed payments.
object
Card-specific details. Only present for card transactions (
transactionType: "CARD"). The metadata.isMitPayment field indicates whether this was a merchant-initiated card-on-file payment.Show child attributes
Show child attributes
string
ISO 8601 creation timestamp.
string
ISO 8601 last update timestamp.
number
Total number of transactions matching the filters.
number
Current page number.
number
Items per page.
curl --request POST \
--url 'https://api.atoa.me/api/payments/transactions?page=0&size=20' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"status": ["COMPLETED", "AUTHORIZED"],
"paymentMethod": ["CARD"]
}'
import requests
url = "https://api.atoa.me/api/payments/transactions"
params = {"page": 0, "size": 20}
payload = {
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"status": ["COMPLETED", "AUTHORIZED"],
"paymentMethod": ["CARD"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, params=params, json=payload, headers=headers)
print(response.json())
const response = await fetch(
"https://api.atoa.me/api/payments/transactions?page=0&size=20",
{
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
},
body: JSON.stringify({
fromDate: "2025-01-01",
toDate: "2025-12-31",
status: ["COMPLETED", "AUTHORIZED"],
paymentMethod: ["CARD"],
}),
}
);
const data = await response.json();
console.log(data);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.atoa.me/api/payments/transactions?page=0&size=20",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
"fromDate" => "2025-01-01",
"toDate" => "2025-12-31",
"status" => ["COMPLETED", "AUTHORIZED"],
"paymentMethod" => ["CARD"]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.atoa.me/api/payments/transactions?page=0&size=20"
payload := strings.NewReader(`{
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"status": ["COMPLETED", "AUTHORIZED"],
"paymentMethod": ["CARD"]
}`)
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, _ := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://api.atoa.me/api/payments/transactions?page=0&size=20")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\"fromDate\":\"2025-01-01\",\"toDate\":\"2025-12-31\",\"status\":[\"COMPLETED\",\"AUTHORIZED\"],\"paymentMethod\":[\"CARD\"]}")
.asString();
{
"data": [
{
"paymentIdempotencyId": "ATOA1692417435050",
"paymentRequestId": "9baa68d8-362a-4127-994d-2ea622ef35ee",
"customerId": "550e8400-e29b-41d4-a716-446655440000",
"consumerId": "consumer_123",
"merchantName": "My Shop",
"merchantId": "eed6202f-4dfd-42fc-9bc6-48323556b59d",
"orderId": "ORDER-001",
"consumerName": "John Doe",
"paidAmount": 10.50,
"currency": "GBP",
"status": "COMPLETED",
"transactionType": "CARD",
"notes": "Payment for order #001",
"metadata": {
"bookingId": "BK-42427",
"orderReference": "ORD-1"
},
"storeDetails": {
"id": "d77e02d5-4e93-46cf-a8be-50da650df562",
"address": "London",
"locationName": "London Store"
},
"cardPaymentDetails": {
"cardType": "VISA",
"transactionSubType": "CARD",
"captureType": "AUTO_CAPTURE",
"metadata": {
"isMitPayment": true
},
"paymentMethodId": "card_abc123def456"
},
"createdAt": "2025-06-15T10:30:00.000Z",
"updatedAt": "2025-06-15T10:31:00.000Z"
}
],
"totalCount": 100,
"page": 0,
"size": 20
}
{
"name": "BAD_REQUEST",
"message": "From date must be in YYYY-MM-DD format.",
"status": 400,
"errors": []
}
⌘I