How to use Loop with usage-based pricing and bill in arrears
Usage-based billing (i.e. metered billing or consumption billing) is a common pricing model for SaaS businesses that enables companies to charge based on a customer’s usage.
With Loop, you can set up and integrate different types of usage-based pricing models. This is because Loop is simply a payment processor - we charge a payment method on file if it exists or provide a checkout link for manual payment.
Loop knows how much and when to charge a customer because it is told to do so - either initiated by the company via a third party (i.e. Stripe creating an invoice), directly from the company via an API request or from an end payer who directs Loop via a Loop payment link.
Loops flexibility means it can meet any of your payment needs. Below, we will go through how you can use Loop to bill in arrears with billing thresholds set in Stripe that do not reset the billing period.
If you have questions about your specific use case, reach out! We’re happy to help.
Calculating the bill
Billing thresholds allow companies to issue an invoice when a customer’s accrued usage reaches a specified monetary or usage threshold. Companies will use billing thresholds when they want to add precautions to limit the amount owed or to limit the products consumed between invoices.
Companies will sometimes reset the billing cycle when a threshold is met. Doing this effectively treats reaching a threshold as if the subscription had reached its natural rollover point at the end of the month. In this example we will assume the billing threshold is not reset.
Let’s see how Loop can support this in the example below.
Example
A company is charging a flat $100 each month for their service and charges $5 per unit used after 100 units are reached. The customer starts on March 1. The customer’s usage is as follows:
March 1: initiate
March 15: 101 units
March 20: 200 units
March 31: 250 units
The company sets a billing threshold to 200 units and does not reset the billing threshold. The bills will then be as follows:
On March 1 the customer will be billed $100
On March 20 the customer will be billed $500 ((200 units - 100 unit threshold) * $5))
On March 31 the customer will be billed $250 (50 additional units used * $5
Since this customer is using Stripe, these bills are generated within Stripe based on the configuration the company has already set. If you’re collecting payment in fiat, this step is probably already done!
Now that we know what to charge and when to charge it, let’s go over how you do this with Loop.
Creating and receiving the invoice
Loop simply accepts payment details and processes the payments on-chain. These payment details always originate from the company. Loop’s mission is to simplify payments. That’s why we built an integration with the most popular payment management systems to meet customers where they are.
If you are using Stripe, then at setup with Loop you would have provided Loop with Stripe API keys. Loop uses these keys to automatically pull in the invoice from Stripe and translate that payment into a Loop transfer request. You can read more about how to get setup here. In addition to the API keys, you will provide Loop with a “Treasury” wallet so that we know where to send funds for each chain. Companies may also configure which tokens and chains they are willing to accept at the product level.
Charging the customer
Collecting authorization
Now that we know what to bill, we need to know the customer’s wallet to bill them. Loop provides a checkout page and widget to collect a customer’s payment method - i.e. a wallet and token/network that the customer is allowing you to charge. For simplicity, we will discuss the checkout page below, but the widget works exactly the same.
Each checkout page is linked to specific items (i.e. products). These products are created in Stripe and brought automatically into Loop. We tie the authorization to a product so that both Loop and the company have a record of what the customer authorized. These products can have different billing periods and collection methods. For example, one product could be a flat fee charged monthly while the other product could be usage-based charging that occurs at the end of the month.
When a brand new customer uses a Loop checkout page to provide authorization, Loop updates Stripe and creates a record for this customer and assigns a subscription with the products the customer approved. (If you’re billing an existing customer's subscription, then companies can simply pass in a customerID and Loop will associate the authorization with that existing subscription)
By collecting a payment method, companies are able to ensure that they will always get paid on the right network, in the right token, for the full amount since Loop now knows which wallet to charge. This process ensures mistakes don't happen and customers are always sending funds to the right place (unlike this scenario 😢).
Charging a customer for the upfront fee
Loop and Stripe consistently talk back and forth. In our example, the company is charging an upfront fee of $100. Once the customer provides authorization, Loop will tell Stripe. Stripe will then automatically create an invoice for the flat fee product, tell Loop, and Loop will charge the customer. This all happens in a matter of seconds and takes a few minutes to confirm on-chain.
Charging a customer when the threshold is met
Here we see the power of the Stripe - Loop integration. When the customer hits the threshold, Stripe will automatically generate a bill. Loop will immediately hear about this bill and charge the customer’s wallet, which provided authorization via the Loop checkout.
When a payment is received, Loop will mark the invoice in Stripe as paid and include the transaction hash so the company can easily tie the on-chain payment to the off-chain invoice.
For companies that want to allow their customers to manually top-up (i.e. do not automatically deduct when a threshold is met), you can use a Loop checkout page or widget for a one-time product to collect payment for the top-up.
And the loop 😉 of Stripe creating the invoice, telling Loop, charging the customer, and Loop telling the company continues…
Ensuring on-time payments via payment reminders
Loop works to ensure an on-time payment so companies don’t have to. Web3 payments are superior to web2 payments because companies can see payment problems before they arise. Loop will check a wallet’s balance and authorization before a payment takes place and notify the customer about a potential failed payment.
We do this via reminder emails to let a customer know of an upcoming payment. These emails check the customer’s wallet balance and authorization against the expected billing amount to notify the customer if they have enough funds to cover the bill.
We will alert the customer to a payment issue 48 hours and then again 24 hours before a payment is due. Companies can always see a payment’s status and the customer’s payment method on Loop’s company dashboard, giving the company more transparency into the probability of payment success.
Concurrently, Loop provides an end-customer portal for payers to easily see upcoming payments, confirmed payment details and manage their authorizations. Payers can login with their wallet, never having to create a username / password with Loop, to see all their authorizations, manage subscriptions, and even wrap ETH.
After receiving payment
Since Loop marks invoices in Stripe as paid, you can continue to use any integrations you've built off of Stripe events for providing access to your product. No need to change anything. If you have any questions or need assistance, we're happy to help (email or telegram).
___________________________________________________________________________________________________________________________________
About Loop
At Loop Crypto, we build infrastructure to unlock truly programmable money and create an open financial system. We enable crypto payments for 50+ of the top web3 companies, including Pinata, Neynar, Paragraph, Kaito, ETHGlobal, and ENS, supporting millions of dollars transacted and saving thousands of hours.
Whether the payment is one-time or recurring, Loop supports a broad range of payment use cases: subscriptions, one-time charges, recurring bill pay, loan repayments, and donations. Our integrations with Stripe, QuickBooks, and Xero make it easy to implement crypto payments within your existing operations.
If you’re ready to get started, book a call with our team to get started in minutes.
Stay in the Loop.