Skip to content

Reimbursements

Beta

The Reimbursements API is in Beta. Additive changes are normal, and breaking changes may be made with notice while the resource incorporates customer feedback. See Versioning and compatibility.

These endpoints read reimbursements for the business linked to your API Access Token. They all require the reimbursements:read scope.

List reimbursements

GET /api/v1/reimbursements returns reimbursements for your business.

curl "https://rhoapi.rho.co/api/v1/reimbursements?approval_status=approved&page_size=20" \
  -H "Authorization: Bearer $RHO_API_TOKEN"

user_id and approval_status may each be repeated. Repeated values for one filter are combined as alternatives, and different filters combine together. For example, two user_id values and approval_status=approved return approved reimbursements belonging to either user.

The date filters are transaction_date_after, transaction_date_before, created_after, and created_before. transaction_date is the UTC calendar date of the spend. Each after bound is inclusive and each before bound is exclusive. has_attachments=true returns only reimbursements with at least one attachment; false returns only those without one. Leaving it out does not filter by attachments.

sort_by accepts created_at, transaction_date, or amount. order accepts asc or desc. The default is created_at descending. page_size defaults to 20 and may be from 1 to 100. Follow page.next_page_token as described in Pagination.

{
  "reimbursements": [
    {
      "id": "60000000-0000-4000-8000-000000000002",
      "amount": {"amount": 9800, "currency": "USD"},
      "original_amount": {"amount": 8400, "currency": "EUR"},
      "merchant_name": "Hotel Europa",
      "merchant_category": "Lodging",
      "transaction_date": "2026-06-18",
      "created_at": "2026-06-19T09:00:00Z",
      "type": "out_of_pocket",
      "user_id": "40000000-0000-4000-8000-000000000002",
      "approval_status": "approved",
      "payment_status": "paid",
      "note": "Conference hotel",
      "attendee_user_ids": [],
      "client": "Atlas",
      "fields": [
        {
          "field_id": "field-department",
          "field_name": "Department",
          "value": "Sales",
          "value_id": "option-department-sales"
        }
      ],
      "attachments": [
        {
          "file_id": "50000000-0000-4000-8000-000000000001",
          "file_name": "hotel-receipt.pdf",
          "automatically_matched": true,
          "attached_at": "2026-06-19T09:05:00Z"
        }
      ]
    }
  ],
  "page": {"next_page_token": null}
}

Amounts are integer minor units. original_amount is the submitted amount when the source recorded one separately; it can use the same currency as amount or a different currency. Nullable properties remain present in JSON with null when no value was recorded. This includes merchant details, note, client, an attachment's filename and attachment time, and a custom field's value_id.

type is mileage or out_of_pocket. Approval status is one of not_ready, needs_approval, approved, automatically_approved, rejected, or archived. Payment status is one of awaiting, processing, paid, marked_as_paid, failed, or unknown; only payment status uses unknown when the payment state cannot be named.

fields contains all coding tags returned for the reimbursement, including custom fields and system-managed tags such as Department and Labels. A selected option has a stable value_id; a free-text value has value_id: null.

Get a reimbursement

GET /api/v1/reimbursements/{reimbursement_id} returns one reimbursement with the same fields as the list.

curl "https://rhoapi.rho.co/api/v1/reimbursements/60000000-0000-4000-8000-000000000002" \
  -H "Authorization: Bearer $RHO_API_TOKEN"

Download an attachment

GET /api/v1/reimbursements/{reimbursement_id}/files/{file_id} returns file metadata and a fresh signed download URL. The file and reimbursement must both belong to your business, and the file must be attached to that reimbursement. Follow the returned URL without an Authorization header and do not store it.

curl "https://rhoapi.rho.co/api/v1/reimbursements/60000000-0000-4000-8000-000000000002/files/50000000-0000-4000-8000-000000000001" \
  -H "Authorization: Bearer $RHO_API_TOKEN"

Reference

See the Rho API v1 reference for all fields and parameters.