---
title: "Add an invoice to a work order"
method: POST
path: "/invoices"
tags: ["Invoices"]
---

# Add an invoice to a work order

`POST /invoices`

## Request

- Base URL: `https://sb2api.servicechannel.com/v3`
- URL: `https://sb2api.servicechannel.com/v3/invoices`
- 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/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates an invoice in the *Open* status for the specified work order.
            <br />Find out more about [creating an invoice](https://servicechannel.atlassian.net/wiki/spaces/SCU/pages/2205811424/Creating+an+Invoice) in ServiceChannel University.

## Request body

- ServiceChannelServicesWebApiModelsRequestInvoicesCreateInvoiceRequest
  - `InvoiceNumber` string, required: Invoice identifier. Must be unique for each invoice.
  - `InvoiceDate` string, date-time: Date and time when the invoice was issued.
  - `InvoiceDateDTO` string, date-time: Date and time when the invoice was issued. Indicated with the UTC offset.
  - `WoIdentifier` string, required
  - `InvoiceTax` number, double: The amount of the tax.
  - `PostedTaxRate` number, float
  - `NonTaxableLabor` integer
  - `NonTaxableTravel` integer
  - `NonTaxableMaterial` integer
  - `NonTaxableFreight` integer
  - `NonTaxableOther` integer
  - `WithMismatchedRates` boolean
  - `InvoiceTotal` number, double
  - `InvoiceText` string: Detailed description of the work completed. Subscriber can change this field to `required`.
  - `InvoiceAmountsDetails` ServiceChannelServicesWebApiModelsRequestInvoicesInvoiceAmountsDetails: 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` ServiceChannelServicesWebApiModelsRequestInvoicesInvoiceTaxesDetails: 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` ServiceChannelServicesWebApiModelsRequestInvoicesTax2Details: 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*.
  - `TaxIncluded` ServiceChannelServicesWebApiModelsRequestInvoicesCreatingInvoiceTaxIncludedRequest
    - `LaborTaxIncluded` string, byte
    - `TravelTaxIncluded` string, byte
    - `MaterialTaxIncluded` string, byte
    - `FreightTaxIncluded` string, byte
    - `OtherTaxIncluded` string, byte
  - `Labors` ServiceChannelServicesWebApiModelsRequestInvoicesInvoiceLaborWithPriceList[]: Get or set the labors description (Subscriber can change this field to required).
    - `PriceListId` integer: Price list identifier. This parameter is returned only if the invoice labor details are retrieved with price list information. Otherwise, this parameter is not returned.
    - `PriceListName` string: Price list name. This parameter is returned only if the invoice labor details are retrieved with price list information.
    - `SkillLevelName` string: Skill level name. This parameter is returned only if the invoice labor details are retrieved with price list information.
    - `LaborTypeName` string: Labor type name. This parameter is returned only if the invoice labor details are retrieved with price list information.
    - `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.
    - `isNontaxableVATEU` boolean
  - `Materials` ServiceChannelServicesWebApiModelsRequestInvoicesInvoiceMaterial[]: Get or set the materials description (Subscriber can change this field to required).
    - `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`.
    - `PriceDiscrepancyReason` string: Price discrepancy reason.
    - `isNontaxableVATEU` boolean
  - `Travels` ServiceChannelServicesWebApiModelsRequestInvoicesInvoiceTravel[]: Get or set the travels description (Subscriber can change this field to required).
    - `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).
    - `isNontaxableVATEU` boolean
  - `Others` ServiceChannelServicesWebApiModelsRequestInvoicesInvoiceOther[]: Get or set the others description (Subscriber can change this field to required).
    - `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
    - `isNontaxableVATEU` boolean
  - `ExplainDispute` string: Gets or sets the explain dispute.
  - `SubmitDisputed` boolean
  - `VendorId` integer: Gets or sets vendor payee identifier.
  - `Terms` string: Invoice Terms
  - `Attachments` AddInvoiceAttachmentRequest[]: Optional
    - `Name` string
    - `Description` string
    - `Path` string
    - `Visibility` integer: Note visibility - valid values: null, 1, 2, 3
    - `IsInvoiceDigitalCopy` boolean: Mark attachment as Invoice Digital Copy

## Response `201`

The ID of the created invoice is in the response.

## Other responses

- `400`: The request is not accepted due to bad syntax, missing parameters, insufficient data, etc. <br/>Error codes: 503 - Request should not be null 601 - Location not found 607 - Empty Location State 904 - Invalid WO Status. WO must be in 'COMPLETED' status with empty extended status or 'COMPLETED' status with 'CONFIRMED' extended status 914 - Invalid 'Currency' value 917 - Invalid Tracking Number 1100 - Invalid Other Amount Description 1101 - Invalid Tax2 name 1103 - Invalid Total 1104 - Invoice Total > NTE 1105 - Invoice exists 1106 - Invoice Creation Error 1107 - Duplicate Invoice number 1108 - Total is null 1109 - Completed Date is null 1110 - Invoice Date < Completed Date 1111 - This invoice is set to auto-invoice 1112 - Electronic Signature Agreement Required 1113 - Work order not found 1114 - Wrong Work Order currency 1115 - Work order currency not found 1116 - Invoicing is disabled. Invoicing might be disabled if your company account is currently in an inactive state in Fixxbook 1117 - Invoice creation Unexpected Result 1119 - Invoice labor amount is not equals summary labor items 1120 - Invoice material amount is not equals summary material items amounts 1121 - Invoice Date is older than X day(s) from today 1122 - Invoice Date is greater than X day(s) from today 1123 - Invoice material description length overflow 1124 - Invoice material part number length overflow 1125 - Tax validation error: X 1126 - Sales Tax should be 0 - X location 1127 - Invalid Invoice Number 1135 - Locations can't have GST tax 1136 - Locations can't have tax2. Only invoices for Canadian Locations can have the Tax2Details array. Tax2Details is only applicable for invoices of locations in countries that have some form of a value-added tax 1145 - You have an outstanding balance with ServiceChannel. In order to invoice, please login to Fixxbook.com and update your Payment Method. Once your payment Method is updated you will be able to invoice 1146 - Invoice doesn't have Taxes Breakdown 1147 - Invoice Taxes Breakdown has incorrect sum 1151 - Labor Line Items Required 1152 - Material Line Items Required 1159 - Invoice material unit type is invalid (should be from 1 to 7) 1163 - Resolution text required in Invoice Text field 1180 - Invoice Number is not correct 1193 - Negative amounts in Other Line Items not allowed 1194 - Invoice labor skill level is invalid (should be from 1 to 3) 1195 - Invoice labor type is invalid (should be from 1 to 3) 1196 - Invoice technician quantity is invalid (should be > 0) 1198 - The explanation of Dispute status is empty 11260 - Tax not supported for this client. For exceptions use ServiceChannel website 11931 - Negative amounts in Travel Line Items not allowed 11932 - Negative amounts in Material Line Items not allowed 11933 - Negative amounts in Labor Line Items not allowed 11992 - Vendor Id is not valid
- `401`: The request is not authorized. <br/>Error codes: <br/> 504 - API call rejected by security permissions

---

[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)
