> For the complete documentation index, see [llms.txt](https://developers.cryptopay.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.cryptopay.me/guides/invoices/payment-links.md).

# Payment links

Merchants can use payment links instead of custom API integration to accept payments.

Payment link is a tool which can be flexibly integrated into payment and sales scripts. Payment link can create multiple invoices.

Examples of usage:

* The "Payment by Crypto" button from the shopping cart
* QR code for cryptocurrency payment on the web, a PDF or a paper version of the invoice
* Sending the payment link to an online chat while talking to the client.

Here is an example of a USDT payment link created via merchant account: <https://catalog-business-sandbox.cryptopay.me/items/AX0KTD>

### How to use the payment link

1. Log in to your Cryptopay Business account
2. Navigate to Integration → Online checkout
3. Generate a new key
4. Create a link with the required GET parameters
5. Provide a link to the customer to make a payment.

To create a link, please use the domain depending on the environment:

| Environment | URL                                                                                                |
| ----------- | -------------------------------------------------------------------------------------------------- |
| Sandbox     | [https://pay-business-sandbox.cryptopay.me](<https://pay-business-sandbox.cryptopay.me&#xA;&#xA;>) |
| Production  | [https://business-pay.cryptopay.me](<https://business-pay.cryptopay.me&#xA;&#xA;>)                 |
|             |                                                                                                    |

Here's example of a payment link created via widget key - <https://pay-business-sandbox.cryptopay.me/?widgetKey=2b581fc0-41ff-4864-8b25-a4b2b7514b8f&priceAmount=10&priceCurrency=USD>

### Parameters

<table><thead><tr><th width="197">Parameter</th><th>Type</th><th>Usage</th><th>Description</th></tr></thead><tbody><tr><td>widgetKey</td><td>string</td><td>Required</td><td>Your widget key</td></tr><tr><td>priceAmount</td><td>number (double)</td><td>Required</td><td>Purchase amount</td></tr><tr><td>priceCurrency</td><td>string</td><td>Required</td><td>Purchase currency</td></tr><tr><td>customId</td><td>string</td><td>Optional</td><td>Purchase reference ID in your system</td></tr><tr><td>successRedirectUrl</td><td>string</td><td>Optional</td><td>URL of the page the user will be redirected to if the payment is successful.</td></tr><tr><td>unsuccessRedirectUrl</td><td>string</td><td>Optional</td><td>URL of the page the user will be redirected to in case of an error.</td></tr><tr><td>description</td><td>string</td><td>Optional</td><td>Purchase description</td></tr><tr><td>name</td><td>string</td><td>Optional</td><td>Purchase name</td></tr><tr><td>locale</td><td>string</td><td>Optional</td><td><p>Can be <code>en</code>, <code>de</code>, <code>fr</code>, <code>es</code>, <code>pt</code>, <code>ru</code> and <code>jp</code> which means English, German, French, Spanish, Portuguese, Russian or Japanese language. </p><p>If parameter is not set, the language will be taken from the browser settings.</p></td></tr></tbody></table>

{% hint style="warning" %}
If the user proceeds with the payment, invoice status updates will be sent via [callbacks](https://developers.cryptopay.me/guides/api-basics/callbacks) to the Callback URL configured for the corresponding project on the Integration page.
{% endhint %}

{% hint style="danger" %}
Handling callbacks correctly is crucial to make sure your integration’s business logic works as expected. It is highly recommended to validate payment statuses and callback data against the expected payment details in your system before triggering any business logic.
{% endhint %}
