Error Catalog
These are the public PUNCHOUT_* response codes returned by the PunchOut module. A security response may also include more specific codes in its errors array.
Availability and setup
| Code | Meaning and next check |
|---|---|
PUNCHOUT_DISABLED |
PunchOut is disabled in the resolved store scope. |
PUNCHOUT_MISSING_REQUIRED_FIELDS |
OCI buyer/hook values or required cXML setup values were not parsed. |
PUNCHOUT_BUYER_MISSING |
The request did not contain the buyer identity required for context creation. |
PUNCHOUT_BUYER_NOT_ALLOWED |
No active buyer matched protocol, identity and store scope. |
PUNCHOUT_AUTHENTICATION_FAILED |
Protocol or optional transport credentials did not match; read the returned messages. |
PUNCHOUT_INVALID_CUSTOMER_REFERENCE |
A supplied/assigned customer reference is invalid for the resolved context. |
PUNCHOUT_INTERNAL_ERROR |
An unexpected server error occurred; use the correlation time and Magento logs without exposing the request secret. |
Request security
PUNCHOUT_SECURITY_VALIDATION_FAILED is the top-level error. Its nested codes can include:
| Nested code | Meaning and next check |
|---|---|
PUNCHOUT_IP_NOT_ALLOWED |
Magento's resolved client IP is outside the configured list. |
PUNCHOUT_SIGNATURE_SECRET_MISSING |
Strict mode is on but the scoped signature secret is empty. |
PUNCHOUT_SIGNATURE_MISSING |
No signature header/parameter was supplied. |
PUNCHOUT_SIGNATURE_INVALID |
The supplied digest is not a 64-character hexadecimal SHA-256 value. |
PUNCHOUT_SIGNATURE_MISMATCH |
HMAC secret or signed payload representation differs. |
Return URL
The setup controller returns PUNCHOUT_INVALID_HOOK_URL with one or more details:
| Nested code | Meaning and next check |
|---|---|
PUNCHOUT_MISSING_HOOK_URL |
No OCI hook or cXML form-post URL was found. |
PUNCHOUT_INSECURE_HOOK_URL |
The URL is not HTTPS. |
PUNCHOUT_HOOK_URL_BLOCKED_HOST |
localhost was used outside sandbox mode. |
PUNCHOUT_HOOK_URL_BLOCKED_IP |
A literal or resolved address is private/reserved outside sandbox mode. |
PUNCHOUT_HOOK_URL_DNS_RESOLVE_FAILED |
The hostname produced no usable A/AAAA address. |
Context and cart
| Code | Meaning and next check |
|---|---|
PUNCHOUT_MISSING_TOKEN |
No token was supplied in the supported parameter/header. |
PUNCHOUT_CONTEXT_NOT_FOUND |
Logout could not resolve the supplied token. |
PUNCHOUT_CONTEXT_EXPIRED |
The token is absent, expired or already logged out for the requested action. |
PUNCHOUT_CART_ADD_FAILED |
SKU, quantity, availability or Magento add-to-cart validation failed. |
PUNCHOUT_CART_UPDATE_FAILED |
No item was resolved or an update value was invalid. |
PUNCHOUT_CART_REMOVE_FAILED |
No matching item identifier was supplied/found. |
PUNCHOUT_CART_GET_FAILED |
Magento could not resolve or read the bound quote. |
PUNCHOUT_OPERATION_RESTRICTED |
The active storefront operation policy does not permit this action. |
OCI product functions
| Code | Meaning and next check |
|---|---|
PUNCHOUT_OCI_VERSION_INVALID |
The request contains an unsupported OCI version. |
PUNCHOUT_OCI_VERSION_MISMATCH |
The request version differs from the OCI version configured on the buyer profile. |
PUNCHOUT_OCI_PROFILE_VERSION_INVALID |
The buyer profile has no supported OCI version. Open the profile and save a valid value. |
PUNCHOUT_OCI_FUNCTION_NOT_SUPPORTED |
The requested OCI function is not implemented for this flow. |
PUNCHOUT_OCI_DETAIL_PRODUCT_REQUIRED |
DETAIL or DETAILADD was sent without PRODUCTID. |
PUNCHOUT_OCI_DETAIL_PRODUCT_NOT_FOUND |
The configured SKU or external product identifier did not resolve to an eligible product. |
PUNCHOUT_OCI_DETAILADD_VERSION_NOT_SUPPORTED |
DETAILADD was requested for a buyer profile that does not use OCI 5. |
Transfer and mapping
| Code | Meaning and next check |
|---|---|
PUNCHOUT_VALIDATION_ERROR |
Read the returned errors list for item, URL, mapping or currency details. |
PUNCHOUT_EMPTY_ITEMS |
The transfer has no cart lines. |
PUNCHOUT_ITEM_<n>_MISSING_DESCRIPTION |
The numbered line has no description. |
PUNCHOUT_ITEM_<n>_INVALID_QTY |
The numbered line has a non-positive quantity. |
PUNCHOUT_ITEM_<n>_MISSING_UNIT |
The numbered line has no unit. |
PUNCHOUT_ITEM_<n>_MISSING_PRICE |
The numbered line has a missing, non-numeric or negative price. |
PUNCHOUT_MIXED_ITEM_CURRENCIES |
cXML lines do not share one currency. |
PUNCHOUT_MAPPING_INVALID_PROFILE |
The context mapping is absent or not a usable runtime profile. |
PUNCHOUT_MAPPING_INVALID_RULE_CONFIGURATION |
A saved rule cannot be executed safely. |
PUNCHOUT_MAPPING_REQUIRED_<TARGET> |
A mandatory mapped target is empty after formatting/fallback. |
PUNCHOUT_MAPPING_INVALID_NEW_ITEM_UNIT |
An OCI unit contains more than three characters. |
PUNCHOUT_MAPPING_INVALID_NEW_ITEM_LEADTIME |
OCI lead time is not an integer with at most five digits. |
PUNCHOUT_MAPPING_INVALID_NEW_ITEM_MANUFACTCODE |
The OCI manufacturer code exceeds ten characters. |
PUNCHOUT_UNSUPPORTED_PROTOCOL |
The transfer resolved neither OCI nor cXML. |
Request replay
| Code | Meaning and next check |
|---|---|
PUNCHOUT_REQUEST_REPLAY_IN_PROGRESS |
Another call with this operation and X-Punchout-Request-Key is still processing. |
PUNCHOUT_REQUEST_REPLAY_CONFLICT |
The operation and key were reused with a different request hash in the same Store view. |
PUNCHOUT_REQUEST_KEY_REQUIRED |
A manual retry of an unknown delivery was requested without X-Punchout-Request-Key. |
A successful exact retry returns the previously stored response and is not an error.
Inbound OrderRequest processing
| Code | Meaning and next check |
|---|---|
PUNCHOUT_INVALID_ORDER_REQUEST |
The cXML document is malformed or does not contain a supported OrderRequest. |
PUNCHOUT_PO_NUMBER_MISSING |
No PO/order number was parsed. |
PUNCHOUT_PO_EMPTY_ITEMS |
The PO contains no parsed line items. |
PUNCHOUT_PO_CANCEL_FAILED |
A legacy context-cart cancellation could not clear the linked PunchOut quote. |
PUNCHOUT_INVALID_PRICE |
A submitted or authoritative unit price is invalid for processing. |
PUNCHOUT_ITEM_MISSING |
Magento cannot resolve a submitted product using the configured product reference. |
PUNCHOUT_ORDER_REJECTED |
An inbound policy or Magento quote validation rejected the order. |
PUNCHOUT_MANUAL_REVIEW |
The request requires an administrator to review and process or reject it. |
PUNCHOUT_PRICE_REVIEW |
A price difference reached the configured manual-review action. |
PUNCHOUT_QUANTITY_REVIEW |
A changed returned-cart quantity requires review. |
PUNCHOUT_NEW_ITEM_REVIEW |
A product not present in the returned cart requires review. |
PUNCHOUT_REMOVED_ITEM_REVIEW |
The approved order removed a returned-cart line that requires review. |
PUNCHOUT_SNAPSHOT_REVIEW |
The returned-cart snapshot is missing or expired and the configured action is manual review. |
PUNCHOUT_UPDATE_REVIEW |
An OrderRequest update requires manual review. |
PUNCHOUT_CANCELLATION_REVIEW |
An OrderRequest delete requires manual review. |
PUNCHOUT_MANUALLY_REJECTED |
An administrator rejected the inbound order. |
PUNCHOUT_PROCESSING_ERROR |
Quote or order processing raised an unexpected error. Inspect the detail record and Magento log for the same time. |
PUNCHOUT_ORDER_PROCESSING |
The same OrderRequest is still being processed. Retry the unchanged request later. |
PUNCHOUT_RETRY_EXHAUSTED |
The configured inbound-order processing attempts have been used. Review the stored failure before retrying manually. |
ASN and invoice documents
| Code | Meaning and next check |
|---|---|
PUNCHOUT_ASN_ENDPOINT_MISSING |
No effective ASN URL is configured for shipment delivery. |
PUNCHOUT_INVOICE_ENDPOINT_MISSING |
No effective Invoice URL is configured for invoice delivery. |
PUNCHOUT_ASN_PAYLOAD_MISSING |
Magento could not build or load the retained shipment payload. |
PUNCHOUT_INVOICE_PAYLOAD_MISSING |
Magento could not build or load the retained invoice payload. |
PUNCHOUT_ASN_SHIPMENT_ID_MISSING |
No shipment/ASN/notice number was supplied. |
PUNCHOUT_ASN_EMPTY_ITEMS |
No shippable line items were supplied or parsed. |
PUNCHOUT_ASN_DATA_INCOMPLETE |
Magento could not hydrate the required shipment, order or supplier cXML data. |
PUNCHOUT_ASN_DELIVERY_FAILED |
The HTTPS POST raised an error or returned non-2xx. |
PUNCHOUT_INVOICE_NUMBER_MISSING |
No invoice number was supplied or parsed. |
PUNCHOUT_INVOICE_TOTAL_INVALID |
Invoice total is missing or not greater than zero. |
PUNCHOUT_INVOICE_CURRENCY_MISSING |
No currency was supplied or parsed. |
PUNCHOUT_INVOICE_DATA_INCOMPLETE |
Magento could not hydrate the required invoice, order or supplier cXML data. |
PUNCHOUT_INVOICE_DELIVERY_FAILED |
The HTTPS POST raised an error or returned non-2xx. |
PUNCHOUT_DOCUMENT_TYPE_UNSUPPORTED |
A queue record refers to an unsupported outbound document type. |
PUNCHOUT_DOCUMENT_CONFIGURATION_ERROR |
Required routing or supplier configuration is incomplete. |
PUNCHOUT_DOCUMENT_PAYLOAD_MISSING |
Document generation completed without an outbound payload. |
PUNCHOUT_DOCUMENT_PAYLOAD_DECRYPTION_FAILED |
Magento cannot decrypt the retained outbound payload. Check the installation's encryption key and deployment history. |
PUNCHOUT_INBOUND_ORDER_REFERENCE_MISSING |
A queue row has no durable inbound-order reference. |
PUNCHOUT_DOCUMENT_STORE_MISMATCH |
The queue row and its inbound order belong to different Store Views. |
PUNCHOUT_QUEUE_OWNERSHIP_LOST |
The worker lost its queue lease before it could save the outbound payload. The row was not completed by that worker. |
PUNCHOUT_DELIVERY_OUTCOME_UNKNOWN |
Magento cannot tell whether the remote system accepted the document. Check the receiver before using the dedicated manual retry action. |
PUNCHOUT_QUEUE_PROCESSING_ERROR |
A queue handler raised an unexpected processing exception. |
When the API message and trace do not explain a failure, reproduce it in the simulator with privacy-safe values and then inspect Magento logs for the same time window.