Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Create a sales invoice line object in Business Central.
HTTP request
Replace the URL prefix for Business Central depending on environment following the guideline.
POST businesscentralPrefix/companies({id})/salesInvoices({id})/salesInvoiceLines
POST businesscentralPrefix/companies({id})/salesInvoiceLines
Request headers
| Header | Value |
|---|---|
| Authorization | Bearer {token}. Required. |
| Content-Type | application/json |
Request body
In the request body, supply a JSON representation of a salesInvoiceLines object.
Response
If successful, this method returns 201 Created response code and a salesInvoiceLines object in the response body.
Example
Request
Here's an example of a request.
POST https://{businesscentralPrefix}/api/v2.0/companies({id})/salesInvoices({id})/salesInvoiceLines
Content-type: application/json
{
"itemId": "02a6738a-44e3-ea11-bb43-000d3a2feca1",
"lineType": "Item",
"lineObjectNumber": "1928-S",
"description": "AMSTERDAM Lamp",
"unitOfMeasureId": "5ca6738a-44e3-ea11-bb43-000d3a2feca1",
"unitOfMeasureCode": "PCS",
"unitPrice": 54.9,
"quantity": 3,
"discountAmount": 0,
"discountPercent": 0,
"taxCode": "FURNITURE",
"shipmentDate": "2020-08-21",
"itemVariantId": "00000000-0000-0000-0000-000000000000"
}
Response
Here's an example of the response.
Note
The response object shown here may be truncated for brevity. All of the properties will be returned from an actual call.
HTTP/1.1 201 Created
Content-type: application/json
{
"id": "238cb9c0-44e3-ea11-bb43-000d3a2feca1",
"documentId": "9e0f5c9c-44e3-ea11-bb43-000d3a2feca1",
"sequence": 10000,
"itemId": "02a6738a-44e3-ea11-bb43-000d3a2feca1",
"accountId": "00000000-0000-0000-0000-000000000000",
"lineType": "Item",
"lineObjectNumber": "1928-S",
"description": "AMSTERDAM Lamp",
"unitOfMeasureId": "5ca6738a-44e3-ea11-bb43-000d3a2feca1",
"unitOfMeasureCode": "PCS",
"unitPrice": 54.9,
"quantity": 3,
"discountAmount": 0,
"discountPercent": 0,
"discountAppliedBeforeTax": false,
"amountExcludingTax": 164.7,
"taxCode": "FURNITURE",
"taxPercent": 5,
"totalTaxAmount": 8.24,
"amountIncludingTax": 172.94,
"invoiceDiscountAllocation": 0,
"netAmount": 164.7,
"netTaxAmount": 8.24,
"netAmountIncludingTax": 172.94,
"shipmentDate": "2020-08-21",
"itemVariantId": "00000000-0000-0000-0000-000000000000",
"locationId": "00000000-0000-0000-0000-000000000000"
}
Create a new sales invoice with a line by using deep insert
If you need to create a new sales invoice together with one line, use a deep insert on Create salesInvoices. Send the header fields and one nested salesInvoiceLines entry in one POST request.
Deep insert and $batch are complementary:
- Use deep insert to create a new invoice and one line in one atomic request. No batch envelope is required.
- Use
$batchto add multiple lines to an existing invoice or combine multiple operations in one transactional request.
Request
POST https://{businesscentralPrefix}/api/v2.0/companies({id})/salesInvoices
Content-type: application/json
{
"customerNumber": "20000",
"salesInvoiceLines": [
{
"lineType": "Item",
"lineObjectNumber": "1928-S",
"quantity": 3
}
]
}
A successful request returns 201 Created and the created salesInvoices object.
Add multiple lines to an existing sales invoice by using $batch
If the sales invoice already exists, use an OData transactional $batch request to add multiple lines in a single HTTP call. This pattern is also useful when you need one transactional request that combines different operations.
Request
POST https://{businesscentralPrefix}/api/v2.0/$batch
Content-type: application/json
Isolation: snapshot
{
"requests": [
{
"method": "POST",
"id": "1",
"url": "companies({id})/salesInvoices({salesInvoiceId})/salesInvoiceLines",
"headers": {
"Content-Type": "application/json"
},
"body": {
"lineType": "Item",
"lineObjectNumber": "1928-S",
"quantity": 3,
"shipmentDate": "2024-04-15"
}
},
{
"method": "POST",
"id": "2",
"url": "companies({id})/salesInvoices({salesInvoiceId})/salesInvoiceLines",
"headers": {
"Content-Type": "application/json"
},
"body": {
"lineType": "Item",
"lineObjectNumber": "1936-S",
"quantity": 6,
"shipmentDate": "2024-04-15"
}
}
]
}
Tip
The Isolation: snapshot header ensures that if any line fails validation, all changes in the batch are rolled back. Learn more in Using OData transactional $batch requests.
Related information
Tips for working with the APIs
Sales Invoice Line
Get Sales Invoice Line
Update Sales Invoice Line
Delete Sales Invoice Line