Install
openclaw skills install paytrigo-openclawbotUse when an OpenClawBot needs to create or verify PayTrigo payments on Base/USDC without webhooks.
openclaw skills install paytrigo-openclawbotThis 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.
recipientAddress required).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.
payUrl to the user (approval + payment)confirmed | expired | invalid | refundedImportant: Direct token transfer is invalid. Always use the Router
steps.payfrom/intent.
Endpoint: POST /v1/invoices
Headers:
Authorization: Bearer <platform_key> (required if calling HTTP directly)Content-Type: application/jsonIdempotency-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/jsonBody
{ "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 minutesexpiresAt + grace (status will not change after that)recipientAddress with platform key (invalid)