Para agentes y desarrolladores

ROZO Checkout para agentes de IA

ROZO Checkout permite que un agente de IA pague una factura de OpenRouter — un enlace de pago de Coinbase — con BTC por Lightning, o con USDT/USDC en Solana, BNB Chain, Ethereum, Polygon, Base y Stellar, en lugar del USDC en Base que espera el enlace. Todos los endpoints de abajo son HTTP público: sin clave de API, sin cuenta, sin navegador y sin ventana emergente de conexión de wallet, así que el pago completo cabe dentro de un script o de una llamada a herramienta.

Vídeo completo: un agente de IA paga una factura de OpenRouter con USDC en Stellar a través de ROZO Checkout.

El único comando

Si tu agente puede ejecutar un comando de shell, esta es toda la integración. Cotiza el enlace, crea la orden, te muestra lo que se va a enviar y cuánto tiempo sigue siendo válida, y espera hasta que la factura quede liquidada.

ShellDisponible ahora
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx

Esa URL es tu enlace de pago de OpenRouter, copiado del flujo Buy Credits → Crypto de OpenRouter. La terminación xxx solo está para marcarlo como ejemplo: el tuyo acabará en caracteres reales.

En una terminal te pregunta con qué moneda quieres pagar. Puedes pegar la dirección de tu wallet en el prompt y marcará qué monedas puedes permitirte realmente — una ayuda visual que nunca cambia lo que se firma — y recordará esa dirección y tu moneda para la próxima vez. Después imprime una dirección de depósito que pagas desde cualquier wallet: sin clave privada, sin variable de entorno, sin configuración.

¿Ya sabes qué moneda vas a usar, o estás escribiendo un script? Indícala y sáltate la pregunta. Los agentes y los scripts siempre deben pasar --with: el selector solo aparece en una terminal y deliberadamente no hay moneda por defecto.

Shell
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana

--with acepta usdt-solana, usdc-solana, usdt-bnb, usdc-bnb, usdt-ethereum, usdc-ethereum, usdt-polygon, usdc-polygon, usdc-base, usdc-stellar y btc-lightning — consulta las cadenas admitidas. Añade --yes cuando stdin no sea una TTY, y --json para obtener exactamente un objeto JSON en stdout. Todo lo que sigue es este mismo pago expresado en la herramienta que ya usas.

Elige tu herramienta

Abre la que uses. En la mayoría de las herramientas el contenido es idéntico: el comando npx de arriba, o apuntar al agente a /llms.txt. En todas ellas pagas desde tu propia wallet y no interviene ninguna clave; solo la opción --send firma localmente.

Claude Codeinstala la skill o pega el comando

El repositorio es una skill de Claude Code: incluye SKILL.md y los ejecutables en scripts/dist/. Clónalo en tu directorio de skills para que Claude Code lo detecte automáticamente.

Shell
git clone https://github.com/RozoAI/rozo-checkout-skill ~/.claude/skills/rozo-checkout

O sáltate la configuración por completo y pega esto en cualquier sesión:

Prompt
Pay this OpenRouter link with USDT on Solana using:
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
Codex CLIAGENTS.md, o ejecútalo directamente

Codex lee AGENTS.md desde la raíz del proyecto. Añade una instrucción permanente para que sepa cómo pagar sin que se lo indiques cada vez:

AGENTS.md
## Paying OpenRouter invoices
To pay a payments.coinbase.com link, run:
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
Full reference: https://checkout.rozo.ai/llms.txt

O simplemente ejecuta tú mismo el comando en la sesión: no necesita configuración alguna.

OpenCodeAGENTS.md, o ejecútalo directamente

OpenCode también lee AGENTS.md desde la raíz del proyecto, así que el fragmento de Codex sirve sin cambios. El camino más corto sigue siendo el propio comando:

Shell
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
Cline.clinerules, o ejecútalo directamente

Cline lee las instrucciones permanentes desde .clinerules en la raíz del proyecto. Añade ahí la misma regla:

.clinerules
To pay an OpenRouter / Coinbase payment link, run:
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
Full reference: https://checkout.rozo.ai/llms.txt

Cline pedirá confirmación antes de ejecutar el comando, que es justo el comportamiento que quieres para un pago.

Cursor.cursor/rules, o ejecútalo directamente

Añade una regla de proyecto en .cursor/rules/ para que el agente conozca el comando:

.cursor/rules/rozo-checkout.mdc
To pay an OpenRouter / Coinbase payment link, run:
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
Full reference: https://checkout.rozo.ai/llms.txt

O ejecuta el comando en la terminal de Cursor: no hace falta ninguna regla.

Hermes Agentejecuta el comando en una sesión

Hermes Agent (Nous Research) tiene acceso a shell y su propio sistema de skills. Arráncalo con hermes y pídele que ejecute el comando:

Prompt
Fetch https://checkout.rozo.ai/llms.txt, then pay this OpenRouter link:
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
OpenClawopenclaw agent exec

El punto de entrada headless de OpenClaw ejecuta una tarea puntual, lo que encaja bien con un pago que disparas desde un script o un canal de chat:

Shell
openclaw agent exec "Pay this OpenRouter link with USDT on Solana by running: npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana"
Piejecuta el comando en una sesión

Pi es un agente de terminal BYOK cuyas herramientas integradas incluyen bash, así que puede ejecutar el comando directamente. Arráncalo con pi y pídele:

Prompt
Pay this OpenRouter link with USDT on Solana by running:
npx @rozoai/checkout pay https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx --with usdt-solana
Terminal — sin ningún agenteejecuta los scripts paso a paso

Si quieres controlar cada paso, clona el repositorio y ejecuta los scripts. Son bundles autocontenidos: no hay nada que instalar aparte de Node 18+.

Shell
git clone https://github.com/RozoAI/rozo-checkout-skill
cd rozo-checkout-skill
LINK="https://payments.coinbase.com/payment-links/pl_01YOURLINKID"

# 1. Quote — read-only, costs nothing
node scripts/dist/quote.js --url "$LINK"

# 2. Create the order. No money moves; the full deposit address is
#    WITHHELD and you get a masked summary to review first.
node scripts/dist/create-order.js --url "$LINK" --chain 900 --token USDT

# 3. Only once you have decided to pay, re-run with --confirm to
#    release the full deposit block.
node scripts/dist/create-order.js --url "$LINK" --chain 900 --token USDT --confirm

# 4. Pay the deposit block from any wallet — no key, no configuration.
#    Send exactly the amount, token, chain and every other field it gives
#    you, copied from the JSON and never retyped.

# 5. Watch it settle
node scripts/dist/status.js --rozo-payment-id <rozoPaymentId> --watch --timeout 600

Cada script imprime exactamente un objeto JSON en stdout; código de salida 0 éxito, 1 rechazado o fallido (lee error.code), 2 uso incorrecto, 3 enviado pero sin confirmar.

Pagar desde tu propia wallet es la vía por defecto y no necesita ninguna clave. Si prefieres que sea esta máquina la que firme — solo cadenas EVM y Solana — usa send-evm.js o send-sol.js. En Solana usan el ~/.config/solana/id.json que solana-keygen ya escribió; en EVM un keystore V3 cifrado cuya contraseña se pide por pantalla y nunca se pasa como flag. Una clave en bruto en el entorno sigue sirviendo para ejecuciones desatendidas. Esa vía tiene un único límite: un solo pago no puede superar los 1.100 USD, sin posibilidad de anularlo. Las facturas mayores se pagan por la vía sin clave de arriba.

Los estados van awaiting_depositpayin_detectedpayin_confirmedbridgingpaying_coinbasesettled. Que tu transacción se confirme en la cadena no es el final: sigue consultando hasta settled.

Cualquier otro agenteapúntalo a /llms.txt

Cualquier agente capaz de descargar una URL y ejecutar un comando puede hacerlo. Una línea, sin configuración:

Prompt
Fetch https://checkout.rozo.ai/llms.txt into your context, then use it
to pay this OpenRouter link: https://payments.coinbase.com/payment-sessions/paymentSession_3230343499xxx

Si el agente no tiene shell pero sí puede hacer peticiones HTTP, usa directamente las cuatro llamadas en crudo de abajo.

HTTP en crudo, para cualquier framework

Cuatro llamadas, todas públicas y sin claves. Es la capa sobre la que se apoyan la CLI y la skill, así que cualquier framework — LangChain, una llamada a herramienta de OpenAI, un cron — puede usarla directamente.

ShellDisponible ahora
MPP="https://apiserver.mpprouter.dev/v1/services/rozo-agent-api"
INTENTS="https://intentapiv4.rozo.ai/functions/v1/payment-api"
LINK="https://payments.coinbase.com/payment-links/pl_01YOURLINKID"

# 1. Quote: merchant, amount, expiry, and a ~60-second quoteReceipt.
#    callerPays always equals the invoice amount; discount is always "0".
curl -s -X POST "$MPP/quote-invoice" \
  -H 'content-type: application/json' \
  -d "{\"url\":\"$LINK\"}"

# 2. Create a bridge order for, say, USDT on Solana.
#    Creates an order but moves no money; an unfunded order simply expires.
curl -s -X POST "$MPP/create-invoice" \
  -H 'content-type: application/json' \
  -d "{\"url\":\"$LINK\",\"source\":{\"chainId\":\"900\",\"tokenSymbol\":\"USDT\"}}"

# 3. Authoritative deposit instructions, using the rozoPaymentId above.
#    Pay EXACTLY source.amount of the requested token on the requested chain
#    to source.receiverAddress, including source.receiverMemo when present.
#    For Lightning, pay the BOLT11 in source.lnInvoice.
curl -s "$INTENTS/payments/<rozoPaymentId>"

# 4. Fulfilment status, using the Coinbase linkId.
curl -s "$MPP/invoice-status?payment_id=pl_01YOURLINKID"

create-invoice tiene límite de frecuencia por IP (unas 30/hora); los endpoints de lectura no. El enlace de Coinbase solo está liquidado cuando el router informa paid / coinbase.settled: un estado de intents payment_completed por sí solo es el ciclo de vida del puente, no la liquidación final.

Errores que conviene contemplar: 409 enlace ya usado · 410 enlace caducado · UNSUPPORTED_SOURCE (el objeto supported de la respuesta lista los pares cadena/token válidos; Lightning está admitido pero no aparece en esa lista) · RATE_LIMITED límite de creación por IP, reinténtalo más tarde.

Versión legible por máquinas. El mismo flujo, los endpoints y las reglas de seguridad se publican en texto plano en checkout.rozo.ai/llms.txt: apunta ahí a tu agente en lugar de a esta página.

Qué necesitas

Una wallet con uno de los tokens admitidos, en una de estas cadenas. Las monedas nativas de gas no se aceptan: SOL, ETH, BNB y MATIC no liquidan, ni tampoco BTC on-chain.

CadenaChain idTokensNota
Ethereum1USDC, USDT6 decimales
BNB Chain56USDC, USDT18 decimales — la causa habitual de errores de 1012
Polygon137USDC, USDT6 decimales
Base8453USDC6 decimales
Solana900USDC, USDT6 decimales; SPL. El SOL nativo no está admitido
Stellar1500USDC7 decimales; el depósito requiere memo, y su tipo es MEMO_TEXT — incluso cuando el memo son todo dígitos. Elegir MEMO_ID en tu wallet produce un memo distinto y el pago no se corresponde
Bitcoin LightninglightningBTClos importes son satoshis enteros, pagados mediante una factura BOLT11
  1. Node 18 o superior para las vías de CLI y skill (node -v). La vía de HTTP en crudo no necesita más que un cliente HTTP.
  2. El enlace de Coinbase, p. ej. https://payments.coinbase.com/payment-links/pl_01YOURLINKID.
  3. Sin cuenta y sin clave de API. Todos los endpoints de esta página son públicos.
  4. La vía por defecto no necesita ninguna clave. Pagar a la dirección de depósito desde tu propia wallet no requiere clave privada, ni variable de entorno, ni configuración alguna. Solo la opción --send firma localmente, y toma su clave de ~/.config/solana/id.json en Solana o de un keystore cifrado (con la contraseña pedida por pantalla) en EVM; una clave en bruto en el entorno sigue sirviendo para automatización desatendida, y una clave jamás se acepta en la línea de comandos. Esa vía de firma limita cada pago a 1.100 USD; por encima de eso se paga por la vía sin clave.

¿Qué wallet necesito?

Una wallet, en una cadena: no hace falta una por cada cadena. Elige de la tabla de arriba la moneda que ya tengas y paga desde donde ya esté.

Seguridad, con franqueza

Pagar el importe equivocado, el token equivocado, la red equivocada, o pagar dos veces suele ser irrecuperable. Estas son las barreras que más importan; impleméntalas aunque escribas tu propio cliente.

La lista completa — confirmación en dos fases, la regla de dinero detectado, la lista negra de direcciones comprometidas, el bloqueo de envío único entre procesos, los límites de la hot wallet y el enmascarado de direcciones — está documentada en Safety design, en el repositorio de GitHub.

Paga tu primera factura

Un comando, sin cuenta y sin clave de API. SKILL.md está escrito para el agente y QUICKSTART.md para quien hace la integración.

Abrir rozo-checkout-skill Leer /llms.txt