Retrieve a transaction
curl --request GET \
--url https://merchant-demo.zahlo.eu/api/v1/transactions/{id} \
--header 'x-api-key: <api-key>'import requests
url = "https://merchant-demo.zahlo.eu/api/v1/transactions/{id}"
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://merchant-demo.zahlo.eu/api/v1/transactions/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "txn_demo_1001",
"paymentId": "pay_demo_1001",
"status": "pending",
"method": "card",
"reference": "order_1001",
"amount": {
"amountMinor": 4990,
"currency": "EUR"
},
"createdAt": "2026-09-02T12:00:00Z",
"occurredAt": "2026-09-02T12:00:00Z"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}Payments
Retrieve a transaction
Retrieve a transaction. Use the response status and request ID to decide whether to retry, reconcile, or ask the customer for action.
GET
/
api
/
v1
/
transactions
/
{id}
Retrieve a transaction
curl --request GET \
--url https://merchant-demo.zahlo.eu/api/v1/transactions/{id} \
--header 'x-api-key: <api-key>'import requests
url = "https://merchant-demo.zahlo.eu/api/v1/transactions/{id}"
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://merchant-demo.zahlo.eu/api/v1/transactions/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "txn_demo_1001",
"paymentId": "pay_demo_1001",
"status": "pending",
"method": "card",
"reference": "order_1001",
"amount": {
"amountMinor": 4990,
"currency": "EUR"
},
"createdAt": "2026-09-02T12:00:00Z",
"occurredAt": "2026-09-02T12:00:00Z"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}{
"error": "invalid_request",
"message": "amountMinor must be positive",
"requestId": "req_demo_1001"
}Authorizations
Server-side merchant API key. Never expose it in browser code.
Path Parameters
The resource identifier returned by the merchant API.
Response
Successful response
A merchant-scoped transaction projected from Zahlo's persisted payment record. Provider refresh is best effort; status and timeline fields remain stable when a provider is unavailable.
Stable payment reference retained for compatibility.
Available options:
pending, confirmed, failed, cancelled, expired Show child attributes
Show child attributes
Available options:
card, sepa_direct_debit, klarna, ideal, bancontact, apple_pay, google_pay, paypal, unknown Show child attributes
Show child attributes