✦Developers

KERN ERP API — Sales

Masters, products and styles, Buyer POs, purchase orders, GRNs, sales invoices, packing slips and stock.

Version 2026-10-09.1 · published 9 Oct 2026 · 105 APIs

Base URL https://kronex.codeverse.co/cedge

Download: OpenAPI (JSON) · Postman collection · Guides · Changelog

Sales

Grouped by screen, as in the app. Scope for the whole module: erp.sales.*:read or :write.

Buyer POs

Access: erp.sales.buyer_pos:read(or :write)

GET/public/v1/sales/buyer-pos

List Buyer POs (paged; status, search, vendorId)

Scope erp.sales.buyer_pos:read · the client's role needs view on Buyer POs

Parameters
NameInTypeNotes
pagequeryinteger (int32)Page number, starting at 0.
sizequeryinteger (int32)Items per page.
statusquerystringOnly records with this status (see the record's status values).
searchquerystringSearch text (part of a name, number or code; not case-sensitive).
vendorIdqueryinteger (int64)Only this vendor / customer (id).
productIdqueryinteger (int64)Only this product / style (id).
Response (200) — data
FieldTypeNotes
contentarray of object
idinteger (int64)
poCodestring
poTypestring
orderSourcestring
vendorIdinteger (int64)
vendorNamestring
buyerPoNostring
poNostring
txnDatestring (date)
deliveryDatestring (date)
shippingMethodstring
exLocationstring
statusstring
netTotalnumber
lineCountinteger (int32)
totalQtyinteger (int32)
createdAtstring (date-time)
styleNamesarray of string
packingSlipGeneratedboolean
pageinteger (int32)
sizeinteger (int32)
totalElementsinteger (int64)
totalPagesinteger (int32)
lastboolean

Errors: 400, 401, 403, 404, 405, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — List Buyer POs (paged; status, search, vendorId) curl -X GET "https://kronex.codeverse.co/cedge/public/v1/sales/buyer-pos?page=0&size=20" \ -H "Authorization: Bearer $KERN_API_KEY"
POST/public/v1/sales/buyer-pos

Create a Buyer PO (draft)

Scope erp.sales.buyer_pos:write · the client's role needs create on Buyer POs · send an Idempotency-Key

Parameters
NameInTypeNotes
Idempotency-Key *headerstringAny unique text up to 120 characters (e.g. a UUID). A retry with the same key and body returns the first answer instead of doing the work twice.
Request body
FieldTypeNotes
poTypestring
orderSourcestring
internalCustomerNamestring
vendorIdinteger (int64)
vendorNamestring
onBehalfVendorIdinteger (int64)
onBehalfVendorNamestring
billToLocationIdinteger (int64)
billToNamestring
billToAddressstring
shipToAddressstring
buyerPoNostring
piNostring
poNostring
txnDatestring (date)
deliveryDatestring (date)
exLocationstring
shippingMethodstring
shippingTermsstring
poReceiveDatestring (date)
prReceiveDatestring (date)
exDatestring (date)
netWeightnumber
grossWeightnumber
dimensionsstring
mfgDatestring (date)
invoiceFormatstring
billToTypestring
eanRequiredboolean
notesstring
adjustmentnumber
linesarray of object
idinteger (int64)
productIdinteger (int64)
productCodestring
productNamestring
colorIdinteger (int64)
colorNamestring
locationNamestring
skustring

…11 more fields — see the OpenAPI file.

Response (200) — data
FieldTypeNotes
idinteger (int64)
poCodestring
poTypestring
orderSourcestring
internalCustomerNamestring
vendorIdinteger (int64)
vendorNamestring
onBehalfVendorIdinteger (int64)
onBehalfVendorNamestring
billToLocationIdinteger (int64)
billToNamestring
billToAddressstring
shipToAddressstring
buyerPoNostring
piNostring
poNostring
txnDatestring (date)
deliveryDatestring (date)
exLocationstring
shippingMethodstring
shippingTermsstring
poReceiveDatestring (date)
prReceiveDatestring (date)
exDatestring (date)
netWeightnumber
grossWeightnumber
dimensionsstring
mfgDatestring (date)
invoiceFormatstring
billToTypestring
eanRequiredboolean
notesstring
subTotalnumber
discountAmtnumber
gstAmtnumber
adjustmentnumber
netTotalnumber
statusstring
guidanceobject
nextActionsarray of object

…32 more fields — see the OpenAPI file.

Errors: 400, 401, 403, 404, 405, 409, 413, 422, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — Create a Buyer PO (draft) curl -X POST "https://kronex.codeverse.co/cedge/public/v1/sales/buyer-pos" \ -H "Authorization: Bearer $KERN_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ … }'
GET/public/v1/sales/buyer-pos/{id}

Get one Buyer PO with lines

Scope erp.sales.buyer_pos:read · the client's role needs view on Buyer POs

Parameters
NameInTypeNotes
id *pathinteger (int64)The record's id.
Response (200) — data
FieldTypeNotes
idinteger (int64)
poCodestring
poTypestring
orderSourcestring
internalCustomerNamestring
vendorIdinteger (int64)
vendorNamestring
onBehalfVendorIdinteger (int64)
onBehalfVendorNamestring
billToLocationIdinteger (int64)
billToNamestring
billToAddressstring
shipToAddressstring
buyerPoNostring
piNostring
poNostring
txnDatestring (date)
deliveryDatestring (date)
exLocationstring
shippingMethodstring
shippingTermsstring
poReceiveDatestring (date)
prReceiveDatestring (date)
exDatestring (date)
netWeightnumber
grossWeightnumber
dimensionsstring
mfgDatestring (date)
invoiceFormatstring
billToTypestring
eanRequiredboolean
notesstring
subTotalnumber
discountAmtnumber
gstAmtnumber
adjustmentnumber
netTotalnumber
statusstring
guidanceobject
nextActionsarray of object

…32 more fields — see the OpenAPI file.

Errors: 400, 401, 403, 404, 405, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — Get one Buyer PO with lines curl -X GET "https://kronex.codeverse.co/cedge/public/v1/sales/buyer-pos/{id}" \ -H "Authorization: Bearer $KERN_API_KEY"
PUT/public/v1/sales/buyer-pos/{id}

Update a Buyer PO (draft / open / planned)

Scope erp.sales.buyer_pos:write · the client's role needs edit on Buyer POs · send an Idempotency-Key

Parameters
NameInTypeNotes
id *pathinteger (int64)The record's id.
Idempotency-Key *headerstringAny unique text up to 120 characters (e.g. a UUID). A retry with the same key and body returns the first answer instead of doing the work twice.
Request body
FieldTypeNotes
poTypestring
orderSourcestring
internalCustomerNamestring
vendorIdinteger (int64)
vendorNamestring
onBehalfVendorIdinteger (int64)
onBehalfVendorNamestring
billToLocationIdinteger (int64)
billToNamestring
billToAddressstring
shipToAddressstring
buyerPoNostring
piNostring
poNostring
txnDatestring (date)
deliveryDatestring (date)
exLocationstring
shippingMethodstring
shippingTermsstring
poReceiveDatestring (date)
prReceiveDatestring (date)
exDatestring (date)
netWeightnumber
grossWeightnumber
dimensionsstring
mfgDatestring (date)
invoiceFormatstring
billToTypestring
eanRequiredboolean
notesstring
adjustmentnumber
linesarray of object
idinteger (int64)
productIdinteger (int64)
productCodestring
productNamestring
colorIdinteger (int64)
colorNamestring
locationNamestring
skustring

…11 more fields — see the OpenAPI file.

Response (200) — data
FieldTypeNotes
idinteger (int64)
poCodestring
poTypestring
orderSourcestring
internalCustomerNamestring
vendorIdinteger (int64)
vendorNamestring
onBehalfVendorIdinteger (int64)
onBehalfVendorNamestring
billToLocationIdinteger (int64)
billToNamestring
billToAddressstring
shipToAddressstring
buyerPoNostring
piNostring
poNostring
txnDatestring (date)
deliveryDatestring (date)
exLocationstring
shippingMethodstring
shippingTermsstring
poReceiveDatestring (date)
prReceiveDatestring (date)
exDatestring (date)
netWeightnumber
grossWeightnumber
dimensionsstring
mfgDatestring (date)
invoiceFormatstring
billToTypestring
eanRequiredboolean
notesstring
subTotalnumber
discountAmtnumber
gstAmtnumber
adjustmentnumber
netTotalnumber
statusstring
guidanceobject
nextActionsarray of object

…32 more fields — see the OpenAPI file.

Errors: 400, 401, 403, 404, 405, 409, 413, 422, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — Update a Buyer PO (draft / open / planned) curl -X PUT "https://kronex.codeverse.co/cedge/public/v1/sales/buyer-pos/{id}" \ -H "Authorization: Bearer $KERN_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ … }'
POST/public/v1/sales/buyer-pos/{id}/finalize

Finalise a draft Buyer PO (→ OPEN)

Scope erp.sales.buyer_pos:write · the client's role needs edit on Buyer POs · send an Idempotency-Key

Parameters
NameInTypeNotes
id *pathinteger (int64)The record's id.
Idempotency-Key *headerstringAny unique text up to 120 characters (e.g. a UUID). A retry with the same key and body returns the first answer instead of doing the work twice.
Response (200) — data
FieldTypeNotes
idinteger (int64)
poCodestring
poTypestring
orderSourcestring
internalCustomerNamestring
vendorIdinteger (int64)
vendorNamestring
onBehalfVendorIdinteger (int64)
onBehalfVendorNamestring
billToLocationIdinteger (int64)
billToNamestring
billToAddressstring
shipToAddressstring
buyerPoNostring
piNostring
poNostring
txnDatestring (date)
deliveryDatestring (date)
exLocationstring
shippingMethodstring
shippingTermsstring
poReceiveDatestring (date)
prReceiveDatestring (date)
exDatestring (date)
netWeightnumber
grossWeightnumber
dimensionsstring
mfgDatestring (date)
invoiceFormatstring
billToTypestring
eanRequiredboolean
notesstring
subTotalnumber
discountAmtnumber
gstAmtnumber
adjustmentnumber
netTotalnumber
statusstring
guidanceobject
nextActionsarray of object

…32 more fields — see the OpenAPI file.

Errors: 400, 401, 403, 404, 405, 409, 413, 422, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — Finalise a draft Buyer PO (→ OPEN) curl -X POST "https://kronex.codeverse.co/cedge/public/v1/sales/buyer-pos/{id}/finalize" \ -H "Authorization: Bearer $KERN_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json"
POST/public/v1/sales/buyer-pos/{id}/cancel

Cancel a Buyer PO

Scope erp.sales.buyer_pos:write · the client's role needs edit on Buyer POs · send an Idempotency-Key

Parameters
NameInTypeNotes
id *pathinteger (int64)The record's id.
Idempotency-Key *headerstringAny unique text up to 120 characters (e.g. a UUID). A retry with the same key and body returns the first answer instead of doing the work twice.
Response (200) — data
FieldTypeNotes
idinteger (int64)
poCodestring
poTypestring
orderSourcestring
internalCustomerNamestring
vendorIdinteger (int64)
vendorNamestring
onBehalfVendorIdinteger (int64)
onBehalfVendorNamestring
billToLocationIdinteger (int64)
billToNamestring
billToAddressstring
shipToAddressstring
buyerPoNostring
piNostring
poNostring
txnDatestring (date)
deliveryDatestring (date)
exLocationstring
shippingMethodstring
shippingTermsstring
poReceiveDatestring (date)
prReceiveDatestring (date)
exDatestring (date)
netWeightnumber
grossWeightnumber
dimensionsstring
mfgDatestring (date)
invoiceFormatstring
billToTypestring
eanRequiredboolean
notesstring
subTotalnumber
discountAmtnumber
gstAmtnumber
adjustmentnumber
netTotalnumber
statusstring
guidanceobject
nextActionsarray of object

…32 more fields — see the OpenAPI file.

Errors: 400, 401, 403, 404, 405, 409, 413, 422, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — Cancel a Buyer PO curl -X POST "https://kronex.codeverse.co/cedge/public/v1/sales/buyer-pos/{id}/cancel" \ -H "Authorization: Bearer $KERN_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json"

Invoices

Access: erp.sales.invoices:read(or :write)

GET/public/v1/sales/invoices

List sales invoices (paged)

Scope erp.sales.invoices:read · the client's role needs view on Invoices

Parameters
NameInTypeNotes
pagequeryinteger (int32)Page number, starting at 0.
sizequeryinteger (int32)Items per page.
statusquerystringOnly records with this status (see the record's status values).
customerIdqueryinteger (int64)Only this customer (id).
modequerystringOnly this invoice mode (EXPORT or DOMESTIC).
sourcequerystringOnly this source.
searchquerystringSearch text (part of a name, number or code; not case-sensitive).
Response (200) — data
FieldTypeNotes
contentarray of object
idinteger (int64)
qcNostring
qcDatestring (date)
qcPersonstring
processstring
dcNostring
vendorNamestring
locationNamestring
statusstring
pageinteger (int32)
sizeinteger (int32)
totalElementsinteger (int64)
totalPagesinteger (int32)
lastboolean

Errors: 400, 401, 403, 404, 405, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — List sales invoices (paged) curl -X GET "https://kronex.codeverse.co/cedge/public/v1/sales/invoices?page=0&size=20" \ -H "Authorization: Bearer $KERN_API_KEY"
POST/public/v1/sales/invoices

Create a draft sales invoice

Scope erp.sales.invoices:write · the client's role needs create on Invoices · send an Idempotency-Key

Parameters
NameInTypeNotes
Idempotency-Key *headerstringAny unique text up to 120 characters (e.g. a UUID). A retry with the same key and body returns the first answer instead of doing the work twice.
Request body
FieldTypeNotes
qcNostring
qcDate *string (date)
qcPerson *string
process *string
locationIdinteger (int64)
inspectionLinesarray of object
grnLineId *integer (int64)
fabricProgramNostring
itemTypestring
itemNostring
rollNostring
gsmnumber
widthnumber
weightnumber
rollQtynumber
acceptedQtynumber
qcResultstring
stockInwardLinesarray of object
idinteger (int64)
grnLineId *integer (int64)
fabricProgramNostring
itemTypestring
fabricId *integer (int64)
inwardFabricColorstring
uomIdinteger (int64)
lotNostring
widthnumber
gsmnumber
weightnumber
locationIdinteger (int64)
rollNostring
qty *number
Response (200) — data
FieldTypeNotes
idinteger (int64)
qcNostring
qcDatestring (date)
qcPersonstring
processstring
locationIdinteger (int64)
locationNamestring
statusstring
inspectionLinesarray of object
idinteger (int64)
grnLineIdinteger (int64)
dcNostring
fabricProgramNostring
itemTypestring
itemNostring
rollNostring
gsmnumber
widthnumber
weightnumber
rollQtynumber
acceptedQtynumber
qcResultstring
stockInwardLinesarray of object
idinteger (int64)
grnLineIdinteger (int64)
dcNostring
fabricProgramNostring
itemTypestring
fabricIdinteger (int64)
itemNamestring
inwardFabricColorstring
uomIdinteger (int64)
uomNamestring
lotNostring
widthnumber
gsmnumber
weightnumber
locationIdinteger (int64)
locationNamestring
rollNostring

…5 more fields — see the OpenAPI file.

Errors: 400, 401, 403, 404, 405, 409, 413, 422, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — Create a draft sales invoice curl -X POST "https://kronex.codeverse.co/cedge/public/v1/sales/invoices" \ -H "Authorization: Bearer $KERN_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ … }'
GET/public/v1/sales/invoices/{id}

Get one sales invoice

Scope erp.sales.invoices:read · the client's role needs view on Invoices

Parameters
NameInTypeNotes
id *pathinteger (int64)The record's id.
Response (200) — data
FieldTypeNotes
idinteger (int64)
qcNostring
qcDatestring (date)
qcPersonstring
processstring
locationIdinteger (int64)
locationNamestring
statusstring
inspectionLinesarray of object
idinteger (int64)
grnLineIdinteger (int64)
dcNostring
fabricProgramNostring
itemTypestring
itemNostring
rollNostring
gsmnumber
widthnumber
weightnumber
rollQtynumber
acceptedQtynumber
qcResultstring
stockInwardLinesarray of object
idinteger (int64)
grnLineIdinteger (int64)
dcNostring
fabricProgramNostring
itemTypestring
fabricIdinteger (int64)
itemNamestring
inwardFabricColorstring
uomIdinteger (int64)
uomNamestring
lotNostring
widthnumber
gsmnumber
weightnumber
locationIdinteger (int64)
locationNamestring
rollNostring

…5 more fields — see the OpenAPI file.

Errors: 400, 401, 403, 404, 405, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — Get one sales invoice curl -X GET "https://kronex.codeverse.co/cedge/public/v1/sales/invoices/{id}" \ -H "Authorization: Bearer $KERN_API_KEY"
PATCH/public/v1/sales/invoices/{id}/issue

Issue a sales invoice

Scope erp.sales.invoices:write · the client's role needs edit on Invoices · send an Idempotency-Key

Parameters
NameInTypeNotes
id *pathinteger (int64)The record's id.
Idempotency-Key *headerstringAny unique text up to 120 characters (e.g. a UUID). A retry with the same key and body returns the first answer instead of doing the work twice.
Response (200) — data
FieldTypeNotes
idinteger (int64)
qcNostring
qcDatestring (date)
qcPersonstring
processstring
locationIdinteger (int64)
locationNamestring
statusstring
inspectionLinesarray of object
idinteger (int64)
grnLineIdinteger (int64)
dcNostring
fabricProgramNostring
itemTypestring
itemNostring
rollNostring
gsmnumber
widthnumber
weightnumber
rollQtynumber
acceptedQtynumber
qcResultstring
stockInwardLinesarray of object
idinteger (int64)
grnLineIdinteger (int64)
dcNostring
fabricProgramNostring
itemTypestring
fabricIdinteger (int64)
itemNamestring
inwardFabricColorstring
uomIdinteger (int64)
uomNamestring
lotNostring
widthnumber
gsmnumber
weightnumber
locationIdinteger (int64)
locationNamestring
rollNostring

…5 more fields — see the OpenAPI file.

Errors: 400, 401, 403, 404, 405, 409, 413, 422, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — Issue a sales invoice curl -X PATCH "https://kronex.codeverse.co/cedge/public/v1/sales/invoices/{id}/issue" \ -H "Authorization: Bearer $KERN_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json"
PATCH/public/v1/sales/invoices/{id}/cancel

Cancel a sales invoice

Scope erp.sales.invoices:write · the client's role needs edit on Invoices · send an Idempotency-Key

Parameters
NameInTypeNotes
id *pathinteger (int64)The record's id.
Idempotency-Key *headerstringAny unique text up to 120 characters (e.g. a UUID). A retry with the same key and body returns the first answer instead of doing the work twice.
Response (200) — data
FieldTypeNotes
idinteger (int64)
qcNostring
qcDatestring (date)
qcPersonstring
processstring
locationIdinteger (int64)
locationNamestring
statusstring
inspectionLinesarray of object
idinteger (int64)
grnLineIdinteger (int64)
dcNostring
fabricProgramNostring
itemTypestring
itemNostring
rollNostring
gsmnumber
widthnumber
weightnumber
rollQtynumber
acceptedQtynumber
qcResultstring
stockInwardLinesarray of object
idinteger (int64)
grnLineIdinteger (int64)
dcNostring
fabricProgramNostring
itemTypestring
fabricIdinteger (int64)
itemNamestring
inwardFabricColorstring
uomIdinteger (int64)
uomNamestring
lotNostring
widthnumber
gsmnumber
weightnumber
locationIdinteger (int64)
locationNamestring
rollNostring

…5 more fields — see the OpenAPI file.

Errors: 400, 401, 403, 404, 405, 409, 413, 422, 429, 500 — every error says how to fix it; see error codes and troubleshooting.

Example
# KERN ERP — Cancel a sales invoice curl -X PATCH "https://kronex.codeverse.co/cedge/public/v1/sales/invoices/{id}/cancel" \ -H "Authorization: Bearer $KERN_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json"