curl --request POST \
--url https://sg.sandbox.api.reap.global/statements/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'Reap-Version: <reap-version>' \
--data '
{
"type": "CARD_TRANSACTION_FEES",
"period": {
"from": "2025-03-01",
"to": "2025-03-31"
},
"fields": [
"occurredAt",
"transactionId",
"billAmount"
],
"format": "CSV"
}
'const options = {
method: 'POST',
headers: {
'Reap-Version': '<reap-version>',
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
type: 'CARD_TRANSACTION_FEES',
period: {from: '2025-03-01', to: '2025-03-31'},
fields: ['occurredAt', 'transactionId', 'billAmount'],
format: 'CSV'
})
};
fetch('https://sg.sandbox.api.reap.global/statements/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sg.sandbox.api.reap.global/statements/"
payload = {
"type": "CARD_TRANSACTION_FEES",
"period": {
"from": "2025-03-01",
"to": "2025-03-31"
},
"fields": ["occurredAt", "transactionId", "billAmount"],
"format": "CSV"
}
headers = {
"Reap-Version": "<reap-version>",
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "CARD_TRANSACTION_FEES",
"origin": "CLIENT",
"status": "PENDING",
"period": {
"from": "2025-03-01",
"to": "2025-03-31"
},
"fields": [
"occurredAt",
"transactionId",
"billAmount"
],
"format": "CSV",
"version": "2025-02-14",
"rowCount": 1842,
"byteSize": 412034,
"dataAsOf": "2025-04-02T03:15:00Z",
"generatedAt": "2025-04-02T03:20:12Z",
"createdAt": "2025-04-02T03:20:00Z",
"updatedAt": "2025-04-02T03:20:12Z"
}{
"error": {
"code": "STATEMENT_TYPE_NOT_AVAILABLE",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "STATEMENT_LIMIT_REACHED",
"message": "<string>",
"detail": {}
}
}Request statement
Requests a statement over a calendar-day period. The statement is returned PENDING and its file is produced asynchronously; a STATEMENT_STATUS_UPDATED webhook follows once it is GENERATED or FAILED. The period may span at most 31 days, must start on or after 2026-06-01, and must end at least two days before today (UTC) so the rows it covers are final. At most 5 statements may be pending per project at once.
curl --request POST \
--url https://sg.sandbox.api.reap.global/statements/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'Reap-Version: <reap-version>' \
--data '
{
"type": "CARD_TRANSACTION_FEES",
"period": {
"from": "2025-03-01",
"to": "2025-03-31"
},
"fields": [
"occurredAt",
"transactionId",
"billAmount"
],
"format": "CSV"
}
'const options = {
method: 'POST',
headers: {
'Reap-Version': '<reap-version>',
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
type: 'CARD_TRANSACTION_FEES',
period: {from: '2025-03-01', to: '2025-03-31'},
fields: ['occurredAt', 'transactionId', 'billAmount'],
format: 'CSV'
})
};
fetch('https://sg.sandbox.api.reap.global/statements/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sg.sandbox.api.reap.global/statements/"
payload = {
"type": "CARD_TRANSACTION_FEES",
"period": {
"from": "2025-03-01",
"to": "2025-03-31"
},
"fields": ["occurredAt", "transactionId", "billAmount"],
"format": "CSV"
}
headers = {
"Reap-Version": "<reap-version>",
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "CARD_TRANSACTION_FEES",
"origin": "CLIENT",
"status": "PENDING",
"period": {
"from": "2025-03-01",
"to": "2025-03-31"
},
"fields": [
"occurredAt",
"transactionId",
"billAmount"
],
"format": "CSV",
"version": "2025-02-14",
"rowCount": 1842,
"byteSize": 412034,
"dataAsOf": "2025-04-02T03:15:00Z",
"generatedAt": "2025-04-02T03:20:12Z",
"createdAt": "2025-04-02T03:20:00Z",
"updatedAt": "2025-04-02T03:20:12Z"
}{
"error": {
"code": "STATEMENT_TYPE_NOT_AVAILABLE",
"message": "<string>",
"detail": {}
}
}{
"error": {
"code": "STATEMENT_LIMIT_REACHED",
"message": "<string>",
"detail": {}
}
}Authorizations
API key as Bearer token
Headers
API version (YYYY-MM-DD)
2025-02-14 "2025-02-14"
Unique key for safely retrying this request. Up to 255 characters; we recommend a UUIDv4. The first request executes and its response is cached; subsequent requests with the same key replay the cached response (24h retention).
1 - 255Body
What the statement itemises
CARD_TRANSACTION_FEES, CARD_NON_TRANSACTION_FEES "CARD_TRANSACTION_FEES"
Inclusive calendar-day range to cover, UTC. At most 31 days, starting no earlier than 2026-06-01 and ending at least two days before today.
Show child attributes
Show child attributes
Columns to include, in file order. Omit for every column of the type.
11["occurredAt", "transactionId", "billAmount"]
File format
CSV "CSV"
Response
Statement resource
Unique statement identifier
What the statement itemises
CARD_TRANSACTION_FEES, CARD_NON_TRANSACTION_FEES "CARD_TRANSACTION_FEES"
Who requested the statement
CLIENT, REAP "CLIENT"
Current statement status
PENDING, GENERATED, FAILED "PENDING"
Show child attributes
Show child attributes
Columns in the file, in order. null means every column of the type.
["occurredAt", "transactionId", "billAmount"]
File format
CSV "CSV"
API version the statement was requested under. Fixes the column definitions the file follows.
"2025-02-14"
Number of data rows in the file, once generated
-9007199254740991 <= x <= 90071992547409911842
Size of the file in bytes, once generated
-9007199254740991 <= x <= 9007199254740991412034
ISO 8601 timestamp of how fresh the source data was when the file was produced, when known
"2025-04-02T03:15:00Z"
ISO 8601 timestamp of when the file became available
"2025-04-02T03:20:12Z"
ISO 8601 timestamp of creation
"2025-04-02T03:20:00Z"
ISO 8601 timestamp of last update
"2025-04-02T03:20:12Z"