Skip to main content
In 2026, CryptoProcessing introduced payment requests — a new payment link implementation that aims at replacing the older Invoices feature. It provides a similar customer experience, while introducing some new features. This page showcases the main changes that you need to make in your API integration when switching from invoices to payment requests. You can also use the Migration checklist to make sure you adapted to the payment requests API.

New endpoint, same authentication

To create a payment request, use the new /payments/v1/requests endpoint. The authentication mechanism is the same as for /v2/invoices/create.

See the full API endpoint documentation

Learn the new parameters and see a full request example

Currencies with networks

The way the currencies are represented in the payment requests API is different from the invoices API. Each field is now an object, not a plain string.
  • Inside currency, set iso to the code of the currency you want to receive. If it is a cryptocurrency, also specify the network_name.
  • Inside the optional payment_currency, set iso to the code of the cryptocurrency you want the customer to pay. You may also specify the network_name — or omit it and let the customer choose the network themselves.
Note that unlike the invoices’ sender_currency parameter, payment_currency does not affect the timer behavior. For most merchants, we recommend omitting this parameter and letting the customer choose the currency themselves. This both simplifies the implementation on your side and ensures that customers can choose from all supported currencies and networks, with new ones added automatically in the future. If necessary, you can limit the available currencies in the payment currency settings.
Invoice
Payment request

See the currency codes for payment requests

Learn the ISO codes and available network names for the API calls

Flexible payment lifetime

Unlike invoices, which offer either a fixed 15-minute timer or unlimited time, payment requests let you configure the lifetime to fit your business needs.
InvoicePayment request
Either 15 minutes or unlimited time
to choose the currency
→Between 5 minutes and 60 days
as the overall lifespan
Up to 15 minutes
for the transactions to be created

+ 24 hours
for the transactions to be confirmed
→Up to 1 hour
for the transactions to be created and confirmed
(cannot exceed the lifespan)
Invoice
Payment request
If the customer pays in a different currency than the one you requested, CryptoProcessing locks the conversion rate for up to 1 hour. This is similar to an invoice’s second 15-minute timer. The customer’s transaction must be both created and confirmed within this period, or the payment request expires. Note that the rate lock timer never exceeds the overall lifespan of the payment request. For example, if you set life_time_duration to 30 minutes, and it took 5 minutes for the customer to open the link and select the payment currency, they will only have 25 minutes (not 1 hour) left to pay it. Once the payment request expires, any new transaction will be marked as late_payment and can be subject to an automatic refund.

Read more about the payment request timers

Learn how lifespan and rate_mode fields affect the payment request behavior

Two modes of currency pre-selection

For a payment request with both the currency and the network pre-selected, the new rate_mode parameter determines what the customer sees on the page.
  • Standard mode (the default): the customer still sees a page that describes the requested amount, the conversion rate, the processing fee (if you pass the fees to the customer), and the total amount to pay. On the same page, the customer is asked to enter their email address and KYC data (unless you provided it yourself).
  • Fixed mode: the customer skips the first step entirely and goes straight to the payment details. The customer’s email address and the KYC data must be provided by you when creating the payment request. This is the closest equivalent of an invoice with timer and sender_currency. The lifespan of a fixed payment request never exceeds 1 hour, because the rate lock timer starts immediately after creation. A fixed payment request generates a crypto address immediately, before any interaction with the customer. If you want to show it to the customer in your own interface, you can find it as payment_details.address in the API response.
Invoice
Payment request
If you previously used invoices with a pre-selected currency, the fixed mode lets you keep your current flow, where the customer chooses the currency and the network on your side. However, we still recommend the standard mode, which automatically supports newly added currencies and networks. If necessary, you can limit the currencies customers can pay with in the payment currency settings.

Read more about fixed payment requests

Learn how to skip the currency selection step for the customer

Underpayment tolerance

By default, CryptoProcessing always expects a customer to send the full requested amount of funds, and failing to do so triggers the automatic refund mechanism. If you used to allow partial pay in your invoices (by setting type to “good_until_expired”), you may want to change the default behavior. To do so, configure a custom underpayment tolerance in your merchant settings. This will let you accept payments that are less than requested by a specific amount. Setting the tolerance to 100% would be an equivalent to applying the partial pay mode to all your payment requests.

Read more about underpayment handling

Learn how to set up an underpayment tolerance for payment requests

Other changes

Migration checklist

Request

Read the full API endpoint documentation

/payments/v1/requests

Read the full API callback documentation

payment_request
Last modified on October 13, 2026