Install
openclaw skills install @plagtech/crypto-payrollRun payroll in USDC on Base — pay your whole roster of employees and contractors in one transaction via the Spraay gateway. Free roster validation, cost estimates, x402 execution, duplicate-payment protection. Pairs with payroll audit skills: they check, this one pays.
openclaw skills install @plagtech/crypto-payrollExecute a whole payroll roster — employees and contractors — as one on-chain transaction in USDC on Base, through Spraay's payroll and batch payment infrastructure. Where most payroll skills audit, reconcile, or calculate, this one executes the pay run.
Stablecoin payroll settles in seconds, works in any country with a wallet, and costs cents in gas regardless of headcount.
| Gateway base URL | https://gateway.spraay.app |
| Chain | Base (chain ID 8453) — Spraay also supports Ethereum, Solana, and 13 more |
| Token | USDC on Base: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (check /api/v1/payroll/tokens for the full supported list) |
| Batch contract (Base) | 0x1646452F98E36A3c9Cfc3eDD8868221E207B5eEC (verified on BaseScan — never substitute another address) |
| Protocol fee | 0.3% collected on-chain |
| Custody | Non-custodial — funds move only when the payer's wallet signs |
| Duplicate protection | The gateway enforces a duplicate-payment guard on all payroll routes — an accidentally resubmitted pay run is rejected, not double-paid |
| x402 discovery | https://gateway.spraay.app/.well-known/x402.json |
Paid endpoints use the x402 protocol (an unpaid call returns HTTP 402 with payment instructions). The Spraay MCP server handles payment automatically: smithery.ai/servers/Plagtech/Spraay-x402-mcp.
Run the steps in order. Never skip validation, and never execute without explicit human confirmation.
Convert the payroll source (CSV, spreadsheet, HR export) into a recipient list, then validate:
POST https://gateway.spraay.app/free/validate-batch
{
"chain": "base",
"token": "USDC",
"recipients": [
{ "to": "0xEmployeeWallet1...", "amount": "4200.00" },
{ "to": "0xContractorWallet2...", "amount": "1850.00" }
]
}
The response returns valid, errors, warnings, and a summary with recipientCount, uniqueAddresses, and totalAmount. Fix every error before proceeding. If uniqueAddresses < recipientCount, there are duplicate wallets in the roster — surface them; duplicate salary payments are the most common payroll mistake. Cross-check totalAmount against the expected payroll total from the source document.
Free tier is rate-limited to 60 req/min per IP.
POST https://gateway.spraay.app/api/v1/payroll/estimate with body:
{ "employeeCount": 25 }
Returns an estimate object with cost breakdown. For a quick free ballpark instead: GET https://gateway.spraay.app/free/estimate-batch?recipients=25 (returns protocolFeeBps: 30 and estimatedGasUSD).
Present to the user: headcount, total USDC, the 0.3% protocol fee, and gas — and get an explicit "yes" before executing. A pay run is irreversible once on-chain.
POST https://gateway.spraay.app/api/v1/payroll/execute
{
"token": "USDC",
"sender": "0xCompanyTreasuryWallet...",
"employees": [
{ "address": "0xEmployeeWallet1...", "amount": "4200.00" },
{ "address": "0xContractorWallet2...", "amount": "1850.00" }
]
}
Success returns { "status": ..., "txHash": ... }. Link the hash as https://basescan.org/tx/<txHash> in your summary — that link is the payment proof for every person on the roster at once.
GET https://gateway.spraay.app/api/v1/payroll/tokens — returns the tokens array of supported payroll stablecoins. Default to USDC on Base unless the user asks otherwise.
For a monthly/biweekly cycle, re-run the full workflow each period from the current roster — never replay a previous run's data. Between periods people join, leave, and change wallets; re-validation each cycle is what catches that. Persist nothing sensitive between runs.
/free/validate-batch in the same session as execution.POST /api/v1/tax/calculate ($0.08, FIFO gain/loss over a transactions array) and GET /api/v1/tax/report ($0.05, IRS 8949-compatible data) — pairs naturally with pay runs for year-end reporting.POST /api/v1/invoice/create ($0.05, {creator, token, amount}) — for contractor-initiated billing instead of roster-initiated payment.POST /api/v1/escrow/create ($0.10, {depositor, beneficiary, token, amount}) with fund/release/cancel — for milestone-based contractor compensation. See the Spraay Escrow skill.shopify-batch-payouts skill / POST /api/v1/batch/execute.Employment compliance, tax withholding, KYC, W-2/1099 generation, or employment-law classification. Spraay is the settlement rail. For audit/compliance, pair this skill with a payroll audit skill — audit with theirs, execute with this.