Payment generator
Fill in the form and submit it — your payment links appear below.
Integration methods
VeilPay supports two payment methods:
The direct method is the easiest way to start accepting payments. You generate a payment link and send it to the user. The user opens the link and completes the transaction. This method does not require backend integration. However, because the transaction parameters (amount, address, etc.) can potentially be modified by the user, you should always verify that the payment was received at the correct address before delivering goods or services.
The indirect method gives you more control over the transaction. In this flow, you first create the transaction and receive a transaction ID. You then present the payment details to the user. Because the transaction is created beforehand, the user cannot modify the payment parameters. This also allows you to track the transaction status using the transaction ID. Transactions created using this method must be started within 72 hours, otherwise they are automatically removed from the database.
Choosing a method
Use the pre-generated transaction method if you want:
more control over the payment flow
the ability to track transaction status
stronger protection against parameter changes
Use the direct link method if you want:
the fastest integration
no backend development
a simple payment link flow
Transaction limits
VeilPay transactions are currently limited to the equivalent of 5 BTC per transaction.
This limit helps minimize processing delays and reduces potential KYC-related risks.
Same-coin payments
If the user sends the same cryptocurrency that you selected to receive, no exchange is required.
Veil does not charge any fees for these transactions.
If email notifications are enabled when creating a transaction, you will receive a notification once the payment is completed.
Fiat pricing
VeilPay does not process fiat payments directly.
However, you can define the price of a transaction in fiat currency (USD, EUR, etc.).
VeilPay will automatically convert the amount into the equivalent value in cryptocurrency using the current exchange rate.
API integration
The pre-generated (indirect) method is built for server-to-server integration. Your backend creates a payment through our REST API, gets back an anonpay_id, and you show or embed the VeilPay widget by that id. All payment parameters are stored on our side, so the customer cannot change the amount, address, or any other field.
All endpoints live under /api/anonpay on your VeilPay domain. They are public — no API key or signing is required to create a payment.
From your server, send a POST request to /api/anonpay/prepare with the coin and network you want to receive, your wallet address, and the amount. No order is created at this point — you only reserve a payment intent.
Redirect the customer to the payment page for that id, or embed it on your own page as an iframe. The widget opens with the amount and address locked — the customer only picks which coin to pay with.
Check the current status at any time with a GET request. The status moves through prepared → waiting_deposit → deposit_received → exchanging → sending → completed.
Instead of polling, pass a webhook URL when creating the payment to receive a POST on every status change: