List refunds (paginated, supports sync filters)
GET
/refunds
const url = 'http://localhost:8000/api/v1/refunds?limit=20';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'http://localhost:8000/api/v1/refunds?limit=20' \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ” limit
integer
Number of items to return per page
synced_since
string format: date-time
Get recent changes after this date
no_client_id
boolean
Get results with no client id
Responses
Section titled “ Responses ”Refunds visible to the user
Media type application/json
object
data
Array<object>
object
id
A Refund row marks an income transaction as refunding money received
back from a prior expense. The original_transaction_id link is
optional — users sometimes log a refund without remembering or caring
which specific expense it came from. See the Refundable trait on
Transaction for the query helpers.
integer
refund_transaction_id
The income transaction marked as a refund
integer
original_transaction_id
Optional link to the expense being refunded
integer
client_generated_id
string
last_synced_at
string format: date-time
created_at
string format: date-time
updated_at
string format: date-time
Example generated
{ "data": [ { "id": 1, "refund_transaction_id": 1, "original_transaction_id": 1, "client_generated_id": "example", "last_synced_at": "2026-04-15T12:00:00Z", "created_at": "2026-04-15T12:00:00Z", "updated_at": "2026-04-15T12:00:00Z" } ]}