PayTrigo (OpenClawBot, Base/USDC)
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.
Assumptions
- Platform key is used (
recipientAddressrequired). - Base/USDC is the only enabled chain/token for this key (from Platform Fee Configs).
- Bots can store
invoiceIdandcheckoutTokenreturned from invoice creation.
No environment variables required
The helper script ships with an embedded key, so OpenClawBots can use it immediately.
Install
Requires Node.js 18+.
npm install
Local wallet memory (recommended)
OpenClawBots can store a recipient address and an encrypted payer wallet locally (no external services needed).
1) Create a local wallet store
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.
If you already have a wallet
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
2) Run flows using the stored data
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
3) Optional: set a separate recipient address
node {baseDir}/scripts/moltbot-wallet-setup.mjs recipient --address 0xYourWallet
Quickstart (CLI scripts)
Use the scenario scripts to test end-to-end flows without additional setup.
Human-in-the-loop (user pays in browser)
node {baseDir}/scripts/moltbot-human-flow.mjs human --amount 0.001 --recipient 0xYourWallet...
Bot pays directly (requires private key)
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.
Core flow (Human-in-the-loop)
- Create invoice (platform key, Base/USDC, recipientAddress required)
- Send
payUrlto the user (approval + payment) - Poll invoice status until
confirmed | expired | invalid | refunded
Core flow (Bot pays directly)
- 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.payfrom/intent.
API Usage (HTTP)
1) Create invoice
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.
2) Get intent (bot-pay)
Endpoint: GET /v1/invoices/{invoiceId}/intent?chain=base&token=usdc
Headers (preferred):
X-Checkout-Token: <checkoutToken>
Response includes steps.approve, steps.pay, routerAddress, grossAmountAtomic.
3) Submit payment intent (txHash)
Endpoint: POST /v1/invoices/{invoiceId}/payment-intents
Headers:
X-Checkout-Token: <checkoutToken>Content-Type: application/json
Body
{ "txHash": "0x...", "payerAddress": "0x..." }
4) Poll invoice status
Endpoint: GET /v1/invoices/{invoiceId}
Headers:
X-Checkout-Token: <checkoutToken>
Stop when: status is confirmed | expired | invalid | refunded.
Polling policy (safe default)
submittedright 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
Common mistakes
- Missing
recipientAddresswith platform key (invalid) - Direct token transfer instead of Router pay
- Losing checkoutToken (it is only returned on invoice creation)