Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Use when an OpenClawBot needs to create or verify PayTrigo payments on Base/USDC without webhooks.
Use when an OpenClawBot needs to create or verify PayTrigo payments on Base/USDC without webhooks.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
This skill provides a minimal, bot-friendly payment flow on PayTrigo using a platform API key and Base/USDC only. It is optimized for OpenClawBots that do not run webhooks and instead poll for status. A platform key is embedded in the helper script for no-setup usage.
Platform key is used (recipientAddress required). Base/USDC is the only enabled chain/token for this key (from Platform Fee Configs). Bots can store invoiceId and checkoutToken returned from invoice creation.
The helper script ships with an embedded key, so OpenClawBots can use it immediately.
Requires Node.js 18+. npm install
OpenClawBots can store a recipient address and an encrypted payer wallet locally (no external services needed).
node {baseDir}/scripts/moltbot-wallet-setup.mjs create --passphrase-file ./passphrase.txt --set-recipient-from-wallet This creates .openclawbot/wallet.json, .openclawbot/wallet-address.txt, and .openclawbot/recipient.txt.
You do not need to create a new one. node {baseDir}/scripts/moltbot-wallet-setup.mjs recipient --address 0xYourWallet node {baseDir}/scripts/moltbot-wallet-setup.mjs import --pk-file ./payer.pk --passphrase-file ./passphrase.txt --set-recipient-from-wallet
node {baseDir}/scripts/moltbot-human-flow.mjs human --amount 0.001 node {baseDir}/scripts/moltbot-bot-flow.mjs bot --amount 0.001 --passphrase-file ./passphrase.txt
node {baseDir}/scripts/moltbot-wallet-setup.mjs recipient --address 0xYourWallet
Use the scenario scripts to test end-to-end flows without additional setup.
node {baseDir}/scripts/moltbot-human-flow.mjs human --amount 0.001 --recipient 0xYourWallet...
node {baseDir}/scripts/moltbot-bot-flow.mjs bot --amount 0.001 --recipient 0xYourWallet... --pk 0xPRIVATE_KEY See README.md in this folder for a short OpenClawBot-focused guide.
Create invoice (platform key, Base/USDC, recipientAddress required) Send payUrl to the user (approval + payment) Poll invoice status until confirmed | expired | invalid | refunded
Create invoice Get intent (approve/pay calldata) Send on-chain tx (approve if needed, then pay) Submit txHash Poll status Important: Direct token transfer is invalid. Always use the Router steps.pay from /intent.
Endpoint: POST /v1/invoices Headers: Authorization: Bearer <platform_key> (required if calling HTTP directly) Content-Type: application/json Idempotency-Key: pay_attempt_<uuid> Body (Base/USDC fixed, recipientAddress required) { "amount": "49.99", "recipientAddress": "0xYourWallet...", "ttlSeconds": 900, "metadata": { "botId": "openclawbot_123", "purpose": "checkout" } } Response includes invoiceId, payUrl, checkoutToken, expiresAt.
Endpoint: GET /v1/invoices/{invoiceId}/intent?chain=base&token=usdc Headers (preferred): X-Checkout-Token: <checkoutToken> Response includes steps.approve, steps.pay, routerAddress, grossAmountAtomic.
Endpoint: POST /v1/invoices/{invoiceId}/payment-intents Headers: X-Checkout-Token: <checkoutToken> Content-Type: application/json Body { "txHash": "0x...", "payerAddress": "0x..." }
Endpoint: GET /v1/invoices/{invoiceId} Headers: X-Checkout-Token: <checkoutToken> Stop when: status is confirmed | expired | invalid | refunded.
submitted right after tx: poll every 3-5s for 2 minutes After 2 minutes: poll every 10-15s Stop at expiresAt + grace (status will not change after that) If you receive 429, backoff and retry later
Missing recipientAddress with platform key (invalid) Direct token transfer instead of Router pay Losing checkoutToken (it is only returned on invoice creation)
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.