curl --request POST \
--url https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"asDraft": true,
"useUndeliveredQuantities": true,
"disableAutomaticWorkflows": true,
"reduceSalesOrderQuantities": true,
"reduceDeliveryQuantities": true,
"cancelWebShopOrder": true,
"lineItems": [
{
"salesInvoiceLineItemId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"quantity": 123,
"priceNet": 123
}
],
"allowQuantityExceeded": true,
"allowAmountExceeded": true
}
'import requests
url = "https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct"
payload = {
"asDraft": True,
"useUndeliveredQuantities": True,
"disableAutomaticWorkflows": True,
"reduceSalesOrderQuantities": True,
"reduceDeliveryQuantities": True,
"cancelWebShopOrder": True,
"lineItems": [
{
"salesInvoiceLineItemId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"quantity": 123,
"priceNet": 123
}
],
"allowQuantityExceeded": True,
"allowAmountExceeded": True
}
headers = {
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
asDraft: true,
useUndeliveredQuantities: true,
disableAutomaticWorkflows: true,
reduceSalesOrderQuantities: true,
reduceDeliveryQuantities: true,
cancelWebShopOrder: true,
lineItems: [
{
salesInvoiceLineItemId: 'b45f6432-2462-4c6f-b00f-1d9d01000000',
quantity: 123,
priceNet: 123
}
],
allowQuantityExceeded: true,
allowAmountExceeded: true
})
};
fetch('https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'asDraft' => true,
'useUndeliveredQuantities' => true,
'disableAutomaticWorkflows' => true,
'reduceSalesOrderQuantities' => true,
'reduceDeliveryQuantities' => true,
'cancelWebShopOrder' => true,
'lineItems' => [
[
'salesInvoiceLineItemId' => 'b45f6432-2462-4c6f-b00f-1d9d01000000',
'quantity' => 123,
'priceNet' => 123
]
],
'allowQuantityExceeded' => true,
'allowAmountExceeded' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-tenant-id: <x-tenant-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct"
payload := strings.NewReader("{\n \"asDraft\": true,\n \"useUndeliveredQuantities\": true,\n \"disableAutomaticWorkflows\": true,\n \"reduceSalesOrderQuantities\": true,\n \"reduceDeliveryQuantities\": true,\n \"cancelWebShopOrder\": true,\n \"lineItems\": [\n {\n \"salesInvoiceLineItemId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"quantity\": 123,\n \"priceNet\": 123\n }\n ],\n \"allowQuantityExceeded\": true,\n \"allowAmountExceeded\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-tenant-id", "<x-tenant-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"asDraft\": true,\n \"useUndeliveredQuantities\": true,\n \"disableAutomaticWorkflows\": true,\n \"reduceSalesOrderQuantities\": true,\n \"reduceDeliveryQuantities\": true,\n \"cancelWebShopOrder\": true,\n \"lineItems\": [\n {\n \"salesInvoiceLineItemId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"quantity\": 123,\n \"priceNet\": 123\n }\n ],\n \"allowQuantityExceeded\": true,\n \"allowAmountExceeded\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"asDraft\": true,\n \"useUndeliveredQuantities\": true,\n \"disableAutomaticWorkflows\": true,\n \"reduceSalesOrderQuantities\": true,\n \"reduceDeliveryQuantities\": true,\n \"cancelWebShopOrder\": true,\n \"lineItems\": [\n {\n \"salesInvoiceLineItemId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"quantity\": 123,\n \"priceNet\": 123\n }\n ],\n \"allowQuantityExceeded\": true,\n \"allowAmountExceeded\": true\n}"
response = http.request(request)
puts response.read_body{
"salesInvoiceCorrectionId": "b45f6432-2462-4c6f-b00f-1d9d01000000"
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}Creates a new sales invoice correction from an existing invoice.
Creates a new sales invoice correction from an existing invoice.
curl --request POST \
--url https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-tenant-id: <x-tenant-id>' \
--data '
{
"asDraft": true,
"useUndeliveredQuantities": true,
"disableAutomaticWorkflows": true,
"reduceSalesOrderQuantities": true,
"reduceDeliveryQuantities": true,
"cancelWebShopOrder": true,
"lineItems": [
{
"salesInvoiceLineItemId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"quantity": 123,
"priceNet": 123
}
],
"allowQuantityExceeded": true,
"allowAmountExceeded": true
}
'import requests
url = "https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct"
payload = {
"asDraft": True,
"useUndeliveredQuantities": True,
"disableAutomaticWorkflows": True,
"reduceSalesOrderQuantities": True,
"reduceDeliveryQuantities": True,
"cancelWebShopOrder": True,
"lineItems": [
{
"salesInvoiceLineItemId": "b45f6432-2462-4c6f-b00f-1d9d01000000",
"quantity": 123,
"priceNet": 123
}
],
"allowQuantityExceeded": True,
"allowAmountExceeded": True
}
headers = {
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-tenant-id': '<x-tenant-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
asDraft: true,
useUndeliveredQuantities: true,
disableAutomaticWorkflows: true,
reduceSalesOrderQuantities: true,
reduceDeliveryQuantities: true,
cancelWebShopOrder: true,
lineItems: [
{
salesInvoiceLineItemId: 'b45f6432-2462-4c6f-b00f-1d9d01000000',
quantity: 123,
priceNet: 123
}
],
allowQuantityExceeded: true,
allowAmountExceeded: true
})
};
fetch('https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'asDraft' => true,
'useUndeliveredQuantities' => true,
'disableAutomaticWorkflows' => true,
'reduceSalesOrderQuantities' => true,
'reduceDeliveryQuantities' => true,
'cancelWebShopOrder' => true,
'lineItems' => [
[
'salesInvoiceLineItemId' => 'b45f6432-2462-4c6f-b00f-1d9d01000000',
'quantity' => 123,
'priceNet' => 123
]
],
'allowQuantityExceeded' => true,
'allowAmountExceeded' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-tenant-id: <x-tenant-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct"
payload := strings.NewReader("{\n \"asDraft\": true,\n \"useUndeliveredQuantities\": true,\n \"disableAutomaticWorkflows\": true,\n \"reduceSalesOrderQuantities\": true,\n \"reduceDeliveryQuantities\": true,\n \"cancelWebShopOrder\": true,\n \"lineItems\": [\n {\n \"salesInvoiceLineItemId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"quantity\": 123,\n \"priceNet\": 123\n }\n ],\n \"allowQuantityExceeded\": true,\n \"allowAmountExceeded\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-tenant-id", "<x-tenant-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"asDraft\": true,\n \"useUndeliveredQuantities\": true,\n \"disableAutomaticWorkflows\": true,\n \"reduceSalesOrderQuantities\": true,\n \"reduceDeliveryQuantities\": true,\n \"cancelWebShopOrder\": true,\n \"lineItems\": [\n {\n \"salesInvoiceLineItemId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"quantity\": 123,\n \"priceNet\": 123\n }\n ],\n \"allowQuantityExceeded\": true,\n \"allowAmountExceeded\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jtl-cloud.com/erp/v2/sales-invoices/{salesInvoiceId}/correct")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"asDraft\": true,\n \"useUndeliveredQuantities\": true,\n \"disableAutomaticWorkflows\": true,\n \"reduceSalesOrderQuantities\": true,\n \"reduceDeliveryQuantities\": true,\n \"cancelWebShopOrder\": true,\n \"lineItems\": [\n {\n \"salesInvoiceLineItemId\": \"b45f6432-2462-4c6f-b00f-1d9d01000000\",\n \"quantity\": 123,\n \"priceNet\": 123\n }\n ],\n \"allowQuantityExceeded\": true,\n \"allowAmountExceeded\": true\n}"
response = http.request(request)
puts response.read_body{
"salesInvoiceCorrectionId": "b45f6432-2462-4c6f-b00f-1d9d01000000"
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}{
"type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"instance": "/api/route",
"traceId": "0HMPNHL0JHL76:00000001",
"detail": "<string>",
"errors": [
{
"name": "Error or field name",
"reason": "Error reason",
"code": "<string>",
"severity": "<string>"
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Headers
Optional, client-generated key for deduplicating repeated write requests. A repeated request with the same key returns the originally recorded result instead of executing the effect again.
1 - 255The tenant ID for the target ERP instance.
Path Parameters
The ID of the sales invoice to create the correction for.
"b45f6432-2462-4c6f-b00f-1d9d01000000"
Body
Request model for CreateSalesInvoiceCorrection command endpoint. Route parameters bind from the route, query parameters from the query string, everything else from the body.
Indicates if the sales invoice correction should be created as draft.
Indicates if only undelivered quantities should be used.
If true, the workflows do not trigger automatic.
If true, the sales order quantities will be reduced.
If true, the delivery quantities will be reduced.
If true, the web shop order will be canceled
The line items to partially correct. When omitted, every open-remainder line of the invoice is corrected in full, matching today's behavior. An explicitly empty list is rejected and is not equivalent to omission.
Show child attributes
Show child attributes
If true, a correction quantity exceeding the invoice's open remainder is accepted instead of rejected.
If true, a correction amount exceeding the invoice's open remainder is accepted instead of rejected.
Response
Sales invoice correction created successfully
Creates a new sales invoice correction from an existing invoice. - Response
The Id of the created sales invoice correction
"b45f6432-2462-4c6f-b00f-1d9d01000000"
Was this page helpful?