One-time payments

Considerations:

  • This guide assumes that your company’s Loop / Stripe integration has already been set up. If it has not been set up yet, there is a single-step setup guide that takes 2 minutes and can be found here.

  • This guide is only for setting up a product with a pricing model of one-time. Using the invoicing functionality within Stripe is not currently supported.

  • Loop only works with Flat rate pricing model. Other pricing models are not supported.

Benefits of doing it this way:

  • Immediate notification and record of payment confirmation in Stripe: You can save time not having to follow up with the customer and ask for the transaction hash. Relatedly, you can use Stripe webhooks for when an invoice is marked paid to automatically permission a customer into your system.

  • You can manage your customer base and one-time payment products in a single place, even if some of your customers pay with fiat and some of your customers pay with crypto.

  • If a customer checks out for a one-time payment with crypto, the crypto payment method is only used for that one-time payment. The customer has the choice to pay with fiat or pay with crypto for subsequent transactions.

There are two main scenarios described in this guide:

Scenario 1: Company wants to charge a customer for a one-time payment product, to be paid in crypto. The invoice doesn’t exist yet, but the product does.

Scenario 2: Company wants a customer to pay for an existing invoice for a one-time payment product using crypto. The invoice already exists, and payment will be associated with that invoice. Scenario 2 is described further down the page.


Guide for scenario 1, setting up checkout for a one-time payment product

1) Navigate to the Products page in Stripe and click “Add Product”.

2) In the “Add Product” form, add the details for your product, making sure that the pricing model is “One time”, and click “Save Product” when you’re done.

If the product already exists, just ensure that the pricing model is “One time”. All products are automatically added to Loop by the Stripe / Loop integration.

3) Next, you need your customer to authorize the payment by checking out for the one-time payment item.

You can do this in 2 ways: via the hosted checkout page, or via the embedded checkout modal that you can integrate into your site/application. You can do either of these, but we’ll describe the steps for using the hosted checkout page here.

Retrieve the checkout link for the new product in the Loop Customer Portal. When you’re logged in, navigate to the “One-time” tab for Inbound Payments on the left-hand navigation bar:

The newly created Stripe one-time payment product should be in the table of One-time payment items. If you were already on this page before you added the Product in Stripe, you may need to refresh the page to see the new item in the table.

Note: if you want to change the tokens that are accepted for the newly created one-time payment item in Loop, or you want to add a pricing description that’s displayed in checkout, you can click on the Manage -> Edit button for the item you’d like to edit.

When your customer goes to that URL, they will see a checkout page for the one-time item, and they will complete the checkout process by following the steps on the page.

Note, if you’re using the embedded checkout, instead of sharing the link with your customer, you’ll embed the checkout in your site using the item ID from the checkout URL. You can find more information about configuring the embedded checkout here.

5) The payment will automatically initiate; no action is required by you to initiate it. After your customer signs up, we will create the customer in Stripe (or assign to an existing customer if you passed through the customerID) and in Loop. Additionally, you can see the resulting payments both in Loop’s system and in Stripe’s system.

In Loop’s system, you will see a new row on the Customers page table:

Additionally, you will see a row in the Transactions page table, for the one-time payment.

In Stripe’s system, you will see a new row on the Customers page for the customer who completed checkout for the one time payment:

You will also see an Invoice in Stripe is automatically created, and the Invoice is marked as Paid when the crypto payment is processed:

At this point, congratulations, you’re done accepting your one-time payment!


If you already have a subscription in Stripe that you want to enable a checkout option for, so that your customer can pay in crypto, the steps are similar to the flow above, but you will need to add one additional option to the checkout URL.

1) Once you have created the Product in Stripe (steps 1 and 2 above), you can create an Invoice for that Product in the Invoices page in Stripe:

When you set up the Invoice, there are 3 things you should be sure to set: Payment collection should be set to “Request payment”, you should uncheck the box to include a link to the online payment page (that page is only for setting up fiat payments), and you should set the invoice due date to “due today” (see screenshot below).

Be sure to review and save / send the invoice once these options are configured.

2) Next, you need your customer to authorize the payment by checking out for the one-time payment item.

You can do this in 2 ways: via the hosted checkout page, or via the embedded checkout modal that you can integrate into your site/application. You can do either of these, but we’ll describe the steps for using the hosted checkout page here.

There are 2 steps to set up the hosted checkout page for paying an existing invoice. First, you need to get the checkout URL. You can copy the URL from the One-time table in Loop’s Company Portal:

3) Next, you need to get the invoice ID from Stripe.

The Stripe invoice ID can be found on the Invoices page. You also will land on the Invoice by default after you create it. The ID is in the upper right, and it begins with “in_”. (Example ID: in_1Nb95GAzqEj6L6l5Nz9U8XQg)

Now that you have these two pieces, you need to combine them. The format is:

{{full loop checkout link}}?sub={{stripeInvoiceId}}

Example: https://checkout.loopcrypto.xyz/695fc56d-98af-48eb-8429-863610075b39/38b8f6ec-e373-4239-9efa-01cb94925b64?sub=in_1Nb95GAzqEj6L6l5Nz9U8XQg

Note, if you’re using the embedded checkout, instead of sharing the link with your customer, you’ll embed the checkout in your site using the item ID from the checkout URL, and you will set the externalSubscriptionId field to the ID of the Stripe invoice. You can find more information about configuring the embedded checkout here.

The customer connects their wallet, selects the token to pay with, and clicks checkout.

You can then verify the Invoice is marked as paid when the customer completes checkout:

Last updated