***

title: Reimbursing contractor expenses
subtitle: Step-by-step guide to processing expense reimbursements through invoices
max-toc-depth: 2
----------------

## Overview

This guide walks you through the complete process of reimbursing contractor expenses using the invoice adjustments API. You will learn how to create, document, review, and track expense reimbursements from submission to payment.

## When to use this workflow

Use this workflow when contractors incur business expenses that your organization agrees to reimburse:

* Travel expenses (flights, hotels, transportation)
* Equipment purchases (computers, monitors, peripherals)
* Software subscriptions and licenses
* Office supplies and materials
* Internet and phone bills
* Training and certification costs
* Client entertainment and meals

## Prerequisites

Before you begin, ensure you have:

* A valid API token with `invoice-adjustments:write` scope
* The `contract_id` of the contractor requesting reimbursement
* Receipts or documentation for the expenses
* Approval from the appropriate manager or budget owner

<Note>
  Most organizations require receipts for all expense reimbursements. Always attach documentation
  to maintain compliance and create a clear audit trail.
</Note>

## Step-by-step workflow

This example demonstrates reimbursing a contractor for travel expenses totaling \$847.50 for a client meeting.

<Steps>
  ### Gather expense details

  Before creating the reimbursement, collect all necessary information:

  * Total reimbursement amount
  * Expense category (travel, equipment, software, etc.)
  * Detailed description of expenses
  * Receipt or proof of purchase
  * Date expenses were incurred
  * Contract ID of the contractor

  Example expense breakdown:

  ```
  Flight: $450.00
  Hotel (2 nights): $320.00
  Ground transportation: $77.50
  Total: $847.50
  ```

  ### Upload supporting documentation

  If you have a receipt or invoice to attach, upload it first and note the file key.

  <Tip>
    Combine multiple receipts into a single PDF before uploading to simplify the reimbursement
    process. Include a summary sheet with itemized expenses.
  </Tip>

  ### Retrieve the contract

  Get the contractor's contract ID if you don't already have it.

  ```shell
  curl --request GET 'https://api.letsdeel.com/rest/v2/contracts' \
  --header 'Authorization: Bearer {{token}}'
  ```

  Response:

  ```json focus={4,7-8}
  {
    "data": [
      {
        "id": "c2345678",
        "title": "Senior Product Designer",
        "type": "ongoing_time_based",
        "worker_first_name": "Jane",
        "worker_last_name": "Smith",
        "status": "active",
        "compensation_details": {
          "amount": 7500.00,
          "currency_code": "USD",
          "frequency": "monthly"
        }
      }
    ]
  }
  ```

  ### Create the reimbursement adjustment

  Create the expense reimbursement with detailed description and attached receipt.

  ```shell
  curl --request POST 'https://api.letsdeel.com/rest/v2/invoice-adjustments' \
  --header 'Authorization: Bearer {{token}}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "data": {
      "type": "reimbursement",
      "amount": 847.50,
      "contract_id": "c2345678",
      "description": "Client meeting travel expenses - NYC Jan 15-17: Flight $450, Hotel $320 (2 nights), Transportation $77.50",
      "date_submitted": "2026-01-27",
      "attachment": {
        "key": "invoice_adjustment_attachments/2026/01/travel_receipts_jan2026.pdf",
        "filename": "travel_receipts_jan2026.pdf"
      }
    }
  }'
  ```

  <Note>
    Always include a breakdown of expenses in the description. This provides transparency and makes
    the approval process faster.
  </Note>

  Response:

  ```json focus={3-5}
  {
    "data": {
      "id": "ae6b97fa-c32c-4490-8cfa-05038e77898a",
      "status": "pending",
      "created": true,
      "created_at": "2026-01-27T14:20:00Z"
    }
  }
  ```

  The reimbursement is now created with `pending` status, waiting for review and approval.

  ### Verify the reimbursement

  Check that the reimbursement was created correctly with all documentation attached.

  ```shell
  curl --request GET 'https://api.letsdeel.com/rest/v2/invoice-adjustments/ae6b97fa-c32c-4490-8cfa-05038e77898a' \
  --header 'Authorization: Bearer {{token}}'
  ```

  Response:

  ```json focus={4-5,9,14-18,20-23}
  {
    "data": {
      "id": "ae6b97fa-c32c-4490-8cfa-05038e77898a",
      "type": "reimbursement",
      "status": "pending",
      "contract": {
        "id": "c2345678",
        "type": "ongoing_time_based",
        "title": "Senior Product Designer Contract"
      },
      "total_amount": "847.50",
      "currency_code": "USD",
      "description": "Client meeting travel expenses - NYC Jan 15-17: Flight $450, Hotel $320 (2 nights), Transportation $77.50",
      "attachment": {
        "key": "invoice_adjustment_attachments/2026/01/travel_receipts_jan2026.pdf",
        "filename": "travel_receipts_jan2026.pdf"
      },
      "created_at": "2026-01-27T14:20:00Z",
      "date_submitted": "2026-01-27",
      "reported_by": {
        "id": "worker_789012",
        "full_name": "Jane Smith"
      },
      "payment_cycle": {
        "start_date": "2026-01-01T00:00:00Z",
        "end_date": "2026-01-31T23:59:59Z"
      }
    }
  }
  ```

  Verify that the attachment is present and the amount is correct.

  ### Review and approve the reimbursement

  The manager or finance team reviews the receipts and approves the reimbursement.

  ```shell
  curl --request POST 'https://api.letsdeel.com/rest/v2/invoice-adjustments/ae6b97fa-c32c-4490-8cfa-05038e77898a/reviews' \
  --header 'Authorization: Bearer {{token}}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "data": {
      "status": "approved",
      "reason": "Receipts verified. Travel pre-approved by project manager. All expenses within policy limits."
    }
  }'
  ```

  <Tip>
    Include specific approval details in the reason field, such as who pre-approved the expense and
    which policy was applied. This creates a complete audit trail.
  </Tip>

  Response:

  ```json
  {
    "data": {
      "created": true
    }
  }
  ```

  ### Confirm approval and payment tracking

  Retrieve the adjustment to confirm approval and track payment status.

  ```shell
  curl --request GET 'https://api.letsdeel.com/rest/v2/invoice-adjustments/ae6b97fa-c32c-4490-8cfa-05038e77898a' \
  --header 'Authorization: Bearer {{token}}'
  ```

  Response:

  ```json focus={4,19-24}
  {
    "data": {
      "id": "ae6b97fa-c32c-4490-8cfa-05038e77898a",
      "status": "approved",
      "type": "reimbursement",
      "total_amount": "847.50",
      "currency_code": "USD",
      "description": "Client meeting travel expenses - NYC Jan 15-17: Flight $450, Hotel $320 (2 nights), Transportation $77.50",
      "attachment": {
        "key": "invoice_adjustment_attachments/2026/01/travel_receipts_jan2026.pdf",
        "filename": "travel_receipts_jan2026.pdf"
      },
      "reported_by": {
        "id": "worker_789012",
        "full_name": "Jane Smith"
      },
      "reviewed_by": {
        "id": "reviewer_234567",
        "full_name": "Michael Torres",
        "reviewed_at": "2026-01-27T16:45:00Z",
        "remarks": "Receipts verified. Travel pre-approved by project manager. All expenses within policy limits."
      },
      "payment_cycle": {
        "start_date": "2026-01-01T00:00:00Z",
        "end_date": "2026-01-31T23:59:59Z"
      }
    }
  }
  ```

  The reimbursement is approved and will be included in the next invoice for this payment cycle.
</Steps>

## Handling recurring expense reimbursements

For expenses that repeat monthly, such as internet or phone stipends, use recurring adjustments.

### Create recurring monthly stipend

```shell
curl --request POST 'https://api.letsdeel.com/rest/v2/invoice-adjustments?recurring=true' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "data": {
    "type": "reimbursement",
    "amount": 100.00,
    "contract_id": "c2345678",
    "description": "Monthly home office stipend (internet and utilities)",
    "date_submitted": "2026-01-27",
    "is_auto_approved": true
  }
}'
```

<Tip>
  Use auto-approval for standard recurring stipends to streamline processing. This is ideal for
  fixed monthly allowances that don't require receipt verification each time.
</Tip>

### Stop recurring stipend

When the recurring reimbursement is no longer needed, delete it to stop future occurrences.

```shell
curl --request DELETE 'https://api.letsdeel.com/rest/v2/invoice-adjustments/ae6b97fa-c32c-4490-8cfa-05038e77898a' \
--header 'Authorization: Bearer {{token}}'
```

## Handling declined reimbursements

If a reimbursement doesn't meet policy requirements, decline it with a clear explanation.

### Decline with feedback

```shell
curl --request POST 'https://api.letsdeel.com/rest/v2/invoice-adjustments/ae6b97fa-c32c-4490-8cfa-05038e77898a/reviews' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "data": {
    "status": "declined",
    "reason": "Receipt not legible. Please resubmit with a clear copy of the original receipt showing date, amount, and vendor name."
  }
}'
```

<Warning>
  When declining reimbursements, always provide specific reasons and actionable feedback. This
  helps contractors understand what they need to fix for resubmission.
</Warning>

### Resubmit corrected reimbursement

After addressing the decline reason, the contractor can submit a new reimbursement.

```shell
curl --request POST 'https://api.letsdeel.com/rest/v2/invoice-adjustments' \
--header 'Authorization: Bearer {{token}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "data": {
    "type": "reimbursement",
    "amount": 847.50,
    "contract_id": "c2345678",
    "description": "Client meeting travel expenses - NYC Jan 15-17 (resubmission with clear receipts): Flight $450, Hotel $320 (2 nights), Transportation $77.50",
    "date_submitted": "2026-01-27",
    "attachment": {
      "key": "invoice_adjustment_attachments/2026/01/travel_receipts_jan2026_v2.pdf",
      "filename": "travel_receipts_jan2026_clear.pdf"
    }
  }
}'
```

## Best practices

### Documentation requirements

**Always attach receipts that include:**

* Vendor or merchant name
* Date of purchase or service
* Itemized list of charges
* Total amount paid
* Payment method

**For travel expenses:**

* Flight confirmation with ticket price
* Hotel invoice with dates and nightly rate
* Transportation receipts (taxi, rideshare, parking)
* Meal receipts with date and location

**For equipment:**

* Full invoice or receipt
* Product specifications
* Warranty information
* Proof of business use

### Amount verification

Before creating reimbursements:

* Add up all line items to verify the total
* Check that amounts match the receipts exactly
* Convert foreign currency using the exchange rate from the transaction date
* Include taxes and fees if they are reimbursable per policy

### Pre-approval workflow

For large or unusual expenses:

1. Contractor requests pre-approval before making the purchase
2. Manager approves the planned expense and budget
3. Contractor makes the purchase and saves receipts
4. Contractor submits reimbursement with receipts
5. Finance verifies against pre-approval and receipts
6. Reimbursement is approved and paid

### Expense policy compliance

Create clear expense policies that define:

* Maximum amounts for different expense categories
* What expenses are reimbursable vs. non-reimbursable
* Required documentation and approval levels
* Timeframe for submitting reimbursement requests
* Currency conversion policies
* Per diem rates for meals and incidentals

### Timing considerations

* Submit reimbursements promptly after expenses are incurred
* Some organizations require submission within 30 or 60 days
* Submit early in the payment cycle to ensure inclusion in the current invoice
* Late submissions may roll to the next payment cycle

### Audit trail

Maintain a complete audit trail by:

* Attaching all receipts and documentation
* Including detailed descriptions
* Recording approval reasons
* Keeping copies of declined reimbursements
* Tracking reimbursement by category and contractor

## Troubleshooting

<AccordionGroup>
  <Accordion title="Reimbursement declined due to missing receipt">
    Attach a clear, legible receipt that includes all required information (vendor, date, amount,
    items). If the original receipt is lost, request a duplicate from the vendor or provide a
    credit card statement as supporting documentation.
  </Accordion>

  <Accordion title="Amount does not match receipt">
    Verify the total amount includes all line items from the receipt. If you made a mistake,
    update the pending adjustment with the correct amount before approval.
  </Accordion>

  <Accordion title="Expense incurred in foreign currency">
    Convert the amount to the contract currency using the exchange rate from the transaction date.
    Include the original amount, currency, and exchange rate used in the description. Attach the
    receipt showing the foreign currency amount.
  </Accordion>

  <Accordion title="Receipt is in a foreign language">
    Provide a translation of key information (vendor, date, items, amount) in the description
    field. For large expenses, consider attaching a certified translation.
  </Accordion>

  <Accordion title="Expense was split across multiple contractors">
    Create separate reimbursements for each contractor's portion. Clearly indicate in the
    description that the expense was shared and specify each person's share. Attach the full
    receipt to all related reimbursements.
  </Accordion>

  <Accordion title="Reimbursement exceeds expense policy limits">
    If the expense exceeds policy limits, either reduce the reimbursement amount to the policy
    maximum or request special approval from senior management before submitting.
  </Accordion>

  <Accordion title="Cannot attach multiple receipts to one reimbursement">
    Combine all receipts into a single PDF file before uploading. Include a cover sheet
    summarizing all expenses with a total. Many free PDF tools can merge multiple files.
  </Accordion>
</AccordionGroup>

## Next steps

* Review the complete [invoice adjustments documentation](/api/contractors/invoice-adjustments) for other adjustment types
* Learn about [paying contractor bonuses](/api/contractors/paying-contractor-bonus) for performance-based payments
* Explore [off-cycle payments](/api/reference/endpoints/invoicing/create-off-cycle-payment) for urgent reimbursements outside the regular cycle
* Set up [webhooks](/api/webhooks/introduction) to monitor reimbursement status changes automatically
