Hosted Checkout integration
Hosted Checkout is a ready-made payment page hosted by Volet.com.
To preview the page your customers will see, open the Hosted Checkout page for developers.
Your application creates a payment request and redirects the customer to Hosted Checkout. The customer completes the payment, Volet.com sends a status notification to your server, and then redirects the customer back to your website.
Hosted Checkout supports:
Before integrating, create and configure a Hosted Checkout gateway in your account. See Create payment gateway.
Payment flow
- Customer places an order on your website.
- Your website generates a payment request and displays a payment button or link.
- Customer clicks Pay and is redirected to Hosted Checkout.
- Customer completes the payment.
- Volet.com sends a payment status notification to your Status URL.
- Your system updates the order status.
- Hosted Checkout displays the payment result page.
- The customer can then click Continue and is redirected to your Success URL or Failed URL.
Merchant website
│
▼
Hosted Checkout
│
▼
Payment
│
▼
Status URL
│
▼
Merchant backend
│
▼
Customer redirect
For successful payments, the result page includes the transaction ID and payment information. For failed or cancelled payments, it displays the corresponding error or cancellation message.
Success URL and Failed URL can be configured in the Hosted Checkout settings or passed dynamically in the payment request.
Always rely on Status URL notifications when updating order status. Do not rely solely on browser redirects.
Success URL and Failed URL should not be used to determine the final payment status.
Hosted checkout quick start
Step 1. Create payment request
Hosted Checkout endpoint
https://account.volet.com/sci/
Required parameters
To create a payment, submit an HTML form via POST to the endpoint above. The payment request must include the following required parameters:
| Parameter | Description |
|---|---|
ac_account_email | Your Volet.com account email |
ac_sci_name | Hosted Checkout name |
ac_amount | Payment amount |
ac_currency | Payment currency (e.g., USD, EUR) |
ac_order_id | Your unique order identifier |
ac_sign | Digital signature |
For the complete list of supported parameters, see Payment request parameters.
Each payment request must use a unique ac_order_id.
Do not reuse order identifiers for different payments.
Request signature
Generate the ac_sign parameter by calculating the SHA-256 hash of the following string:
ac_account_email:ac_sci_name:ac_amount:ac_currency:secret:ac_order_id
where secret is the password you set when creating the Hosted Checkout.
Example string:
[email protected]:Store:100.00:USD:password:123
SHA-256 hash:
eb9e7f491df701fe7d71c74551ae9e4226dfbed7e3a9cc4916e242d3c09f718e
Pass the resulting hash value in the ac_sign parameter.
Submit the payment request
Submit the HTML form to the Hosted Checkout endpoint using the POST method.
Example payment request
<form method="POST" action="https://account.volet.com/sci/">
<input type="hidden" name="ac_sci_name" value="Store">
<input type="hidden" name="ac_amount" value="100.00">
<input type="hidden" name="ac_currency" value="USD">
<input type="hidden" name="ac_order_id" value="123">
<input type="hidden" name="ac_sign" value="eb9e7f491df701fe7d71c74551ae9e4226dfbed7e3a9cc4916e242d3c09f718e">
<button type="submit">VoletPay</button>
</form>
Step 2. Handle payment notifications
When the payment status changes, Volet.com sends a notification to your Status URL.
The notification is delivered using either GET or POST, depending on your Hosted Checkout configuration.
The notification contains the following parameters:
| Parameter | Description |
|---|---|
ac_transfer | Volet.com transaction ID |
ac_transaction_status | Payment status |
ac_order_id | Your order identifier |
ac_amount | Original payment amount |
ac_merchant_amount | Amount credited to your account |
ac_merchant_currency | Settlement currency |
ac_start_date | Transaction date and time |
ac_sci_name | Hosted Checkout name |
ac_src_wallet | Customer wallet |
ac_dest_wallet | Merchant wallet |
ac_buyer_email | Customer email address (if available) |
ac_hash | Notification signature hash |
For the complete list of available parameters, see Payment notification parameters.
Before updating the order status, verify the ac_hash signature to confirm that the notification originated from Volet.com.
Do not mark orders as paid based on customer redirects.
Always wait for a valid Status URL notification and verify the ac_hash signature before updating the order status.
Example notification sent to your Status URL:
<form method="POST" action="https://merchant.example.com/status">
<input type="hidden" name="ac_transfer" value="235f9d0b-b48f-462c-9949-621c4930490c">
<input type="hidden" name="ac_transaction_status" value="COMPLETED">
<input type="hidden" name="ac_order_id" value="123">
<input type="hidden" name="ac_amount" value="100.00">
<input type="hidden" name="ac_merchant_amount" value="100.00">
<input type="hidden" name="ac_merchant_currency" value="USD">
<input type="hidden" name="ac_start_date" value="2026-06-23 12:30:00">
<input type="hidden" name="ac_sci_name" value="Store">
<input type="hidden" name="ac_src_wallet" value="USD123456789012">
<input type="hidden" name="ac_dest_wallet" value="USD210987654321">
<input type="hidden" name="ac_hash" value="4ceab247ca917e0142b1a99015beaed9310cd6a85ab3bacf08ba44d5ac03590b">
</form>
Verify notification signature
To verify the notification, calculate the SHA-256 hash using the values below and compare it with the received ac_hash.
The signature string is built in this order:
ac_transfer:ac_start_date:ac_sci_name:ac_src_wallet:ac_dest_wallet:ac_order_id:ac_amount:ac_merchant_currency:password
where password is the Hosted Checkout password configured for the gateway.
Example string:
235f9d0b-b48f-462c-9949-621c4930490c:2026-06-23 12:30:00:Store:USD123456789012:USD210987654321:123:100.00:USD:password
Calculate the SHA-256 hash of this string:
4ceab247ca917e0142b1a99015beaed9310cd6a85ab3bacf08ba44d5ac03590b
Compare the calculated hash with the received ac_hash. The values must match before you update the order status.
After the signature has been successfully verified, update the corresponding order in your system using the received payment status.
Step 3. Test integration
Before accepting live payments, verify:
- Customer redirection to Hosted Checkout.
- Successful payment completion.
- Status URL notification delivery.
- Notification signature validation.
- Order status updates.
- Success URL and Failed URL redirects.
- Failed payment handling.
Notification server IP addresses
If your infrastructure uses IP allowlists or firewall rules, allow incoming requests from the following Volet.com notification servers:
- 50.7.115.5
- 51.255.40.139
- 13.53.55.89
Advanced configuration
The sections below describe optional features and advanced integration scenarios.
Preselect payment method
By default, Hosted Checkout displays a payment method selection page.
You can preselect a payment method in the payment request using the ac_ps parameter. When specified, Hosted Checkout opens the corresponding payment screen directly and skips the payment method selection step.
Add the following fields to your payment request parameters:
- Opens the Volet.com account login page directly:
<input type="hidden" name="ac_ps" value="VOLET">
- Opens the USDT on Tron payment page directly:
<input type="hidden" name="ac_ps" value="USDTETHER">
<input type="hidden" name="ac_protocol" value="TRON">
- Opens the Bitcoin payment page directly:
<input type="hidden" name="ac_ps" value="BITCOIN">
This is useful when the customer has already selected a payment method on your website before being redirected to Hosted Checkout.
Language
Use the ac_client_lang parameter to specify the Hosted Checkout interface language.
Example:
<input type="hidden" name="ac_client_lang" value="en">
If no language is specified, Hosted Checkout uses the default language available for the customer.
Custom fields
You can include up to 10 custom fields in a payment request.
Volet.com does not process these fields and returns them unchanged in Status URL notifications and customer redirects.
Typical use cases:
- Customer ID
- Subscription ID
- Internal invoice number
- Comment
Example:
<input type="hidden" name="customer_id" value="12345">
<input type="hidden" name="subscription_id" value="sub_987">
<input type="hidden" name="invoice_no" value="INV-2026-001">
<input type="hidden" name="comment" value="Premium plan">
Sub-merchants
Use the ac_submerchant_url parameter to specify the website of the merchant on whose behalf the payment is processed.
Example:
<input type="hidden" name="ac_submerchant_url" value="https://merchant.example.com">
This option is intended for payment aggregators, marketplaces, and platforms that process payments for other merchants.
All compliance, prohibited activity, and merchant verification requirements applicable to merchants also apply to sub-merchants.
Override URLs
The following parameters can be specified directly in the payment request:
ac_success_urlac_success_url_methodac_fail_urlac_fail_url_methodac_status_urlac_status_url_method
Example:
<input type="hidden" name="ac_success_url" value="https://merchant.example.com/payment-success">
<input type="hidden" name="ac_success_url_method" value="GET">
<input type="hidden" name="ac_fail_url" value="https://merchant.example.com/payment-failed">
<input type="hidden" name="ac_fail_url_method" value="GET">
<input type="hidden" name="ac_status_url" value="https://merchant.example.com/payment-status">
<input type="hidden" name="ac_status_url_method" value="POST">
Values passed in the request override the default URLs configured for the Hosted Checkout gateway.
This is useful when multiple websites, stores, applications, bots, or AI agents use the same Hosted Checkout gateway.
It also allows you to generate different success, failure, and callback URLs for different orders without creating multiple Hosted Checkout gateways.
Disable signatures
The ac_sign parameter is optional if digital signatures are disabled in Hosted Checkout settings.
However, we strongly recommend using signatures in production environments to verify request authenticity and prevent data tampering.
Unsigned requests should only be used for testing and development purposes.
Hosted Checkout reference
Payment request parameters
The payment request is an HTML form submitted by your application to Hosted Checkout.
It contains the payment details, merchant information, redirect URLs, and optional configuration parameters required to process a payment.
The table below lists all supported payment request parameters.
| Parameter | Required | Format | Description | Examples |
|---|---|---|---|---|
ac_account_email | Yes | String | Email address of your Volet.com account. | [email protected] |
ac_sci_name | Yes | String (max. 50 characters) | Hosted Checkout name. | My Store |
ac_amount | Yes | Decimal number | Amount of the payment request. Decimal precision depends on the selected currency. Excess decimal places are truncated automatically. | 100.00, 49.0302, 0.12345678 |
ac_currency | Yes | Currency code | Currency of the payment request. | USD, EUR, BTC, ETH, USDT, USDC, XRP, TRX, LTC, TON, SOL |
ac_order_id | Yes | String (max. 64 characters; "A-z", "-", "_", "0-9") | Unique merchant order identifier. | 123456, baf419d9-6c82-4175-b870-5541b0ff3794 |
ac_sign | Conditional | Hex string (SHA-256) | Request signature used to verify the integrity of the payment request. Required if request signature verification is enabled for the Hosted Checkout. | 36b4c9ad29b61d1c5996e3ef1a3af0c3194e19713613b6bf26a9b905b8019225 |
ac_ps | No | String (payment method ID) | Payment method preselected when Hosted Checkout opens. | VOLET, USDT, USDC, BTC, ETH, XRP, TRX, LTC, TON, SOL, BNB, POL, AVAX |
ac_protocol | No | String (blockchain or protocol ID) | Preselected blockchain network for payment methods that support multiple networks. Used with ac_ps when the selected payment method is USDT or USDC. | ERC20, TRC20, BEP20, POL, SOL, AVAXC, OP, ARB, TON |
ac_comments | No | String (max. 255 characters) | Additional payment description displayed to the customer and cannot be modified. | Payment for Order #1234 |
ac_success_url | No | String (max. 100 characters) | Overrides the configured Success URL. | https://merchant.example.com/success |
ac_success_url_method | No | GET, POST | HTTP method used for the Success URL redirect. Overrides the Hosted Checkout configuration. | GET |
ac_fail_url | No | String (max. 100 characters) | Overrides the configured Failed URL. | https://merchant.example.com/failed |
ac_fail_url_method | No | GET, POST | HTTP method used for the Failed URL redirect. Overrides the Hosted Checkout configuration. | POST |
ac_status_url | No | String (max. 100 characters) | Overrides the configured Status URL. | https://merchant.example.com/status |
ac_status_url_method | No | GET, POST | HTTP method used for Status URL notifications. Overrides the Hosted Checkout configuration. | POST |
ac_client_lang | No | String (locale code) | Language used for the Hosted Checkout page. | en |
ac_submerchant_url | No | String (max. 100 characters) | Website URL of the sub-merchant. Used for platform integrations and required for selected merchant categories. | https://seller.example.com |
Custom fields (for example buyer_email, client_email) | No | Up to 10 string values (max. 100 characters each) | Additional merchant-defined fields returned unchanged in Status URL notifications and customer redirects. Use them to match payments with your own orders, customers, invoices, or other internal records. | [email protected], #INV-12345, user_1001 |
Example
<form method="POST" action="https://account.volet.com/sci/">
<input type="hidden" name="ac_sci_name" value="My Store">
<input type="hidden" name="ac_amount" value="100.00">
<input type="hidden" name="ac_currency" value="USD">
<input type="hidden" name="ac_order_id" value="order_123456">
<input type="hidden" name="ac_sign" value="36b4c9ad29b61d1c5996e3ef1a3af0c3194e19713613b6bf26a9b905b8019225">
<input type="hidden" name="ac_ps" value="USDT">
<input type="hidden" name="ac_protocol" value="TRC20">
<input type="hidden" name="ac_comments" value="Payment for Order #123456">
<input type="hidden" name="ac_success_url" value="https://merchant.example.com/payment-success">
<input type="hidden" name="ac_success_url_method" value="GET">
<input type="hidden" name="ac_fail_url" value="https://merchant.example.com/payment-failed">
<input type="hidden" name="ac_fail_url_method" value="GET">
<input type="hidden" name="ac_status_url" value="https://merchant.example.com/payment-status">
<input type="hidden" name="ac_status_url_method" value="POST">
<input type="hidden" name="ac_client_lang" value="en">
<input type="hidden" name="ac_submerchant_url" value="https://seller.example.com">
<!-- Custom fields -->
<input type="hidden" name="customer_id" value="customer_12345">
<input type="hidden" name="invoice_id" value="INV-2026-001">
<input type="hidden" name="subscription_id" value="sub_98765">
<input type="hidden" name="merchant_internal_id" value="seller_456">
<button type="submit">Pay with Volet.com</button>
</form>
Payment success parameters
After a successful payment, Hosted Checkout redirects the customer to your Success URL and passes the payment details using the configured redirect method.
The table below describes all available parameters.
| Parameter | Format | Description | Examples |
|---|---|---|---|
ac_src_wallet | String | Customer wallet number used for the payment. | USDT123456789012 |
ac_dest_wallet | String | Merchant wallet number or settlement wallet. | USD123456789012 |
ac_amount | Decimal number | Amount of the payment request. | 100.00, 0.12500000 |
ac_merchant_amount | Decimal number | Amount credited to the merchant account. | 100.00 |
ac_merchant_currency | Currency code | Settlement currency. | USD, EUR, BTC, ETH, USDT, USDC, XRP, TRX, LTC, TON, SOL |
ac_fee | Decimal number | Processing fee charged for the payment. | 0.50 |
ac_buyer_amount_without_commission | Decimal number | Amount paid by the customer before customer-paid fees, if applicable. | 100.00 |
ac_buyer_amount_with_commission | Decimal number | Total amount paid by the customer, including customer-paid fees. | 100.50 |
ac_buyer_currency | Currency code | Currency used by the customer to complete the payment. | USD, EUR, BTC, ETH, USDT, USDC, XRP, TRX, LTC, TON, SOL, BNB, AVAX, POL |
ac_transfer | UUID | Unique Volet.com transaction identifier. | 235f9d0b-b48f-462c-9949-621c4930490c |
ac_sci_name | String | Hosted Checkout name. | My Store |
ac_start_date | YYYY-MM-DD HH:mm:ss (UTC) | Payment creation date and time. | 2026-06-23 12:30:00 |
ac_order_id | String | Merchant order identifier provided in the payment request. | 123456, baf419d9-6c82-4175-b870-5541b0ff3794 |
ac_ps | String (payment method ID) | Payment method used by the customer. | VOLET, USDT, USDC, BTC, ETH, TRX, SOL |
ac_transaction_status | Status | Final payment status. Possible values: PENDING, PROCESS, COMPLETED, CANCELED. | COMPLETED |
ac_buyer_email | String (Email address) | Customer email address, if available. | [email protected] |
ac_buyer_verified | Boolean | Indicates whether the customer account is verified. | true, false |
ac_comments | String | Comment provided in the payment request. | Order #123456 |
| Custom fields | String | Merchant-defined fields returned unchanged from the payment request. | customer_id, invoice_id, subscription_id |
Example
<form method="POST" action="https://merchant.example.com/payment-success">
<input type="hidden" name="ac_src_wallet" value="USDT210987654321">
<input type="hidden" name="ac_dest_wallet" value="USD123456789012">
<input type="hidden" name="ac_amount" value="100.00">
<input type="hidden" name="ac_merchant_amount" value="99.50">
<input type="hidden" name="ac_merchant_currency" value="USD">
<input type="hidden" name="ac_fee" value="0.50">
<input type="hidden" name="ac_buyer_amount_without_commission" value="100.00">
<input type="hidden" name="ac_buyer_amount_with_commission" value="100.00">
<input type="hidden" name="ac_buyer_currency" value="USDT">
<input type="hidden" name="ac_transfer" value="235f9d0b-b48f-462c-9949-621c4930490c">
<input type="hidden" name="ac_sci_name" value="My Store">
<input type="hidden" name="ac_start_date" value="2026-06-23 12:30:00">
<input type="hidden" name="ac_order_id" value="order_123456">
<input type="hidden" name="ac_ps" value="VOLET">
<input type="hidden" name="ac_transaction_status" value="COMPLETED">
<input type="hidden" name="ac_buyer_verified" value="true">
<input type="hidden" name="ac_comments" value="Order #123456">
<!-- Custom fields -->
<input type="hidden" name="customer_id" value="customer_12345">
<input type="hidden" name="invoice_id" value="INV-2026-001">
<input type="hidden" name="subscription_id" value="sub_98765">
</form>
Payment failed parameters
If a payment is canceled or fails, Hosted Checkout redirects the customer to your Failed URL and passes the payment details using the configured redirect method.
The table below describes all available parameters.
| Parameter | Format | Description | Examples |
|---|---|---|---|
ac_dest_wallet | String | Merchant account or settlement wallet. | USD123456789012 |
ac_amount | Decimal number | Amount of the payment request. | 100.00, 49.95 |
ac_currency | Currency code | Currency of the payment request. | USD, EUR, BTC, ETH, USDT, USDC, XRP, TRX, LTC, TON, SOL |
ac_sci_name | String | Hosted Checkout name. | My Store |
ac_order_id | String | Merchant order identifier provided in the payment request. | order_123456, baf419d9-6c82-4175-b870-5541b0ff3794 |
| Custom fields | String | Merchant-defined fields returned unchanged from the payment request. | customer_id, invoice_id, subscription_id |
Example
<form method="POST" action="https://merchant.example.com/payment-failed">
<input type="hidden" name="ac_dest_wallet" value="USD123456789012">
<input type="hidden" name="ac_amount" value="100.00">
<input type="hidden" name="ac_currency" value="USD">
<input type="hidden" name="ac_sci_name" value="My Store">
<input type="hidden" name="ac_order_id" value="order_123456">
<!-- Custom fields -->
<input type="hidden" name="customer_id" value="customer_12345">
<input type="hidden" name="invoice_id" value="INV-2026-001">
<input type="hidden" name="subscription_id" value="sub_98765">
</form>
Payment notification parameters
When the payment status changes, Hosted Checkout sends a notification to your Status URL using the configured request method (GET or POST).
The notification contains all payment success parameters plus an additional ac_hash signature.
| Parameter | Format | Description | Examples |
|---|---|---|---|
ac_hash | SHA-256 hash (hexadecimal string) | SHA-256 signature used to verify that the notification was sent by Volet.com and was not modified in transit. | 1cd6c127c5c49b6d5060cec4bdbf06608216c0c11cc76acebb546be0f7081afd |
For details on how to generate and verify the signature, see Verify notification signature.
Example notification
<form method="POST" action="https://merchant.example.com/status">
<input type="hidden" name="ac_src_wallet" value="USDT210987654321">
<input type="hidden" name="ac_dest_wallet" value="USD123456789012">
<input type="hidden" name="ac_amount" value="123.45">
<input type="hidden" name="ac_merchant_amount" value="123.55">
<input type="hidden" name="ac_merchant_currency" value="USD">
<input type="hidden" name="ac_fee" value="0.10">
<input type="hidden" name="ac_buyer_amount_without_commission" value="123.45">
<input type="hidden" name="ac_buyer_amount_with_commission" value="123.55">
<input type="hidden" name="ac_buyer_currency" value="USD">
<input type="hidden" name="ac_transfer" value="235f9d0b-b48f-462c-9949-621c4930490c">
<input type="hidden" name="ac_sci_name" value="My Shop">
<input type="hidden" name="ac_start_date" value="2026-06-23 12:30:00">
<input type="hidden" name="ac_order_id" value="123456">
<input type="hidden" name="ac_ps" value="VOLET">
<input type="hidden" name="ac_transaction_status" value="COMPLETED">
<input type="hidden" name="ac_buyer_verified" value="true">
<input type="hidden" name="ac_comments" value="Payment for order #123456">
<input type="hidden" name="ac_hash" value="1cd6c127c5c49b6d5060cec4bdbf06608216c0c11cc76acebb546be0f7081afd">
<!-- Custom fields -->
<input type="hidden" name="customer_id" value="98765">
<input type="hidden" name="invoice_id" value="INV-2026-001">
</form>