{"id":999,"date":"2026-09-22T09:08:52","date_gmt":"2026-09-22T09:08:52","guid":{"rendered":"https:\/\/smppcenter.com\/kb\/?p=999"},"modified":"2026-09-22T09:08:54","modified_gmt":"2026-09-22T09:08:54","slug":"map-vendor-error-codes-global-error-codes","status":"publish","type":"post","link":"https:\/\/smppcenter.com\/kb\/map-vendor-error-codes-global-error-codes\/","title":{"rendered":"How to Map Vendor Error Codes to Global Error Codes (Including Bulk CSV Import)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Vendor error code mapping connects a vendor&#8217;s raw codes to your <strong>Global Error Codes<\/strong>. When a DLR comes back from a vendor, the platform looks up that vendor&#8217;s code, finds the global code it&#8217;s mapped to, and sends the global code to your client. Any code without a mapping reaches the client as the default code or <strong>UNDEFINED<\/strong>, which clients can&#8217;t act on.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Where to find it<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sidebar \u2192 Settings\u2192 Error Codes<\/strong>, then the <strong>Manage Vendor Error Codes<\/strong> screen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Add a single mapping<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click <strong>Add<\/strong>.<\/li>\n\n\n\n<li><strong>Product:<\/strong> SMS, WhatsApp, etc.<\/li>\n\n\n\n<li><strong>Global Error Code:<\/strong> the code your client will see.<\/li>\n\n\n\n<li><strong>Vendor:<\/strong> the vendor this code comes from.<\/li>\n\n\n\n<li><strong>Vendor Error Code:<\/strong> the exact code the vendor returns.<\/li>\n\n\n\n<li><strong>Vendor Error Description:<\/strong> what the vendor says it means. Keep this for your own team.<\/li>\n\n\n\n<li>Click <strong>Save Changes<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">To map a similar code quickly, use <strong>Clone<\/strong> on an existing row.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bulk import (for onboarding a new vendor)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In <strong>Import Vendor Error Codes<\/strong>, click <strong>Select File<\/strong>.<\/li>\n\n\n\n<li>Upload <code>.xls<\/code>, <code>.xlsx<\/code> or <code>.csv<\/code>. Download the <strong>sample file<\/strong> first and match its columns.<\/li>\n\n\n\n<li>Click <strong>Save Changes<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">You can upload up to <strong>50,000 rows<\/strong> per file.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Checklist for onboarding a new vendor<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Get the vendor&#8217;s full error code list in writing, including their DLR <code>err:<\/code> values.<\/li>\n\n\n\n<li>Build the mapping sheet against your existing global catalog. Only add new global codes when a vendor code really needs different client action.<\/li>\n\n\n\n<li>Import the sheet, then run test traffic that triggers common failures (invalid number, absent subscriber).<\/li>\n\n\n\n<li>In <strong>Message Log<\/strong>, filter by the new connect and check that no rows show <code>UNDEFINED<\/code>.<\/li>\n\n\n\n<li>Before connecting the new route, export the vendor mapping list and keep it with your vendor contract.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Client sees UNDEFINED:<\/strong> the vendor returned a code you haven&#8217;t mapped. Find the raw code in the message details and add a mapping.<\/li>\n\n\n\n<li><strong>CSV rejected:<\/strong> re-save it from the sample file template and check column order. On recent versions, file-type detection issues on CSV uploads are fixed, so update if you&#8217;re running an older build.<\/li>\n\n\n\n<li><strong>Same vendor code, different meaning per product:<\/strong> map it once per product, since Product is part of the mapping.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Related articles<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/smppcenter.com\/kb\/global-error-codes-setup-smpp-software\/\">How to Set Up Global Error Codes<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/smppcenter.com\/kb\/failed-messages-get-retried-smpp-client\/\">Do the Failed Messages Get Retried in SMPP Client?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/smppcenter.com\/kb\/repush-failed-messages-different-route\/\">How to Repush Failed Messages Through a Different Route<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Map each vendor&#8217;s error codes to your global catalog one at a time or in bulk, so clients never receive UNDEFINED statuses.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[307],"tags":[313,311,314,312,315],"class_list":["post-999","post","type-post","status-publish","format-standard","hentry","category-error-codes-dlr","tag-csv-import","tag-error-mapping","tag-undefined-error","tag-vendor-error-codes","tag-vendor-onboarding"],"_links":{"self":[{"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/posts\/999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/comments?post=999"}],"version-history":[{"count":0,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/posts\/999\/revisions"}],"wp:attachment":[{"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/media?parent=999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/categories?post=999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/tags?post=999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}