NodeRailsCRYPTO PAYMENT INFRASTRUCTURE
DocumentationAPI Reference
Dashboard

Payouts

Create one-shot or scheduled payouts, recurring schedules, and a per-app address book. Secret API key or dashboard JWT. Amounts on create are human decimal strings.

💡

Standing auth

The payout wallet must already be authorized in the merchant dashboard. ERC-20 payouts need an allowance to Merchant Manager; native EVM payouts spend depositETH.
⚠️

Chain limits

Bulk lines (2–200) are EVM only. Solana is native SOL, one recipient. Sui cannot be scheduled and cannot execute on-chain yet. Create amounts are human decimals; stored amounts are atomic. Bank settlement is a separate dashboard flow, not these endpoints.

Create a payout

POST/payouts
ParameterTypeRequiredDescription
appIdstringYesApp UUID (SDK sets this)
chainstringYesChain id, e.g. 11155111
tokenAddressstringYesAdmin+app catalog token, or native sentinel
lines{ recipient, amount }[]Yes*1–200 human amounts. *Or recipientWallet + tokenAmount
scheduledAtstringNoISO UTC. Future time → SCHEDULED
executeNowbooleanNoDefault true when scheduledAt is omitted
amountUsdstringNoRecord only

List / get / execute / cancel

GET/payouts
GET/payouts/:id
POST/payouts/:id/execute
POST/payouts/:id/cancel

Schedules

POST/payout-schedules
ParameterTypeRequiredDescription
appIdstringYesApp UUID
chainstringYesChain id
tokenAddressstringYesCatalog token
linesarrayYesFixed recipients and human amounts
intervalDaysnumberYes1–365 UTC days
startAtstringNoFirst run ISO UTC (default now)
GET/payout-schedules
POST/payout-schedules/:id/pause
POST/payout-schedules/:id/resume
POST/payout-schedules/:id/cancel

Address book

POST/apps/:appId/payout-contacts
GET/apps/:appId/payout-contacts
PUT/apps/:appId/payout-contacts/:contactId
DELETE/apps/:appId/payout-contacts/:contactId
POST/apps/:appId/payout-contacts/import

CSV header: label,wallet,amount. Body: csv, family (EVM | SOLANA | SUI), saveToAddressBook.PUT updates label, wallet, or family. Contacts are scoped to the URL appId.

Funding (dashboard)

GET/apps/:id/payout-funding?chainId=

Webhooks

payout.executedeventIntent executed on-chain
payout.failedeventExecute failed; recurring stays ACTIVE
SDKtypescript
await noderails.payouts.create({
  chain: '11155111',
  tokenAddress: '0x...',
  lines: [{ recipient: '0xAlice', amount: '100.50' }],
  executeNow: true,
});