Skip to main content
Merchants can use Stripe’s payment management system with Loop to collect onchain payments for one-time purchases, subscriptions and invoices. Merchants manage their billing logic (including coupon codes, free trials, charging per API, etc), product creation, and subscription management within Stripe. Thus, merchants can use the same logic regardless of whether their customers have chosen to pay with fiat or on.

Why Loop + Stripe?

While Stripe offers crypto payment processing, it has limitations on who can use it and what features are available which may not meet many merchants’ needs. This is where a specialized crypto and stablecoin payment gateway like Loop Crypto comes in. You can continue using Stripe for core billing logic and invoice generation while Loop supplements the platform with a more robust crypto payment solution that integrates seamlessly with Stripe.

Stripe vs Loop

LoopStripe
Merchants servedGlobalOnly US based, requires approval
Tokens supportedAny stablecoin and token, including USDT, USDC, PYUSD, USDP, and USDGOnly USDC, USDG and USDP
SubscriptionsNo approval required, native autopay on Solana, Ethereum, Polygon, Base, Optimism, Arbitrum, and any EVM compatible networkRequires approval, only supportes Polygon and Base
PayoutsStablecoins, tokens, or 30+ fiat currenciesOnly USD
Wallet support500 different walletsMetamask, Phantom, Coinbase wallet, and WalletConnect

Get started

Get started with Loop + Stripe

Get started in minutes

Common next steps

Set default tokens

Learn about webhooks

FAQs

###Integration features
Loop processes crypto payments only and allows merchants to settle in fiat or crypto. Stripe is your processor for fiat payments. Loop manages the crypto payments and syncs all crypto payment data back to your Stripe account.
You can create a new product and manage (i.e., archive) your existing products all within Stripe. To create a new product in Stripe, navigate to the Products page and click “Add Product.” Any new products or updates you make to products in Stripe automatically sync with Loop on the Company Dashboard.
Yes, Loop Crypto does support coupon codes created in Stripe. Please refer to this page of the docs.
Not at this time. You will need to manage your own referral tracking.
A customer can be canceled in either Stripe or Loop. There are several ways a customer can cancel via either Loop or Stripe. For more details on how to manage cancellations, please refer to this page in our documentation.
Whenever a payment is due for a subscription, Stripe generates an invoice and tries to collect payment by automatically charging the payment method on file; however, in the case of crypto payments, there is no payment method on file. Loop will automatically update the invoice and mark it as “paid outside of Stripe.”Within the memo of the invoice, you will see a note that this invoice will be paid via Loop Crypto The canceled payment you see is simply Stripe canceling its attempt to charge the payment method on file after it recognizes that a payment has been made outside of Stripe.If you look at the invoice.paid event on the invoice record in Stripe, you will notice that the status of the invoice is Paid. The metadata within the invoice record will also be updated by Loop. This indicates to you that the invoice was paid by Loop.
Loop Crypto has a safety mechanism internally to prevent double payments. Our system can never try to process a payment for the same invoice number twice, so even if a particular chain is slow, we will not try the same payment twice. This is something you do not need to worry about handling on your end. Loop Crypto handles all on-chain interactions.
Our failure rate is extremely low, too non-existent. This is because Loop will only process payments after we’ve checked the wallet’s balance and approval amount and confirmed they are both high enough to succeed on chain. In the rare chance that a transaction fails on chain, you will see “failed” as the transaction’s status. You can contact Loop in these situations, and we will help you troubleshoot.
Companies are able to settle in either crypto or fiat. For those wishing to settle in crypto, you will receive the crypto that your end customer pays you in. For example, if the customer pays in USDC, you will immediately see USDC hit your wallet after payment completes. For those wishing to settle in fiat, you complete a KYB screen, which then allows funds to be automatically settled in fiat. In this scenario, your customer would initiate payment in USDC, and you as the business would receive USD.
###Customer and invoice management
Loop Crypto has a safety mechanism internally to prevent double payments. Our system can never try to process a payment for the same invoice number twice, so even if a particular chain is slow, we will not try the same payment twice. This is something you do not need to worry about handling on your end. Loop Crypto handles all on-chain interactions.
On the Invoices page of the Company Dashboard, there is a tab called “Draft.” This Draft status exists because Stripe does not finalize the next invoice for a subscription until roughly the day before. That means that the invoice could potentially be modified up until the due date. Any modifications to the invoice are automatically pulled into Loop, and the invoice is updated. This Draft status simply denotes that the invoice details (amount, due date, etc.) may change as Stripe has not yet finalized the invoice. Once Stripe finalizes the invoice, the invoice moves to the Finalized tab.
The Loop checkout collects the final amount due, inclusive of taxes. It is your responsibility to set up tax calculations in Stripe. The final invoice amount, inclusive of tax, is then passed to Loop when the payment link is generated. Most companies will show the customer a final price on a screen before the customer heads to the payment link. You may also want to hide the cart on the Loop checkout if you are showing the breakdown beforehand (?cartEnabled=false).Down the road, Loop is exploring being able to show the tax amount as a line item within the cart. You can also embed the Loop widget and design your own cart UI if desired.
When you create a checkout session (see the endpoint here), you can pass the Stripe customer ID into this parameter: externalCustomerId. The subscription and/or invoice created in the subsequent checkout will be tied to this customer.
###Webhooks
Loop Crypto monitors its systems and has built internal alerting systems to ensure any downtime is minimal and that any issues trigger immediate alerts. For additional redundancy to confirm when a payment occurs, you can listen to both Stripe’s invoice.paid event as well as Loop Crypto’s transferProcessed event. Both of these events are triggered when a payment occurs on chain. You can also always reference your company’s contract and the on-chain transaction history. We recommend that companies utilize webhooks rather than trying to repeatedly call the Loop API to gather the status of an invoice. You should not need to periodically poll Stripe from the backend as an additional verification method.
Loop Crypto’s transferProcessed event provides more details around the on-chain transaction. It provides the transaction hash, network, and net amount of the token sent. Within the net amount field, you can find the token that was sent for payment.
When an invoice is finalized in Stripe and pulled into Loop Crypto, Loop emits a transferFinalized event (more details here). This means the final details of the invoice have been finalized, and Loop will now be able to collect on the invoice when the due date and time arrive.When the invoice is due, the transferProcessed event (from Loop) will fire as well as the invoice.paid event (from Stripe) when the next payment is processed. The agreementSignedUp event only occurs once during that initial checkout. If they sign up on June 10th for a monthly plan, you would see the next invoice get paid automatically on July 10th when you’ll receive a transferProcessed event assuming the wallet has enough balance and allowance. The transferProcessed event will contact the transaction hash and the transfer ID. If the payment is missed, Loop emits a LatePayment webhook 10 minutes after the missed payment.Separate from the webhooks, Loop also has an email reminder cadence for the end customer. There is a good example cadence in this page of the docs.
###Emails and notifications
Please refer to this page in our docs with reference to the payment reminder cadence and notifications.
If the allowance or balance was not high enough at the time of payment, the payment will not be facilitated. Instead, Loop will continue to monitor the allowance and balance over the default retry period (typically set at 7 days). If during that period, there is sufficient allowance and balance, the payment will proceed. If not, the subscription is canceled at the end of the retry period. Contact Loop if you want to modify the default retry period.
Stripe and Loop emails operate independently of each other. If you have invoice reminder and receipt emails set up in Stripe, those will continue to send for all customers, including those paying with Loop. Loop’s emails are specific to the crypto payment event. We send reminders for upcoming payments and will also send a notice if the allowance or balance for the payment is insufficient, causing a late payment. Loop also sends receipt emails, which include the transaction hash for customers’ records.
If you opt to enable Loop Crypto emails, customers will receive receipts after payment is completed. Please refer to this page for more details and an example of the receipt.
###Payment links
Typically, when a new subscription is created, the invoice is not finalized until an hour later in Stripe, and then Stripe actually processes the payment at midnight. Using this parameter prompts Stripe to finalize the invoice now and prompts Loop to immediately collect on the finalized invoice. This parameter is typically used for upgrades where you want to immediately charge a customer after upgrading them to a higher tier.
When you create a checkout session, there is a parameter enabling dynamic redirects post checkout. It is called successUrl. You can pass in a URL that is specific to a given checkout session, so it is unique for each customer. We have a video showing how to set up a redirect URL on this page.
###Subscription management
The next payment will happen automatically as long as the wallet has enough balance and allowance. For example, let’s say the customer signed up for a 100amonthsubscription.Thecheckoutwilldefaulttohavingthemsetanallowanceof100 a month subscription. The checkout will default to having them set an allowance of 1,300. Each month, that 1,300allowancegetsspentdown,andifitgetstoolow(below1,300 allowance gets spent down, and if it gets too low (below 100), Loop will prompt the customer via email to increase the allowance again. You can modify this default. In addition to the allowance, the balance has to be high enough as well, but the balance only needs to be higher than $100 each month on the payment due date for the payment to process. It’s very similar to how an ACH pull works.
One of the great benefits of crypto payments is that there is visibility into whether a transaction will succeed before it happens. If a wallet does not have a sufficient balance and/or the allowance is too low to cover the payment, the transaction will simply not be processed. To help prevent missed transactions, Loop sends an email update if an upcoming payment needs attention.On the Stripe side, you will see the invoice for that particular customer remain open until the customer adjusts their allowance and/or tops up their wallet. Additionally, companies can subscribe to Loop’s missed payment webhook.
Yes, customers can use the Customer Portal. You can also use Loop’s endpoints and components to allow customers to manage their subscriptions within your own dashboard.
Yes. The user needs to log in with the wallet they paid with in order to see their historical transactions and manage upcoming payments.
Customers can visit the Loop Customer Portal to manage their allowances and payment settings.

Upgrades and downgrades of a subscription

The integration enables upgrades and downgrades. Please refer to this section in our documentation for instructions.
Yes, you can allow a customer to upgrade from a fee plan. Please refer to this page in our documentation.
Loop will only process payments it has high confidence will succeed. In the rare case that a transaction does fail, Loop will roll back the upgrade in Stripe.
###Other topics
Yes, there is a disconnect endpoint that allows customers to switch from crypto payments back to traditional fiat payments. See the disconnect endpoint documentation.To switch from Loop to a credit card in Stripe, we have an endpoint you can call: Disconnect agreement from Stripe. You can pass in the Stripe sub-id to the call and Loop will disconnect Loop that subscription and stop collecting payments. You will then need to set Stripe to charge the credit card within Stripe.Regarding the draft status, this is handled by Stripe. Loop only charges for finalized invoices in Stripe. Stripe will finalize an invoice typically 12-hours before the due date or 1 hour in the case of an upgrade. If your invoicing isn’t finalizing in Stripe, it’s likely the case that the subscription has some parameter in it that is setting Stripe to keep it in draft. Do you have the sub-id and your entity-id? I can look into it for you and provide a detailed explanation.
Email us at hello@loopcrypto.xyz about any new networks you need support for.
This is a tool Stripe utilizes to prevent duplicate payments when it comes to retrying a fiat payment method like card or ACH. This won’t be relevant for Loop. We have our own internal retry mechanism to ensure we never retry a payment for the same invoice. We have a “cool off” period built in to ensure we never retry something while another transaction is already in flight on chain. We haven’t had any other teams need to or try to use idempotency_key with Loop.
I