> For the complete documentation index, see [llms.txt](https://loop-crypto.gitbook.io/old-loop-crypto/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://loop-crypto.gitbook.io/old-loop-crypto/dashboard-functionality/one-time-payments.md).

# One-time payments

Collecting one time payments in crypto is time consuming because it is very manual - you have to send a one-off invoice manually, wait for it to get paid, then track down the transaction hash and finally deliver the product. Loop enables  companies to automate this entire process in 3 easy steps. These steps can be completed via our dashboard (no-code) or via our SDK / API calls.&#x20;

1. Create a one-time payment
2. Collect authorization&#x20;
3. Invoice (i.e. schedule payment)&#x20;
4. Optional: Set up webhook notifications&#x20;

{% hint style="info" %}
You can read about how Loop helped Assure DeFi collect one-time payments at scale [here](https://www.loopcrypto.xyz/blog/case-study-assure-defi).&#x20;
{% endhint %}

***

## No code

### 1. Create a one-time payment&#x20;

On the [company dashboard](https://admin.loopcrypto.xyz/login), navigate to the "one-time" page, and click add a new one-time payment button. When creating a one-time payment, you are able to select which [tokens you want to accept by network](/old-loop-crypto/learn/core-components/collecting-authorization/enabling-payment-on-multiple-networks.md), and you can elect to enable [auto-invoicing](/old-loop-crypto/dashboard-functionality/subscriptions/auto-invoicing.md) (recommended), among other fields.

Once a one-time payment is added, the payment will be included in the table and a [checkout page](/old-loop-crypto/technical-docs/archeticture/collecting-authorization/checkout-page.md) will automatically be generated.&#x20;

### 2. Collecting authorization&#x20;

Loop provides a custom [checkout page](/old-loop-crypto/technical-docs/archeticture/collecting-authorization/checkout-page.md) for each one-time payment. This page can be sent directly to the end customer via email, telegram, included in an externally generated invoice or it can be embedded directly on your site in a "[pay with crypto](/old-loop-crypto/technical-docs/archeticture/collecting-authorization/checkout-page/add-pay-with-crypto-button.md)" button.&#x20;

### 3. Invoice

If you chose auto-invoicing, Loop will automatically generate the transfer request for the one-time payment based on the item's payment frequency and amount specified. There's no need to do anything. &#x20;

If you chose to manually invoice, you can generate an invoice (called a [transfer requests](/old-loop-crypto/technical-docs/apis/transfer-requests.md)) on our [company dashboard](broken://pages/xHIK5SUH0x4muRTyjWHA) via the invoice button on the Customers page. Here you can type in the details of the invoice and schedule the payment. *This option is best for companies who may have changing payment amounts and dates and thus require flexibility in scheduling a payment.*&#x20;

**That's it! You just got paid.**&#x20;

You can find all the details of the payment on the transactions page and download as a CSV.&#x20;

***

### Optional (webhooks)&#x20;

Loop uses [webhooks](/old-loop-crypto/technical-docs/apis/webhooks.md) to notify you of events. You can ingest these events into your application or your can have them go to [Slack, Airtable or Discord](/old-loop-crypto/technical-docs/apis/webhooks/slack-airtable-discord-telegram.md) to be notified immediately of a payment.&#x20;

The `AgreementSignedUp` event lets you know that a wallet provided authorization to be billed - it does not mean you have been paid yet, but it does indicate the user has set an allowance for payments.&#x20;

The `TransferProcessed` event is the payment notification and indicates funds have been sent to the receiving wallet.

#### Using webhooks to granting access to your system

You can use the `wallet address,` `email` or a `reference ID` provided in either of these events to map to users in your system to provide access to your system.&#x20;

Even with immediate invoicing, there will be a delay between the webhook events, as the transaction must be confirmed on-chain. Companies can decide to grant access based on the `AgreementSignedUp` event and take action if you do not hear about the `TransferProcessed` event within a certain amount of time, (e.g. show a warning, etc.). We built Loop to be flexible, so companies can decide how "aggressive" they want to be about payment confirmation.&#x20;

There are a few reasons why the `TransferProcessed` event would not occur:

* The wallet does not have enough balance to cover the payment&#x20;
* The wallet does not have enough token allowance to cover the payment&#x20;
* The transaction is stuck in the mempool&#x20;
* Loop's relay network is down&#x20;

Wallet amount and balance information can be found on our company dashboard for all active subscribers if you are troubleshooting a late payment.&#x20;
