Skip to main content
POST
/
expense-report
cURL
curl --request POST \
  --url https://api.slash.com/expense-report \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "submittedByUserId": "<string>",
  "amountCents": 123,
  "transactionDate": "2023-11-07T05:31:56Z",
  "destinationId": "<string>",
  "merchant": {
    "id": "<string>"
  },
  "currency": "USD",
  "memo": "<string>",
  "documentIds": [
    "<string>"
  ],
  "fxRateToUsd": "<string>",
  "fxRateUpdatedAt": "2023-11-07T05:31:56Z",
  "noReceiptReason": "<string>"
}
'
{
  "expenseReport": {
    "id": "<string>",
    "legalEntityId": "<string>",
    "submittedByUserId": "<string>",
    "amountCents": 123,
    "currency": "<string>",
    "transactionDate": "2023-11-07T05:31:56Z",
    "destinationId": "<string>",
    "submittedAt": "2023-11-07T05:31:56Z",
    "timestamp": "2023-11-07T05:31:56Z",
    "merchant": {
      "merchantV2": {
        "id": "<string>",
        "name": "<string>",
        "isLive": true,
        "isInstantCashback": true,
        "metadata": {
          "timestamp": "2023-11-07T05:31:56Z"
        },
        "heronId": "<string>",
        "iconUrl": "<string>",
        "logoUrl": "<string>",
        "url": "<string>",
        "merchantCategoryId": "<string>"
      }
    },
    "merchantV2Id": "<string>",
    "customMerchantId": "<string>",
    "memo": "<string>",
    "fxRateToUsd": "<string>",
    "fxRateUpdatedAt": "2023-11-07T05:31:56Z",
    "noReceiptReason": "<string>",
    "documents": [
      {
        "document": {
          "id": "<string>",
          "accountId": "<string>",
          "startDate": "<string>",
          "endDate": "<string>",
          "accessLevel": "<string>",
          "timestamp": "<string>",
          "filename": "<string>",
          "error": "<string>",
          "checksum": "<string>",
          "tags": [
            "<string>"
          ],
          "fileMetadata": {
            "size": 123,
            "type": "<string>"
          }
        },
        "url": "<string>"
      }
    ],
    "aggregatedTransaction": {
      "id": "<string>",
      "date": "<string>",
      "amount": {
        "amount_cents": 123
      }
    },
    "destination": {
      "id": "<string>",
      "accountName": "<string>",
      "institution": {
        "id": "<string>",
        "name": "<string>"
      },
      "mask": "<string>",
      "institutionLogo": "<string>"
    },
    "submittedByUser": {
      "id": "<string>",
      "name": {
        "first": "<string>",
        "last": "<string>",
        "full": "<string>"
      }
    },
    "reviewedByUser": {
      "id": "<string>",
      "name": {
        "first": "<string>",
        "last": "<string>",
        "full": "<string>"
      }
    },
    "review": {
      "id": "<string>",
      "expenseReportId": "<string>",
      "reviewedByUserId": "<string>",
      "reviewedAt": "2023-11-07T05:31:56Z",
      "timestamp": "2023-11-07T05:31:56Z",
      "rejectionReason": "<string>"
    }
  }
}

Authorizations

X-API-Key
string
header
required

API key authentication for public API requests.

Keys come in two flavors:

  • Legal-entity-scoped keys are pinned to a single legal entity. Minted via the dashboard under a specific entity; every request acts on that entity.
  • User-scoped keys are pinned to a user and span every legal entity that user has access to. Every request made with a user-scoped key (except GET /legal-entity, which lists the legal entities the user can access) must include an x-legal-entity header naming the legal entity the request is operating on. Requests without the header are rejected with 400. The authenticated user must have an active permission role on the supplied legal entity, otherwise the request is rejected with 403.

Query Parameters

The legal entity ID. Required if authenticating with access to multiple legal entities.

Body

application/json
submittedByUserId
string
required

The user ID of the employee submitting the expense report.

amountCents
integer
required

The expense amount in cents.

transactionDate
string<date-time>
required

The date of the transaction being reimbursed.

destinationId
string
required

The user's bank account ID for payout.

merchant
object
required

Merchant reference for the expense.

currency
string
default:USD

ISO currency code (e.g., 'USD').

memo
string | null

Description or notes for the expense.

documentIds
string[]

IDs of uploaded receipt documents to attach.

fxRateToUsd
string | null

FX rate from expense currency to USD at submission time. Required for non-USD currencies.

fxRateUpdatedAt
string<date-time> | null

When the FX rate was captured.

noReceiptReason
string | null

Reason for not having a receipt. Required when no documentIds are provided.

Response

OK

expenseReport
PublicExpenseReportWithMetadata · object
required

An expense report with enriched metadata, stripped for public API consumption