Authenticate using HTTP Basic auth with your organization_id as the username and your API key as the password.
Create a counterparty (the external party you are paying or receiving from) by POSTing to /counterparties with name and account details (routing number, account number).
Create a payment order by POSTing to /payment_orders with type (ach, wire, etc.), amount (in cents), direction (credit or debit), currency, originating_account_id, and receiving_account references.
If your account requires approval workflows, the payment order starts in pending approval status; approve it via POST /payment_orders/{id}/approve (requires appropriate API key permissions or a user action in the dashboard).
Poll GET /payment_orders/{id} or handle Modern Treasury webhooks (payment_order.status_changed) to track the order through sending, processing, and completed or failed states.
Reconcile transactions by linking expected payments to incoming or outgoing transactions using Modern Treasury's expected payments and reconciliation features.
Known gotchas
Modern Treasury is an orchestration layer that connects to your underlying bank; payment orders are only as fast as the bank and rail selected — ACH is T+1/T+2, wires are same-day if submitted before cutoff.
Approval workflows are configured at the account level in Modern Treasury; if approvals are required and you submit a payment order via API without subsequently approving it, it will sit in pending_approval indefinitely and never send.
The amount field is always in minor units (cents for USD); the currency field must match the originating account's currency or the request will be rejected.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp