curl --request GET \
--url https://examples.staging.rampapay.com/v1/accounts/{id}/transactions \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://examples.staging.rampapay.com/v1/accounts/{id}/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://examples.staging.rampapay.com/v1/accounts/{id}/transactions"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "dep_3Nc8Wq1Zr6Tm9Kx4Lp7Vb2Hs",
"type": "top_up",
"direction": "in",
"status": "pending",
"currency": "USDT",
"available_change": "+0.000000",
"reserved_change": "+0.000000",
"balance_after": null,
"reference": {
"type": "deposit",
"id": "dep_3Nc8Wq1Zr6Tm9Kx4Lp7Vb2Hs",
"network": "tron:0x2b6653dc",
"tx_hash": "c41e7b2d9a6f3085e2c7b4a1d8f5e2093b6c9a4d7e1f8b5c2a9d6e3f0b7c4a18",
"amount": "250.000000"
},
"created_at": "2026-09-27T14:07:02.000Z"
},
{
"id": "txn_Qm4Vb8Xc2Nz6Lk1Jh5Gf9Ds3",
"type": "payout_settled",
"direction": "out",
"status": "completed",
"currency": "USDT",
"available_change": "+0.000000",
"reserved_change": "-102.040000",
"balance_after": {
"available": "897.960000",
"reserved": "0.000000"
},
"reference": {
"type": "payout",
"id": "po_9Fz3Kd7RwP2mX8cT4nB6vQ1h",
"transaction_id": "W-1001"
},
"created_at": "2026-09-27T14:06:12.000Z"
},
{
"id": "txn_Pw7Ty2Ur9Ie4Oq6Wa1Sd8Fg3",
"type": "payout_held",
"direction": "out",
"status": "completed",
"currency": "USDT",
"available_change": "-102.040000",
"reserved_change": "+102.040000",
"balance_after": {
"available": "897.960000",
"reserved": "102.040000"
},
"reference": {
"type": "payout",
"id": "po_9Fz3Kd7RwP2mX8cT4nB6vQ1h",
"transaction_id": "W-1001"
},
"created_at": "2026-09-27T14:06:05.000Z"
},
{
"id": "txn_Hj3Kl8Zx5Cv1Bn7Mq2We9Rt4",
"type": "top_up",
"direction": "in",
"status": "completed",
"currency": "USDT",
"available_change": "+1000.000000",
"reserved_change": "+0.000000",
"balance_after": {
"available": "1000.000000",
"reserved": "0.000000"
},
"reference": {
"type": "deposit",
"id": "dep_7Hq2Lx9TbR4mW1cZ8kP3sN6v",
"network": "tron:0x2b6653dc",
"tx_hash": "9f1c2e7a4b3d5c6e8f0a1b2c3d4e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5a6",
"amount": "1000.000000"
},
"created_at": "2026-09-27T13:58:20.000Z"
}
],
"next_cursor": null
}An account's statement
Newest first, for either kind of account. Crypto: one row per movement on your USDT wallet, with the signed available_change and reserved_change and your balance_after. A payment books payout_held, then payout_settled or payout_released; a top-up books top_up. Fiat: one payout row per payment paid from your BOB, with its amount and the payment’s status. On both, reference ties each row to its payment (po_) or top-up (dep_). The filters below explain each type and status; a filter that only applies to the other kind of account matches nothing.
curl --request GET \
--url https://examples.staging.rampapay.com/v1/accounts/{id}/transactions \
--header 'X-API-Key: <api-key>'const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://examples.staging.rampapay.com/v1/accounts/{id}/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://examples.staging.rampapay.com/v1/accounts/{id}/transactions"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "dep_3Nc8Wq1Zr6Tm9Kx4Lp7Vb2Hs",
"type": "top_up",
"direction": "in",
"status": "pending",
"currency": "USDT",
"available_change": "+0.000000",
"reserved_change": "+0.000000",
"balance_after": null,
"reference": {
"type": "deposit",
"id": "dep_3Nc8Wq1Zr6Tm9Kx4Lp7Vb2Hs",
"network": "tron:0x2b6653dc",
"tx_hash": "c41e7b2d9a6f3085e2c7b4a1d8f5e2093b6c9a4d7e1f8b5c2a9d6e3f0b7c4a18",
"amount": "250.000000"
},
"created_at": "2026-09-27T14:07:02.000Z"
},
{
"id": "txn_Qm4Vb8Xc2Nz6Lk1Jh5Gf9Ds3",
"type": "payout_settled",
"direction": "out",
"status": "completed",
"currency": "USDT",
"available_change": "+0.000000",
"reserved_change": "-102.040000",
"balance_after": {
"available": "897.960000",
"reserved": "0.000000"
},
"reference": {
"type": "payout",
"id": "po_9Fz3Kd7RwP2mX8cT4nB6vQ1h",
"transaction_id": "W-1001"
},
"created_at": "2026-09-27T14:06:12.000Z"
},
{
"id": "txn_Pw7Ty2Ur9Ie4Oq6Wa1Sd8Fg3",
"type": "payout_held",
"direction": "out",
"status": "completed",
"currency": "USDT",
"available_change": "-102.040000",
"reserved_change": "+102.040000",
"balance_after": {
"available": "897.960000",
"reserved": "102.040000"
},
"reference": {
"type": "payout",
"id": "po_9Fz3Kd7RwP2mX8cT4nB6vQ1h",
"transaction_id": "W-1001"
},
"created_at": "2026-09-27T14:06:05.000Z"
},
{
"id": "txn_Hj3Kl8Zx5Cv1Bn7Mq2We9Rt4",
"type": "top_up",
"direction": "in",
"status": "completed",
"currency": "USDT",
"available_change": "+1000.000000",
"reserved_change": "+0.000000",
"balance_after": {
"available": "1000.000000",
"reserved": "0.000000"
},
"reference": {
"type": "deposit",
"id": "dep_7Hq2Lx9TbR4mW1cZ8kP3sN6v",
"network": "tron:0x2b6653dc",
"tx_hash": "9f1c2e7a4b3d5c6e8f0a1b2c3d4e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5a6",
"amount": "1000.000000"
},
"created_at": "2026-09-27T13:58:20.000Z"
}
],
"next_cursor": null
}rpk_mock_, e.g. rpk_mock_yourname. It answers from the example server with sample data — nothing real moves. Never enter your real key.Errors
| HTTP | Code | What to do |
|---|---|---|
| 400 Bad Request | INVALID_ | Not an account id, or a filter is malformed: from or to without a zone, an unknown direction, status or type, limit outside 1–100, or a cursor we did not return. |
| 404 Not Found | ACCOUNT_ | No account with that id for your key. |
401 AUTHENTICATION_FAILED, 403 SCOPE_REQUIRED and the 503s in Errors.Authorizations
Query Parameters
completed | pending | in_review | failed | rejected | cancelled. Crypto: completed once booked. pending: a top-up still confirming on-chain. in_review: a top-up that reached your address but could not be credited automatically, until Rampa resolves it. Pending and in-review rows come first, with zero changes, balance_after null and the deposit's dep_ id. Fiat: the payment's final status; one still processing is listed but cannot be filtered on.
completed, pending, in_review, failed, rejected, cancelled top_up | payout_held | payout_settled | payout_released | adjustment | payout. Crypto: top_up: a USDT transfer to your address. payout_held: you paid a QR, and its total moved from available to reserved. payout_settled: the payment completed and the reserved amount left. payout_released: it failed and the amount returned to available. adjustment: in or out by its sign. Fiat: payout, a payment paid from your BOB.
top_up, payout_held, payout_settled, payout_released, adjustment, payout