---
title: "Returns one invoice with its lines and payments."
method: GET
path: "/api/v1/invoices/{id}"
tags: ["Invoices"]
---

# Returns one invoice with its lines and payments.

`GET /api/v1/invoices/{id}`

## Request

- Base URL: `https://app.flexonthejob.com`
- URL: `https://app.flexonthejob.com/api/v1/invoices/{id}`
- Auth: HTTP bearer

Requires `ViewInvoices`. `id` may be the numeric id or the `syncId`.
Sends a weak `ETag`; repeat with `If-None-Match` to get 304 when unchanged.

## Path parameters

- `id` string, required

## Response `200`

The invoice.

- InvoiceDetail: Full invoice as returned by `GET /api/v1/invoices/{id}`.
  - `invoice` InvoiceSummary: Invoice header as listed by `GET /api/v1/invoices`. Timestamps are ISO-8601 UTC (`2026-09-05T14:30:00Z`).
    - `id` integer: Numeric id, usable in `/api/v1/invoices/{id}`.
    - `syncId` string, uuid: Stable cross-device id; also the pagination cursor.
    - `invoiceNumber` string: Human-readable invoice number, e.g. `INV-1042`.
    - `status` 'Draft' | 'Sent' | 'Viewed' | 'PartiallyPaid' | 'Paid' | 'Overdue' | 'Cancelled' | 'Outstanding' | 'Consolidated'
    - `customerId` integer, nullable: Billed customer id, if any.
    - `customerName` string, nullable: Billed customer name, if any.
    - `jobId` integer, nullable: Job the invoice bills, if any.
    - `jobNumber` string, nullable: Job number, if any.
    - `salesOrderId` integer, nullable: Sales order the invoice bills, if any.
    - `description` string, nullable: Optional description.
    - `invoiceDate` string, date-time: Issue date, ISO-8601 UTC at midnight, e.g. `2026-09-05T00:00:00Z`.
    - `dueDate` string, date-time: Due date, ISO-8601 UTC at midnight, e.g. `2026-10-05T00:00:00Z`.
    - `subtotal` number, double: Sum of lines before tax.
    - `taxAmount` number, double: Tax charged.
    - `total` number, double: Subtotal plus tax.
    - `amountPaid` number, double: Payments applied.
    - `storeCreditApplied` number, double: Store credit applied.
    - `balanceDue` number, double: Total minus payments and store credit.
    - `isConsolidated` boolean: True when this invoice consolidates other invoices.
    - `consolidatedIntoInvoiceId` integer, nullable: Id of the consolidated invoice that absorbed this one, if any.
    - `sentDate` string, date-time, nullable: When the invoice was first sent, ISO-8601 UTC (e.g. `2026-09-05T14:30:00Z`); null if never sent.
    - `paidDate` string, date-time, nullable: When the invoice was paid in full, ISO-8601 UTC; null until paid.
    - `createdAt` string, date-time: Creation time, ISO-8601 UTC.
    - `updatedAt` string, date-time, nullable: Last modification time, ISO-8601 UTC; null when never edited. Use with the `updatedSince` filter to poll for changes.
  - `lines` InvoiceLineDto[]: Lines in display order.
    - `id` integer: Line id.
    - `syncId` string, uuid: Stable cross-device id.
    - `description` string: Line description.
    - `itemType` 'Material' | 'Labor' | 'Service' | 'Other'
    - `quantity` number, double: Quantity billed.
    - `unitOfMeasure` string, nullable: Unit of measure, if any.
    - `unitPrice` number, double: Price per unit after discount.
    - `originalUnitPrice` number, double, nullable: Price per unit before discount, when a discount applied.
    - `discountPercent` number, double: Discount percentage applied to the line.
    - `discountAmount` number, double: Discount amount applied to the line.
    - `total` number, double: Quantity × unit price.
    - `notes` string, nullable: Line notes, if any.
    - `sortOrder` integer: Display order.
  - `payments` PaymentsSummary: Payments applied to an invoice.
    - `count` integer: Number of payments.
    - `totalPaid` number, double: Sum of payment amounts.
    - `lastPaymentDate` string, date-time, nullable: Most recent payment date, ISO-8601 UTC; null when no payment has been recorded.
    - `payments` InvoicePaymentDto[]: Individual payments, oldest first.
      - `id` integer: Payment id.
      - `syncId` string, uuid: Stable cross-device id.
      - `amount` number, double: Amount paid.
      - `paymentDate` string, date-time: Payment date, ISO-8601 UTC, e.g. `2026-09-05T14:30:00Z`.
      - `paymentMethod` string, nullable: Method (e.g. Cash, Card, Check), if recorded.
      - `referenceNumber` string, nullable: Check/transaction reference, if recorded.
  - `terms` string, nullable: Payment terms text.
  - `notes` string, nullable: Invoice notes shown to the customer.
  - `paymentInstructions` string, nullable: Instructions printed on the invoice.
  - `paymentLinkUrl` string, nullable: Online payment link, if one was generated.
  - `taxRate` number, double: Tax rate applied (percentage).

## Other responses

- `304`: Unchanged since the supplied ETag.
- `401`: Unauthorized
- `403`: Forbidden
- `404`: No such invoice in the calling organization.
- `429`: Too Many Requests

---

[API](https://skmtc.dev/flexonthejob/apis/flex-api.md) · [All operations](https://skmtc.dev/flexonthejob/apis/flex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/flexonthejob/apis/flex-api/revisions/19c8f4d27acf?raw)
