Integración de Hosted Checkout
Hosted Checkout es una página de pago lista para usar alojada por Volet.com.
Para ver la página que verán tus clientes, abre la página de Hosted Checkout para desarrolladores.
Tu aplicación crea una solicitud de pago y redirige al cliente a Hosted Checkout. El cliente completa el pago, Volet.com envía una notificación de estado a tu servidor y luego redirige al cliente de vuelta a tu sitio web.
Hosted Checkout admite:
Antes de integrar, crea y configura una pasarela Hosted Checkout en tu cuenta. Consulta Crear una pasarela de pago.
Flujo de pago
- El cliente hace un pedido en tu sitio web.
- Tu sitio genera una solicitud de pago y muestra un botón o enlace de pago.
- El cliente hace clic en Pagar y se lo redirige a Hosted Checkout.
- El cliente completa el pago.
- Volet.com envía una notificación de estado del pago a tu Status URL.
- Tu sistema actualiza el estado del pedido.
- Hosted Checkout muestra la página con el resultado del pago.
- Luego el cliente puede hacer clic en Continuar y se lo redirige a tu Success URL o Failed URL.
Merchant website
│
▼
Hosted Checkout
│
▼
Payment
│
▼
Status URL
│
▼
Merchant backend
│
▼
Customer redirect
Si el pago es exitoso, la página de resultado incluye el ID de la transacción y la información del pago. Si el pago falla o se cancela, muestra el mensaje de error o de cancelación correspondiente.
La Success URL y la Failed URL se pueden configurar en los ajustes de Hosted Checkout o enviar de forma dinámica en la solicitud de pago.
Para actualizar el estado de los pedidos, básate siempre en las notificaciones a la Status URL. No dependas solo de las redirecciones del navegador.
La Success URL y la Failed URL no deben usarse para determinar el estado final del pago.
Inicio rápido con Hosted Checkout
Paso 1. Crear la solicitud de pago
Endpoint de Hosted Checkout
https://account.volet.com/api/public/payment-gateway
Parámetros obligatorios
Para crear un pago, envía por POST un formulario HTML al endpoint anterior. La solicitud de pago debe incluir estos parámetros obligatorios:
| Parámetro | Descripción |
|---|---|
ac_account_email | Email de tu cuenta de Volet.com |
ac_sci_name | Nombre del Hosted Checkout |
ac_amount | Monto del pago |
ac_currency | Moneda del pago (por ejemplo, USD, EUR) |
ac_order_id | Identificador único de tu pedido |
ac_sign | Firma digital |
Para ver la lista completa de parámetros admitidos, consulta Parámetros de la solicitud de pago.
Cada solicitud de pago debe usar un ac_order_id único.
No reutilices identificadores de pedido para pagos distintos.
Firma de la solicitud
Genera el parámetro ac_sign calculando el hash SHA-256 de la siguiente cadena:
ac_account_email:ac_sci_name:ac_amount:ac_currency:secret:ac_order_id
donde secret es la contraseña que definiste al crear el Hosted Checkout.
Cadena de ejemplo:
[email protected]:Store:100.00:USD:password:123
Hash SHA-256:
eb9e7f491df701fe7d71c74551ae9e4226dfbed7e3a9cc4916e242d3c09f718e
Envía el hash obtenido en el parámetro ac_sign.
Enviar la solicitud de pago
Envía el formulario HTML al endpoint de Hosted Checkout con el método POST.
Ejemplo de solicitud de pago
<form method="POST" action="https://account.volet.com/api/public/payment-gateway">
<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>
Paso 2. Gestionar las notificaciones de pago
Cuando cambia el estado del pago, Volet.com envía una notificación a tu Status URL.
La notificación se envía por GET o POST, según la configuración de tu Hosted Checkout.
La notificación contiene los siguientes parámetros:
| Parámetro | Descripción |
|---|---|
ac_transfer | ID de la transacción en Volet.com |
ac_transaction_status | Estado del pago |
ac_order_id | Identificador de tu pedido |
ac_amount | Monto original del pago |
ac_merchant_amount | Monto acreditado en tu cuenta |
ac_merchant_currency | Moneda de liquidación |
ac_start_date | Fecha y hora de la transacción |
ac_sci_name | Nombre del Hosted Checkout |
ac_src_wallet | Billetera del cliente |
ac_dest_wallet | Billetera del comercio |
ac_buyer_email | Email del cliente (si está disponible) |
ac_hash | Hash de la firma de la notificación |
Para ver la lista completa de parámetros disponibles, consulta Parámetros de la notificación de pago.
Antes de actualizar el estado del pedido, verifica la firma ac_hash para confirmar que la notificación proviene de Volet.com.
No marques los pedidos como pagados en función de las redirecciones del cliente.
Espera siempre una notificación válida a la Status URL y verifica la firma ac_hash antes de actualizar el estado del pedido.
Ejemplo de notificación enviada a tu 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>
Verificar la firma de la notificación
Para verificar la notificación, calcula el hash SHA-256 con los valores siguientes y compáralo con el ac_hash recibido.
La cadena de la firma se arma en este orden:
ac_transfer:ac_start_date:ac_sci_name:ac_src_wallet:ac_dest_wallet:ac_order_id:ac_amount:ac_merchant_currency:password
donde password es la contraseña de Hosted Checkout configurada para la pasarela.
Cadena de ejemplo:
235f9d0b-b48f-462c-9949-621c4930490c:2026-06-23 12:30:00:Store:USD123456789012:USD210987654321:123:100.00:USD:password
Calcula el hash SHA-256 de esta cadena:
4ceab247ca917e0142b1a99015beaed9310cd6a85ab3bacf08ba44d5ac03590b
Compara el hash calculado con el ac_hash recibido. Los valores deben coincidir antes de actualizar el estado del pedido.
Una vez verificada la firma, actualiza el pedido correspondiente en tu sistema con el estado de pago recibido.
Paso 3. Probar la integración
Antes de aceptar pagos reales, verifica:
- La redirección del cliente a Hosted Checkout.
- La finalización de un pago exitoso.
- La entrega de las notificaciones a la Status URL.
- La validación de la firma de las notificaciones.
- La actualización del estado de los pedidos.
- Las redirecciones a Success URL y Failed URL.
- La gestión de los pagos fallidos.
Direcciones IP del servidor de notificaciones
Si tu infraestructura usa listas de IP permitidas o reglas de firewall, permite las solicitudes entrantes de los siguientes servidores de notificaciones de Volet.com:
- 13.61.247.159
Configuración avanzada
Las secciones siguientes describen funciones opcionales y escenarios de integración avanzados.
Preseleccionar el método de pago
De forma predeterminada, Hosted Checkout muestra una p ágina para elegir el método de pago.
Puedes preseleccionar un método de pago en la solicitud con el parámetro ac_ps. Si lo indicas, Hosted Checkout abre directamente la pantalla de pago correspondiente y omite el paso de elección del método.
Agrega los siguientes campos a los parámetros de tu solicitud de pago:
- Abre directamente la página de inicio de sesión de la cuenta de Volet.com:
<input type="hidden" name="ac_ps" value="VOLET">
- Abre directamente la página de pago con USDT en Tron:
<input type="hidden" name="ac_ps" value="USDTETHER">
<input type="hidden" name="ac_ps_protocol" value="TRON">
- Abre directamente la página de pago con Bitcoin:
<input type="hidden" name="ac_ps" value="BITCOIN">
Es útil cuando el cliente ya eligió un método de pago en tu sitio antes de ser redirigido a Hosted Checkout.
Idioma
Usa el parámetro ac_client_lang para indicar el idioma de la interfaz de Hosted Checkout.
Ejemplo:
<input type="hidden" name="ac_client_lang" value="en">
Si no se indica el idioma, Hosted Checkout usa el idioma predeterminado disponible para el cliente.
Campos personalizados
Puedes incluir hasta 10 campos personalizados en una solicitud de pago.
Volet.com no procesa estos campos y los devuelve sin cambios en las notificaciones a la Status URL y en las redirecciones del cliente.
Usos habituales:
- ID del cliente
- ID de la suscripción
- Número de factura interno
- Comentario
Ejemplo:
<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">
Subcomercios
Usa el parámetro ac_submerchant_url para indicar el sitio web del comercio en cuyo nombre se procesa el pago.
Ejemplo:
<input type="hidden" name="ac_submerchant_url" value="https://merchant.example.com">
Esta opción está pensada para agregadores de pagos, marketplaces y plataformas que procesan pagos para otros comercios.
Todos los requisitos de cumplimiento, actividades prohibidas y verificación que se aplican a los comercios también se aplican a los subcomercios.
Reemplazar las URL
Los siguientes parámetros se pueden indicar directamente en la solicitud de pago:
ac_success_urlac_success_url_methodac_fail_urlac_fail_url_methodac_status_urlac_status_url_method
Ejemplo:
<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">
Los valores enviados en la solicitud reemplazan las URL predeterminadas configuradas para la pasarela Hosted Checkout.
Es útil cuando varios sitios web, tiendas, aplicaciones, bots o agentes de IA usan la misma pasarela Hosted Checkout.
También te permite generar URL de éxito, de fallo y de callback distintas para cada pedido sin crear varias pasarelas Hosted Checkout.
Desactivar las firmas
El parámetro ac_sign es opcional si las firmas digitales están desactivadas en la configuración de Hosted Checkout.
Aun así, recomendamos encarecidamente usar firmas en producción para verificar la autenticidad de las solicitudes y evitar la manipulación de datos.
Las solicitudes sin firma solo deben usarse para pruebas y desarrollo.
Referencia de Hosted Checkout
Parámetros de la solicitud de pago
La solicitud de pago es un formulario HTML que tu aplicación envía a Hosted Checkout.
Contiene los datos del pago, la información del comercio, las URL de redirección y los parámetros de configuración opcionales necesarios para procesar un pago.
La siguiente tabla enumera todos los parámetros admitidos de la solicitud de pago.
| Parámetro | Obligatorio | Formato | Descripción | Ejemplos |
|---|---|---|---|---|
ac_account_email | Sí | Cadena | Email de tu cuenta de Volet.com. | [email protected] |
ac_sci_name | Sí | Cadena (máx. 50 caracteres) | Nombre del Hosted Checkout. | My Store |
ac_amount | Sí | Número decimal | Monto de la solicitud de pago. La precisión decimal depende de la moneda elegida. Los decimales sobrantes se truncan automáticamente. | 100.00, 49.0302, 0.12345678 |
ac_currency | Sí | Código de moneda | Moneda de la solicitud de pago. | USD, EUR, BTC, ETH, USDT, USDC, XRP, TRX, LTC, TON, SOL |
ac_order_id | Sí | Cadena (máx. 64 caracteres; "A-z", "-", "_", "0-9") | Identificador único del pedido del comercio. | 123456, baf419d9-6c82-4175-b870-5541b0ff3794 |
ac_sign | Condicional | Cadena hexadecimal (SHA-256) | Firma de la solicitud, usada para verificar la integridad de la solicitud de pago. Obligatoria si la verificación de la firma de solicitudes está activada en el Hosted Checkout. | 36b4c9ad29b61d1c5996e3ef1a3af0c3194e19713613b6bf26a9b905b8019225 |
ac_ps | No | Cadena (ID del método de pago) | Método de pago preseleccionado al abrir Hosted Checkout. | VOLET, USDTETHER, USD_COIN, BITCOIN, ETHEREUM, RIPPLE, TRON, LITECOIN, TON, SOL, BNB, MATIC (para POLYGON), AVAX |
ac_ps_protocol | Condicional | Cadena (ID de blockchain o protocolo) | Red blockchain preseleccionada. Obligatoria cuando ac_ps es USDTETHER, USD_COIN o BNB; en los demás casos es opcional. | ETHEREUM, TRON, BINANCE_SMART_CHAIN, MATIC (para POLYGON), SOLANA, AVALANCHE, OPTIMISM, ARBITRUM, TON |
ac_comments | No | Cadena (máx. 255 caracteres) | Descripción adicional del pago que se muestra al cliente y no se puede modificar. | Payment for Order #1234 |
ac_success_url | No | Cadena (máx. 100 caracteres) | Reemplaza la Success URL configurada. | https://merchant.example.com/success |
ac_success_url_method | No | GET, POST | Método HTTP de la redirección a la Success URL. Reemplaza la configuración del Hosted Checkout. | GET |
ac_fail_url | No | Cadena (máx. 100 caracteres) | Reemplaza la Failed URL configurada. | https://merchant.example.com/failed |
ac_fail_url_method | No | GET, POST | Método HTTP de la redirección a la Failed URL. Reemplaza la configuración del Hosted Checkout. | POST |
ac_status_url | No | Cadena (máx. 100 caracteres) | Reemplaza la Status URL configurada. | https://merchant.example.com/status |
ac_status_url_method | No | GET, POST | Método HTTP de las notificaciones a la Status URL. Reemplaza la configuración del Hosted Checkout. | POST |
ac_client_lang | No | Cadena (código de idioma) | Idioma de la página de Hosted Checkout. | en |
ac_submerchant_url | No | Cadena (máx. 100 caracteres) | URL del sitio web del subcomercio. Se usa en integraciones de plataformas y es obligatoria para determinadas categorías de comercios. | https://seller.example.com |
Campos personalizados (por ejemplo, buyer_email, client_email) | No | Hasta 10 valores de cadena (máx. 100 caracteres cada uno) | Campos adicionales definidos por el comercio que se devuelven sin cambios en las notificaciones a la Status URL y en las redirecciones del cliente. Úsalos para vincular los pagos con tus propios pedidos, clientes, facturas u otros registros internos. | [email protected], #INV-12345, user_1001 |
Ejemplo
<form method="POST" action="https://account.volet.com/api/public/payment-gateway">
<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="USDTETHER">
<input type="hidden" name="ac_ps_protocol" value="ETHEREUM">
<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>
Parámetros de pago exitoso
Tras un pago exitoso, Hosted Checkout redirige al cliente a tu Success URL y envía los datos del pago con el método de redirección configurado.
La siguiente tabla describe todos los parámetros disponibles.
| Parámetro | Formato | Descripción | Ejemplos |
|---|---|---|---|
ac_src_wallet | Cadena | Número de billetera del cliente usada para el pago. | USDT123456789012 |
ac_dest_wallet | Cadena | Número de billetera del comercio o billetera de liquidación. | USD123456789012 |
ac_amount | Número decimal | Monto de la solicitud de pago. | 100.00, 0.12500000 |
ac_merchant_amount | Número decimal | Monto acreditado en la cuenta del comercio. | 100.00 |
ac_merchant_currency | Código de moneda | Moneda de liquidación. | USD, EUR, BTC, ETH, USDT, USDC, XRP, TRX, LTC, TON, SOL |
ac_fee | Número decimal | Comisión de procesamiento cobrada por el pago. | 0.50 |
ac_buyer_amount_without_commission | Número decimal | Monto pagado por el cliente sin las comisiones a su cargo, si corresponde. | 100.00 |
ac_buyer_amount_with_commission | Número decimal | Monto total pagado por el cliente, incluidas las comisiones a su cargo. | 100.50 |
ac_buyer_currency | Código de moneda | Moneda usada por el cliente para completar el pago. | USD, EUR, BTC, ETH, USDT, USDC, XRP, TRX, LTC, TON, SOL, BNB, AVAX, POL |
ac_transfer | UUID | Identificador único de la transacción en Volet.com. | 235f9d0b-b48f-462c-9949-621c4930490c |
ac_sci_name | Cadena | Nombre del Hosted Checkout. | My Store |
ac_start_date | YYYY-MM-DD HH:mm:ss (UTC) | Fecha y hora de creación del pago. | 2026-06-23 12:30:00 |
ac_order_id | Cadena | Identificador del pedido del comercio indicado en la solicitud de pago. | 123456, baf419d9-6c82-4175-b870-5541b0ff3794 |
ac_ps | Cadena (ID del método de pago) | Método de pago usado por el cliente. | VOLET, USDT, USDC, BTC, ETH, TRX, SOL |
ac_transaction_status | Estado | Estado final del pago. Valores posibles: PENDING, PROCESS, COMPLETED, CANCELED. | COMPLETED |
ac_buyer_email | Cadena (dirección de email) | Email del cliente, si está disponible. | [email protected] |
ac_buyer_verified | Booleano | Indica si la cuenta del cliente está verificada. | true, false |
ac_comments | Cadena | Comentario indicado en la solicitud de pago. | Order #123456 |
| Campos personalizados | Cadena | Campos definidos por el comercio que se devuelven sin cambios desde la solicitud de pago. | customer_id, invoice_id, subscription_id |
Ejemplo
<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>
Parámetros de pago fallido
Si un pago se cancela o falla, Hosted Checkout redirige al cliente a tu Failed URL y envía los datos del pago con el método de redirección configurado.
La siguiente tabla describe todos los parámetros disponibles.
| Parámetro | Formato | Descripción | Ejemplos |
|---|---|---|---|
ac_dest_wallet | Cadena | Cuenta del comercio o billetera de liquidación. | USD123456789012 |
ac_amount | Número decimal | Monto de la solicitud de pago. | 100.00, 49.95 |
ac_currency | Código de moneda | Moneda de la solicitud de pago. | USD, EUR, BTC, ETH, USDT, USDC, XRP, TRX, LTC, TON, SOL |
ac_sci_name | Cadena | Nombre del Hosted Checkout. | My Store |
ac_order_id | Cadena | Identificador del pedido del comercio indicado en la solicitud de pago. | order_123456, baf419d9-6c82-4175-b870-5541b0ff3794 |
| Campos personalizados | Cadena | Campos definidos por el comercio que se devuelven sin cambios desde la solicitud de pago. | customer_id, invoice_id, subscription_id |
Ejemplo
<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>
Parámetros de la notificación de pago
Cuando cambia el estado del pago, Hosted Checkout envía una notificación a tu Status URL con el método configurado (GET o POST).
La notificación contiene todos los parámetros de pago exitoso más una firma ac_hash adicional.
| Parámetro | Formato | Descripción | Ejemplos |
|---|---|---|---|
ac_hash | Hash SHA-256 (cadena hexadecimal) | Firma SHA-256 que permite verificar que la notificación la envió Volet.com y no se modificó en tránsito. | 1cd6c127c5c49b6d5060cec4bdbf06608216c0c11cc76acebb546be0f7081afd |
Para saber cómo generar y verificar la firma, consulta Verificar la firma de la notificación.
Ejemplo de notificación
<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>