{"id":1012,"date":"2026-09-23T09:18:42","date_gmt":"2026-09-23T09:18:42","guid":{"rendered":"https:\/\/smppcenter.com\/kb\/?p=1012"},"modified":"2026-09-23T09:18:44","modified_gmt":"2026-09-23T09:18:44","slug":"reconcile-user-billing-discrepancies","status":"publish","type":"post","link":"https:\/\/smppcenter.com\/kb\/reconcile-user-billing-discrepancies\/","title":{"rendered":"How to Reconcile User Billing and Spot Discrepancies"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Billing that silently drifts from actual traffic costs you money in one direction and credibility in the other. <strong>Reconcile User Billing<\/strong> compares what was billed to users against the vendor message summaries for the same period, and shows the gap as a number and a percentage.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Confirm the billing run actually completed<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open <strong>Message Billing Generation Info<\/strong> and search a date range. For each day it shows:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>User Start Time \/ User End Time<\/strong> and <strong>User Billed Status<\/strong><\/li>\n\n\n\n<li><strong>Vendor Start Time \/ Vendor End Time<\/strong> and <strong>Vendor Billed Status<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">An end time of <strong>NA<\/strong> means that run is still going or never finished. Reconciling a day whose billing run didn&#8217;t finish will always show a false discrepancy, so check this first. If a run shows an error, raise it with support rather than re-running blindly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Reconcile<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open <strong>Reconcile User Billing<\/strong>.<\/li>\n\n\n\n<li>Enter <strong>From Date<\/strong> and <strong>To Date<\/strong>.<\/li>\n\n\n\n<li>Click <strong>Search<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Results, per date:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Column<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td>User Total<\/td><td>Total counted on the user side<\/td><\/tr><tr><td>Billing Total<\/td><td>Total counted on the billing side<\/td><\/tr><tr><td>Diff Total \/ Diff Total %<\/td><td>The gap<\/td><\/tr><tr><td>User Success \/ Billing Success<\/td><td>Successful counts on each side<\/td><\/tr><tr><td>Diff Success \/ Diff Success %<\/td><td>The gap on successful messages<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A total summary row sits at the bottom, and <strong>Export<\/strong> downloads the data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Read the difference<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>A steady small percentage every day<\/strong> usually points to a configuration difference (e.g. which error codes are set to charge the user) rather than a fault. Review your Global Error Codes&#8217; <strong>Charge to User<\/strong> flags.<\/li>\n\n\n\n<li><strong>One day at 100%<\/strong> normally means the billing run for that day didn&#8217;t complete. Go back to Billing Generation Info.<\/li>\n\n\n\n<li><strong>A gap that starts on a specific date<\/strong> lines up with a change: a new connect, a changed rate, a new route, a modified error mapping. Check what you changed that day.<\/li>\n\n\n\n<li><strong>Success counts differing while totals match<\/strong> points at DLR handling, not billing: statuses arriving late or mapping to the wrong global code.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Trace it to transactions<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use <strong>Credit Usage<\/strong> to see the individual debits and credits behind a user&#8217;s balance. Filter by <strong>User Name<\/strong>, <strong>Transaction ID<\/strong>, date range, <strong>Method<\/strong> (Batch, Phonebook, Admin, Reseller), <strong>Product<\/strong> and <strong>Type<\/strong> (Credit\/Debit). Each row shows amount, resulting balance, method, comments and timestamp, which is what you need when a client disputes a deduction.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Make it a routine<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Reconcile <strong>weekly<\/strong>, not at month end. A week-old discrepancy is traceable; a month-old one is an argument.<\/li>\n\n\n\n<li>Export and keep each reconciliation. It&#8217;s your evidence in client and vendor disputes.<\/li>\n\n\n\n<li>Reconcile immediately after adding a vendor, changing rates, or editing error-code charge flags.<\/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\/connect-billing-summary-vendor-margin\/\">How to Check Profit and Loss per Connect<\/a><\/li>\n\n\n\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\/map-vendor-error-codes-global-error-codes\/\">How to Map Vendor Error Codes to Global Error Codes<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/smppcenter.com\/kb\/credit-vs-wallet-billing-model\/\">Credit or Wallet: Choosing the Right Billing Model<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/smppcenter.com\/kb\/can-i-download-any-or-all-user-credit-summary-from-the-reseller-panel\/\">Can I download any or all user credit summary from the reseller panel?<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Compare user billing against vendor message summaries, confirm the daily billing run finished, and trace any difference down to individual transactions.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[379],"tags":[387,386,390,389,385,388],"class_list":["post-1012","post","type-post","status-publish","format-standard","hentry","category-reports-reconciliation","tag-audit","tag-billing-generation","tag-billing-run","tag-credit-usage","tag-discrepancy","tag-reconcile-billing"],"_links":{"self":[{"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/posts\/1012","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=1012"}],"version-history":[{"count":0,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/posts\/1012\/revisions"}],"wp:attachment":[{"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/media?parent=1012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/categories?post=1012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smppcenter.com\/kb\/wp-json\/wp\/v2\/tags?post=1012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}