---
title: "Get an invoice"
method: GET
path: "/invoices/{invoiceId}"
tags: ["Invoices"]
---

# Get an invoice

`GET /invoices/{invoiceId}`

## Request

- Base URL: `https://sb2api.servicechannel.com/v3`
- URL: `https://sb2api.servicechannel.com/v3/invoices/{invoiceId}`
- Auth: OAuth 2
  - Authorization code: `https://sb2login.servicechannel.com/oauth/authorize`
  - Token URL: `https://sb2login.servicechannel.com/oauth/token`
- TypeScript: <https://skmtc.dev/servicechannel/apis/servicechannel-api-v-3/docs/invoices/:invoiceId/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns the details of the specified invoice.

## Path parameters

- `invoiceId` integer, required

## Response `200`

The specified invoice is in the response.

- ServiceChannelServicesMessagingInvoicesApiGetInvoiceResponse
  - `VendorPayee` ServiceChannelServicesMessagingInvoicesApiVendorPayee
    - `Id` integer
    - `VendorNumber` string
    - `FullName` string
    - `Address1` string
    - `Address2` string
    - `City` string
    - `State` string
    - `Zip` string
    - `Country` string
  - `AdditionalApprovalCodes` ServiceChannelServicesMessagingApprovalCodesAdditionalApprovalCodeWithoutOptions[]
    - `Header` string
    - `Value` string
    - `SetupId` integer
    - `LocationId` integer
    - `DefaultOptionId` integer
    - `ValueFormat` integer
    - `EditableAtLineItemLevel` integer
    - `IsDeleted` boolean
  - `ProviderId` integer: Gets or sets provider identifier.
  - `SubscriberId` integer: Gets or sets subscriber identifier.
  - `LocationId` integer: Gets or sets location identifier.
  - `InvoiceNumber` string: Gets or sets invoice number.
  - `WithAutoApprovalCriteria` boolean: Gets or sets if invoice meets Auto Approval Criteria.
  - `PostedDateStr` string
  - `InvoiceDateStr` string
  - `PaidDateStr` string
  - `StarredDateStr` string
  - `ApprovedDateStr` string
  - `TransferredDateStr` string
  - `LastActionDateStr` string
  - `StatusChangeDateStr` string
  - `ProviderName` string
  - `PreviousUpdated` string
  - `Discount` number, double
  - `SubscriberFee` number, double
  - `ProviderFee` number, double
  - `InPaymentManager` boolean
  - `DiscountPercent` number, double
  - `Status` string
  - `EarlyPayFeePercent` number, double
  - `Labels` ServiceChannelApiModelWorkordersLabel[]
    - `LabelText` string
    - `InvoiceId` integer
    - `LabelId` integer
    - `IsActive` boolean
  - `WeatherEventTypeForInvoice` ServiceChannelApiModelInvoicesWeatherEventTypeForInvoice
    - `Id` integer
    - `Name` string
    - `Description` string
    - `InvoiceId` integer
  - `IsHideUsernameOnInvoice` boolean
  - `IsInvoiceNegativeLineItemsEnabled` boolean
  - `IsHolidayLaborRate` boolean
  - `ProjectId` integer: WO ProjectId
  - `IsRestrictedForChanges` boolean
  - `Payments` ServiceChannelServicesMessagingInvoicesInvoicePaymentResponse[]
    - `Id` integer: Numeric identifier of the payment.
    - `PaymentDate` string, date-time: Date and time when the specified invoice was paid.
    - `PaidBy` string: Username of the employee who made the payment.
    - `PaymentNumber` string: Order number of payment.
    - `PaymentAmount` number, double: Amount paid for the invoice. The value is negative if it’s a credited invoice.
  - `DisputeReason` string
  - `RejectionReasonDescription` string
  - `Id` integer
  - `Number` string: Gets or sets invoice number.
  - `BatchNumber` string: Gets or sets Batch number.
  - `InvoiceTax` number, double
  - `PostedTaxRate` number, float
  - `PostedTax2Rate` number, float
  - `VendorPayeeId` integer
  - `InvoiceTotal` number, double: Gets or sets total with tax amounts.
  - `InvoiceBalance` number, double
  - `Currency` ServiceChannelServicesMessagingCurrenciesCurrency
    - `Id` integer
    - `AlphabeticalCode` string
    - `DecimalCount` integer
    - `Entity` string
    - `CurrencyName` string
    - `NumericCode` string
    - `Rate` number, double
  - `ApprovedDate` string, date-time
  - `ApprovalCode` string
  - `EditableAdditionalApprovalCode` ServiceChannelServicesMessagingApprovalCodesEditableAdditionalApprovalCode
    - `Header` string
    - `Value` string
    - `SetupId` integer
    - `LocationId` integer
    - `DefaultOptionId` integer
    - `ValueFormat` integer
    - `EditableAtLineItemLevel` integer
    - `Options` ServiceChannelServicesMessagingApprovalCodesAdditionalApprovalCodeOption[]
      - `Id` integer
      - `Value` string
    - `DefaultValue` string
  - `PostedDate` string, date-time
  - `PostedBy` string
  - `Subtotal` number, double
  - `Trade` string
  - `TradeId` integer
  - `Category` ServiceChannelServicesMessagingInvoicesInvoiceCategoryMessaging
    - `Id` integer
    - `Name` string
  - `InvoiceAmountsDetails` ServiceChannelServicesMessagingInvoicesInvoiceAmountsDetails: Object containing the list of the invoice charges.
    - `LaborAmount` number, double: Amount of the labor charge. Must equal `Labors.Amount`.
    - `MaterialAmount` number, double: Amount of the material charge. Must equal `Materials.Amount`.
    - `TravelAmount` number, double: Amount of the trip charge.
    - `FreightAmount` number, double: Amount of the freight charge.
    - `OtherAmount` number, double: Amount of other charges. When you add this parameter, also specify `InvoiceAmountsDetails.OtherDescription`.
    - `OtherDescription` string
  - `InvoiceTaxesDetails` ServiceChannelServicesMessagingInvoicesInvoiceTaxesDetails: Object containing the list of taxes. You can add taxes as a fixed amount or as a percentage.
    - `LaborTaxPercent` number, double: Amount of the labor tax in percentage (for countries other than USA and Canada).
    - `MaterialTaxPercent` number, double: Amount of the material tax in percentage (for countries other than USA and Canada).
    - `TravelTaxPercent` number, double: Amount of the travel tax in percentage (for countries other than USA and Canada).
    - `FreightTaxPercent` number, double: Amount of the freight tax in percentage (for countries other than USA and Canada).
    - `OtherTaxPercent` number, double: Amount of other taxes in percentage (for countries other than USA and Canada).
    - `LaborTax` number, double: Amount of the labor tax.
    - `MaterialTax` number, double: Amount of the material tax.
    - `TravelTax` number, double: Amount of the travel tax.
    - `FreightTax` number, double: Amount of the freight tax.
    - `OtherTax` number, double: Amount of other taxes.
  - `Tax2Details` ServiceChannelServicesMessagingInvoicesTax2Details: Information on the additional tax. Only invoices for Canadian locations can have Tax2Details.
    - `Tax2Amount` number, double: Amount of the additional tax.
    - `Tax2Name` string: Name of the additional tax, for example, *VAT*, *HST*, *PST*, or *QST*.
  - `Labors` ServiceChannelServicesMessagingInvoicesInvoiceLabor[]
    - `Id` integer
    - `InvoiceId` integer: Invoice identifier.
    - `SkillLevel` string, byte: The skill level of a worker. Valid values: `1` - Supervisor, `2` - Technician, `3` - Helper.
    - `LaborType` string, byte: The type of the pay rate. Valid values: `1` - Regular, `2` - Overtime, `3` - Double time.
    - `NumOfTech` string, byte: Number of workers.
    - `HourlyRate` number, double: Worker hourly rate.
    - `Hours` number, double: Total hours the worker spent to complete the work order.
    - `Amount` number, double: The amount of the labor charge. The sum of all `Amount` parameters in the `Labors` array must equal `InvoiceAmountsDetails.LaborAmount`.
    - `IsOffShore` boolean: Type of the shore (`1` - Onshore, `2` - Offshore).
    - `ServiceType` string, byte: Type of the service (`1` - Design Engineering, Architecture, Technical Service, `2` - Installation and Supervision, `3` - Survey and Troubleshooting).
    - `CityPerformed` string: City where services are performed.
    - `RateDiscrepancyReason` string: Rate discrepancy reason.
    - `AgreedRate` number, double: Agreed rate.
    - `ApprovalCodeGroup` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeGroup
      - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
      - `ApprovalCode` string
      - `AdditionalApprovalCode` string
      - `Amount` number, double
      - `ApprovalCodes` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeChild[]
        - `Amount` number, double
        - `Id` integer
        - `InvoiceId` integer
        - `InvoiceChargeId` integer
        - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
        - `ApprovalCode` string
        - `AdditionalApprovalCode` string
        - `ParentId` integer
        - `InternalId` integer
        - `InternalParentId` integer
        - `IsDefault` boolean
    - `IsRateDiscrepancy` boolean
    - `isNontaxableVATEU` boolean
  - `Materials` ServiceChannelServicesMessagingInvoicesInvoiceMaterial[]
    - `Id` integer
    - `InvoiceId` integer: Invoice identifier.
    - `Description` string: Name or description of the material. Length limit is 100 symbols.
    - `PartNum` string: Part, serial, or manufacturer number of the material. Length limit is 100 symbols.
    - `UnitType` string, byte: Unit of measurement. Valid values: 1 — Each; 2 — Box; 3 — Feet; 4 — Sqft; 5 — Lbs; 6 — Gal; 7 — Oz. Default value: 1.
    - `UnitPrice` number, double: Price per unit.
    - `PartName` string: Part name.
    - `MarkUpPercent` number, double: Markup percent.
    - `AgreedMarkUpPercent` number, double: Agreed markup percent.
    - `MarkUpDiscrepancyReason` string: Mark up discrepancy reason.
    - `AgreedPartPrice` number, double: Agreed part price.
    - `Quantity` number, double: Quantity of the material.
    - `Amount` number, double: The amount of the material cost. The sum of all `Amount` parameters in the `Materials` array must equal `InvoiceAmountsDetails.MaterialAmount`.
    - `ApprovalCodeGroup` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeGroup
      - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
      - `ApprovalCode` string
      - `AdditionalApprovalCode` string
      - `Amount` number, double
      - `ApprovalCodes` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeChild[]
        - `Amount` number, double
        - `Id` integer
        - `InvoiceId` integer
        - `InvoiceChargeId` integer
        - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
        - `ApprovalCode` string
        - `AdditionalApprovalCode` string
        - `ParentId` integer
        - `InternalId` integer
        - `InternalParentId` integer
        - `IsDefault` boolean
    - `IsMarkUpDiscrepancy` boolean: Markup discrepancy.
    - `IsPartPriceDiscrepancy` boolean: Part price discrepancy.
    - `PriceDiscrepancyReason` string: Price discrepancy reason.
    - `isNontaxableVATEU` boolean
  - `Travels` ServiceChannelServicesMessagingInvoicesInvoiceTravel[]
    - `Id` integer
    - `InvoiceId` integer: Invoice identifier.
    - `Description` string: Description of the trip.
    - `UnitType` string, byte: Unit of measurement.
    - `UnitPrice` number, double: Price per unit.
    - `Quantity` number, double: Quantity.
    - `Amount` number, double: The amount of the trip cost. The sum of all `Amount` parameters in the `Travels` array must equal `InvoiceAmountsDetails.TravelAmount`.
    - `IsOffShore` boolean: Type of the shore (`1` - Onshore, `2` - Offshore).
    - `ApprovalCodeGroup` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeGroup
      - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
      - `ApprovalCode` string
      - `AdditionalApprovalCode` string
      - `Amount` number, double
      - `ApprovalCodes` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeChild[]
        - `Amount` number, double
        - `Id` integer
        - `InvoiceId` integer
        - `InvoiceChargeId` integer
        - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
        - `ApprovalCode` string
        - `AdditionalApprovalCode` string
        - `ParentId` integer
        - `InternalId` integer
        - `InternalParentId` integer
        - `IsDefault` boolean
    - `isNontaxableVATEU` boolean
  - `Others` ServiceChannelServicesMessagingInvoicesInvoiceOther[]
    - `Id` integer
    - `InvoiceId` integer: Invoice identifier.
    - `Description` string: Get or set description.
    - `Type` string: Get or set type of charge.
    - `Amount` number, double: Get or set the amount of money that is charged.
    - `UnitType` string, byte: Get or set the unit of measure
    - `UnitPrice` number, double: Get or set the price of unit
    - `Quantity` number, double: Get or set the quantity
    - `AgreedUnitPrice` number, double: Get or set the AgreedUnitPrice
    - `UnitPriceDiscrepancyReason` string: UnitPriceDiscrepancyReason
    - `PriceListOtherChargeId` integer: Get or set the PriceListOtherChargeId
    - `IsUnitPriceDiscrepancy` boolean: Get IsUnitPriceDiscrepancy
    - `ApprovalCodeGroup` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeGroup
      - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
      - `ApprovalCode` string
      - `AdditionalApprovalCode` string
      - `Amount` number, double
      - `ApprovalCodes` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeChild[]
        - `Amount` number, double
        - `Id` integer
        - `InvoiceId` integer
        - `InvoiceChargeId` integer
        - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
        - `ApprovalCode` string
        - `AdditionalApprovalCode` string
        - `ParentId` integer
        - `InternalId` integer
        - `InternalParentId` integer
        - `IsDefault` boolean
    - `isNontaxableVATEU` boolean
  - `TaxApprovalCodeGroups` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeGroup[]
    - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
    - `ApprovalCode` string
    - `AdditionalApprovalCode` string
    - `Amount` number, double
    - `ApprovalCodes` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeChild[]
      - `Amount` number, double
      - `Id` integer
      - `InvoiceId` integer
      - `InvoiceChargeId` integer
      - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
      - `ApprovalCode` string
      - `AdditionalApprovalCode` string
      - `ParentId` integer
      - `InternalId` integer
      - `InternalParentId` integer
      - `IsDefault` boolean
  - `Tax2ApprovalCodeGroups` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeGroup[]
    - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
    - `ApprovalCode` string
    - `AdditionalApprovalCode` string
    - `Amount` number, double
    - `ApprovalCodes` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeChild[]
      - `Amount` number, double
      - `Id` integer
      - `InvoiceId` integer
      - `InvoiceChargeId` integer
      - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
      - `ApprovalCode` string
      - `AdditionalApprovalCode` string
      - `ParentId` integer
      - `InternalId` integer
      - `InternalParentId` integer
      - `IsDefault` boolean
  - `FreightApprovalCodeGroups` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeGroup[]
    - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
    - `ApprovalCode` string
    - `AdditionalApprovalCode` string
    - `Amount` number, double
    - `ApprovalCodes` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCodeChild[]
      - `Amount` number, double
      - `Id` integer
      - `InvoiceId` integer
      - `InvoiceChargeId` integer
      - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
      - `ApprovalCode` string
      - `AdditionalApprovalCode` string
      - `ParentId` integer
      - `InternalId` integer
      - `InternalParentId` integer
      - `IsDefault` boolean
  - `WithMismatchedRates` boolean
  - `IsOutsourced` boolean
  - `StarredBy` string
  - `IsStarred` boolean
  - `IsTransferred` boolean
  - `StarredDate` string, date-time
  - `Description` string
  - `InvoiceDate` string, date-time
  - `LaborTaxIncluded` boolean
  - `TravelTaxIncluded` boolean
  - `MaterialsTaxIncluded` boolean
  - `FreightTaxIncluded` boolean
  - `OtherTaxIncluded` boolean
  - `NonTaxableLabor` integer
  - `NonTaxableTravel` integer
  - `NonTaxableMaterial` integer
  - `NonTaxableFreight` integer
  - `NonTaxableOther` integer
  - `IsExists` boolean
  - `StatusChangeDate` string, date-time
  - `StatusChangeUser` string
  - `StatusChangeUserid` string
  - `IsDuplicate` boolean
  - `WoTrackingNumber` integer: Gets or sets work order tracking number.
  - `Terms` string: terms
  - `Comments` string
  - `PaidDate` string, date-time
  - `TransferredDate` string, date-time
  - `LastActionDate` string, date-time
  - `UpdatedDate` string, date-time: Updated Date
  - `StatusHistoryShort` ServiceChannelServicesMessagingInvoicesStatusHistoryShort[]
    - `CreatedBy` string
    - `CreatedById` integer
    - `Status` string
    - `InvId` integer
    - `ActionDate` string
  - `WoAssignedTo` string: Gets or sets WO Assignee
  - `ApprovalCodes` ServiceChannelServicesMessagingInvoicesInvoiceApprovalCode[]
    - `Id` integer
    - `InvoiceId` integer
    - `InvoiceChargeId` integer
    - `ApprovalCodeType` 'Labor' | 'Travel' | 'Material' | 'Freight' | 'Other' | 'Tax' | 'Tax2' | 'LineItem' | 'FreightGenerated'
    - `ApprovalCode` string
    - `AdditionalApprovalCode` string
    - `ParentId` integer
    - `InternalId` integer
    - `InternalParentId` integer
    - `IsDefault` boolean
  - `IsChargesApprovalCodesDefault` boolean
  - `StoredFeatures` string[]

## Other responses

- `400`: The request is not accepted due to bad syntax, missing parameters, insufficient data, etc.
- `401`: The request is not authorized. <br/>Error codes: <br/> 504 - API call rejected by security permissions
- `404`: The requested resource does not exist on the server.

---

[API](https://skmtc.dev/servicechannel/apis/servicechannel-api-v-3.md) - [All operations](https://skmtc.dev/servicechannel/apis/servicechannel-api-v-3/llms.txt) - [OpenAPI document](https://skmtc.dev/servicechannel/apis/servicechannel-api-v-3/revisions/d490d6596809?raw)
