{"id":21263,"date":"2026-06-01T11:47:03","date_gmt":"2026-06-01T16:47:03","guid":{"rendered":"https:\/\/upstreamreporting.app\/support\/?p=21263"},"modified":"2026-09-08T11:47:45","modified_gmt":"2026-09-08T16:47:45","slug":"customer-billing-guide","status":"publish","type":"post","link":"https:\/\/upstreamreporting.app\/support\/?p=21263","title":{"rendered":"Customer Billing Guide"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Use this as the operating process for Upstream+&#8217;s billing team.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Confirm the company is ready to bill<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open the company record in Upstream HQ and confirm:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The customer organization is correct.<\/li>\n\n\n\n<li>The billing contact email and contact details are present.<\/li>\n\n\n\n<li>The company\u2019s unique-well count is reasonable.<\/li>\n\n\n\n<li>The displayed expected monthly charge matches the intended well-based pricing.<\/li>\n\n\n\n<li>The company does not already have an active or pending Stripe subscription.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Do not start a second subscription if one is already listed. Escalate any \u201cmultiple subscriptions,\u201d \u201cmapping conflict,\u201d or unavailable Stripe-status warning for review.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Select the billing arrangement<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In the company\u2019s billing settings, choose the applicable arrangement:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Arrangement<\/th><th>Use when<\/th><\/tr><\/thead><tbody><tr><td>Auto-pay<\/td><td>The customer will keep a card on file and Stripe should charge it automatically.<\/td><\/tr><tr><td>Pay by Invoice<\/td><td>The customer should receive a Stripe invoice for payment.<\/td><\/tr><tr><td>Contract Exempt<\/td><td>The customer is governed by a separate contract or is not billed through standard Stripe well-based billing.<\/td><\/tr><tr><td>Test, Scheduled, Disabled, Review Required<\/td><td>Administrative controls. Do not activate normal billing until the company is in the appropriate approved arrangement.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For new companies, <code>Review Required<\/code> is the safe default. It prevents accidental billing before the arrangement has been confirmed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Complete the payment setup<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For <strong>Auto-pay<\/strong>:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Open the company\u2019s Billing Setup page.<\/li>\n\n\n\n<li>Add the customer\u2019s payment method.<\/li>\n\n\n\n<li>Select it as the default payment method.<\/li>\n\n\n\n<li>Confirm the billing contact and payment method are both present.<\/li>\n\n\n\n<li>Review the expected monthly charge.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">For <strong>Pay by Invoice<\/strong>:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Confirm the billing contact email is correct.<\/li>\n\n\n\n<li>Confirm the arrangement is set to Pay by Invoice.<\/li>\n\n\n\n<li>Review the expected monthly charge.<\/li>\n\n\n\n<li>Start the invoice-based subscription.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The system uses Stripe\u2019s configured pricing and the company\u2019s well count. Billing is usage-based, so the team should verify the well count before starting or materially changing a subscription.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Start the subscription<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Once the setup is correct:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Select <strong>Start Subscription<\/strong>.<\/li>\n\n\n\n<li>Confirm the success message and subscription status.<\/li>\n\n\n\n<li>For Auto-pay, verify that Stripe shows the payment method as the default.<\/li>\n\n\n\n<li>For invoice billing, verify that the billing contact will receive Stripe invoices.<\/li>\n\n\n\n<li>Confirm the subscription is active before treating the account as a normally billable import customer.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The application blocks billable data imports when it cannot verify an active subscription. That is intentional, it prevents service and billing from getting out of sync.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Monitor active customers<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use the Upstream HQ company list and Revenue Report to review:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Billing arrangement<\/li>\n\n\n\n<li>Active, canceled, or cancellation-scheduled subscription status<\/li>\n\n\n\n<li>Unique-well count<\/li>\n\n\n\n<li>Expected monthly recurring price<\/li>\n\n\n\n<li>Actual paid invoice revenue<\/li>\n\n\n\n<li>Invoice history and upcoming invoice information<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Set the <strong>Invoice Payment Alerts<\/strong> recipients in the Revenue Report. When Stripe marks an invoice paid, the designated team members receive the customer name, billing contact, amount paid, payment date, and links to the Stripe-hosted invoice\/PDF.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6. Handle card expiry or a payment problem<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If an Auto-pay customer\u2019s card is expiring or a payment fails:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Contact the billing contact.<\/li>\n\n\n\n<li>Have them provide or update the payment method.<\/li>\n\n\n\n<li>Set the new card as the default payment method.<\/li>\n\n\n\n<li>Confirm the subscription remains active or returns to good standing.<\/li>\n\n\n\n<li>Confirm the subsequent Stripe invoice\/payment outcome in invoice history.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Do not create a replacement subscription merely because the card changed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7. Cancel service correctly<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To stop service:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Open Billing Setup.<\/li>\n\n\n\n<li>Select <strong>Cancel Subscription<\/strong>.<\/li>\n\n\n\n<li>Confirm the scheduled end-of-period date.<\/li>\n\n\n\n<li>Keep the customer active through the already-paid billing period.<\/li>\n\n\n\n<li>Confirm final invoice status and cancellation after the end date.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">This schedules cancellation at the end of the billing period, rather than shutting the customer off immediately.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">8. Change Auto-pay to Pay by Invoice, or the reverse<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Do not simply change the arrangement while the current Stripe subscription is active.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Schedule cancellation of the current subscription.<\/li>\n\n\n\n<li>Wait until the existing billing period ends and the subscription is no longer active.<\/li>\n\n\n\n<li>Change the billing arrangement.<\/li>\n\n\n\n<li>Complete the required payment or invoice-contact setup.<\/li>\n\n\n\n<li>Start exactly one new subscription.<\/li>\n\n\n\n<li>Confirm the new arrangement and subscription status.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The new safeguard deliberately blocks arrangement changes during an active subscription to prevent double billing or mismatched Stripe configuration.<\/p>\n\r\n\t\t\t<div id=\"daexthefu-container\"\r\n\t\t\t\tclass=\"daexthefu-container daexthefu-layout-stacked daexthefu-alignment-center\"\r\n\t\t\t\tdata-post-id=\"21263\">\r\n\r\n\t\t\t\t<div class=\"daexthefu-feedback\">\r\n\t\t\t\t\t<div class=\"daexthefu-text\">\r\n\t\t\t\t\t\t<h3 class=\"daexthefu-title\">Was this article helpful?<\/h3>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"daexthefu-buttons-container\">\r\n\t\t\t\t\t\t<div class=\"daexthefu-buttons\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t<div class=\"daexthefu-yes daexthefu-button daexthefu-button-type-icon\" data-value=\"1\">\r\n\t\t\t\t\r\n                <svg>\r\n                    <defs>\r\n                        <style>.thumb-up-cls-1{fill:#c9c9c9;}.thumb-up-cls-2{fill:#e1e1e1;}.thumb-up-cls-3{fill:#676767;}<\/style>\r\n                    <\/defs>\r\n                    <g id=\"thumb_up\">\r\n                        <path class=\"thumb-up-cls-2 daexthefu-icon-circle\" d=\"m24,3c11.58,0,21,9.42,21,21s-9.42,21-21,21S3,35.58,3,24,12.42,3,24,3m0-1C11.85,2,2,11.85,2,24s9.85,22,22,22,22-9.85,22-22S36.15,2,24,2h0Z\" \/>\r\n                        <g>\r\n                            <rect class=\"thumb-up-cls-3 daexthefu-icon-secondary-color\" x=\"10\" y=\"20\" width=\"6\" height=\"15\" rx=\"1.5\" ry=\"1.5\" \/>\r\n                            <path class=\"thumb-up-cls-1 daexthefu-icon-primary-color\" d=\"m30.57,9.06l-.49-.1c-.81-.17-1.61.35-1.78,1.16l-5.3,11.74c-.17.81,3.16,1.61,3.97,1.78l1.96.41c.81.17,1.61-.35,1.78-1.16l2.18-10.27c.34-1.61-.7-3.21-2.31-3.56Z\" \/>\r\n                            <path class=\"thumb-up-cls-1 daexthefu-icon-primary-color\" d=\"m38.17,20h-18.67c-.83,0-1.5.67-1.5,1.5v12c0,.83.67,1.5,1.5,1.5h16.27c.71,0,1.33-.5,1.47-1.21l2.4-12c.19-.93-.53-1.8-1.47-1.8Z\" \/>\r\n                        <\/g>\r\n                    <\/g>\r\n                <\/svg>\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t<div class=\"daexthefu-no daexthefu-button daexthefu-button-type-icon\" data-value=\"0\">\r\n\t\t\t\t\r\n                <svg>\r\n                    <defs>\r\n                        <style>.thumb-down-cls-1{fill:#c9c9c9;}.thumb-down-cls-2{fill:#e1e1e1;}.thumb-down-cls-3{fill:#676767;}<\/style>\r\n                    <\/defs>\r\n                    <g id=\"thumb_down\">\r\n                        <path class=\"thumb-down-cls-2 daexthefu-icon-circle\" d=\"m24,3c11.58,0,21,9.42,21,21s-9.42,21-21,21S3,35.58,3,24,12.42,3,24,3m0-1C11.85,2,2,11.85,2,24s9.85,22,22,22,22-9.85,22-22S36.15,2,24,2h0Z\" \/>\r\n                        <g>\r\n                            <rect class=\"thumb-down-cls-3 daexthefu-icon-secondary-color\" x=\"10\" y=\"13\" width=\"6\" height=\"15\" rx=\"1.5\" ry=\"1.5\" \/>\r\n                            <path class=\"thumb-down-cls-1 daexthefu-icon-primary-color\" d=\"m30.57,38.94l-.49.1c-.81.17-1.61-.35-1.78-1.16l-5.3-11.74c-.17-.81,3.16-1.61,3.97-1.78l1.96-.41c.81-.17,1.61.35,1.78,1.16l2.18,10.27c.34,1.61-.7,3.21-2.31,3.56Z\" \/>\r\n                            <path class=\"thumb-down-cls-1 daexthefu-icon-primary-color\" d=\"m38.17,28h-18.67c-.83,0-1.5-.67-1.5-1.5v-12c0-.83.67-1.5,1.5-1.5h16.27c.71,0,1.33.5,1.47,1.21l2.4,12c.19.93-.53,1.8-1.47,1.8Z\" \/>\r\n                        <\/g>\r\n                    <\/g>\r\n                <\/svg>\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div class=\"daexthefu-comment\">\r\n\t\t\t\t\t<div class=\"daexthefu-comment-top-container\">\r\n\t\t\t\t\t\t<label id=\"daexthefu-comment-label\" class=\"daexthefu-comment-label\"><\/label>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"daexthefu-comment-character-counter-container\">\r\n\t\t\t\t\t\t\t\t<div id=\"daexthefu-comment-character-counter-number\"\r\n\t\t\t\t\t\t\t\t\tclass=\"daexthefu-comment-character-counter-number\"><\/div>\r\n\t\t\t\t\t\t\t\t<div class=\"daexthefu-comment-character-counter-text\"><\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<textarea id=\"daexthefu-comment-textarea\" class=\"daexthefu-comment-textarea\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Is there anything else you&#039;d like to share?\"\r\n\t\t\t\t\t\t\t\tmaxlength=\"\r\n\t\t\t\t\t\t\t\t400\t\t\t\t\t\t\t\t\t\"><\/textarea>\r\n\t\t\t\t\t<div class=\"daexthefu-comment-buttons-container\">\r\n\t\t\t\t\t\t<button class=\"daexthefu-comment-submit daexthefu-button\">Send feedback<\/button>\r\n\t\t\t\t\t\t<button class=\"daexthefu-comment-cancel daexthefu-button\">Cancel<\/button>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div class=\"daexthefu-successful-submission-text\">Thanks for your feedback!<\/div>\r\n\r\n\t\t\t<\/div>\r\n\r\n\t\t\t","protected":false},"excerpt":{"rendered":"<p>Use this as the operating process for Upstream+&#8217;s billing team. 1. Confirm the company is ready to bill Open the company record in Upstream HQ and confirm: Do not start [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_helpful_status":1,"footnotes":""},"categories":[54],"tags":[82],"class_list":["post-21263","post","type-post","status-publish","format-standard","hentry","category-internal","tag-billing"],"wps_subtitle":"","_links":{"self":[{"href":"https:\/\/upstreamreporting.app\/support\/index.php?rest_route=\/wp\/v2\/posts\/21263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/upstreamreporting.app\/support\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/upstreamreporting.app\/support\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/upstreamreporting.app\/support\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/upstreamreporting.app\/support\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=21263"}],"version-history":[{"count":1,"href":"https:\/\/upstreamreporting.app\/support\/index.php?rest_route=\/wp\/v2\/posts\/21263\/revisions"}],"predecessor-version":[{"id":21264,"href":"https:\/\/upstreamreporting.app\/support\/index.php?rest_route=\/wp\/v2\/posts\/21263\/revisions\/21264"}],"wp:attachment":[{"href":"https:\/\/upstreamreporting.app\/support\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/upstreamreporting.app\/support\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/upstreamreporting.app\/support\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}