Treasury
Treasury — methods, parameters, and examples for easy-sdk (gem).
Treasury is the money-movement layer: linked bank accounts, ACH / wire deposits and withdrawals, recipients (1099 and otherwise), payout links, recurring payments, security rules, and approval workflows.
The resource keeps a flat method layout — sub-resources (recipients, transactions, etc.) are exposed as prefixed methods rather than nested objects, matching the rest of the SDK's convention.
Accessed via client.treasury. ~40 endpoints; only the most frequent
are documented here — see the source for the complete list.
Dashboard
dashboard_summary
GET /treasury/dashboard/summary.
client.treasury.dashboard_summaryBank accounts
client.treasury.list_bank_accounts
client.treasury.bank_account_link_token # for Plaid Link
client.treasury.link_bank_account(public_token: "…")
client.treasury.delete_bank_account("ba_…")Deposit
client.treasury.deposit_bank_pull(amount: 100_00, source_id: "ba_…")
client.treasury.deposit_wire_instructionsWithdraw
client.treasury.withdraw(amount: 50_000, destination_id: "ba_…")
client.treasury.confirm_withdraw(withdrawal_id: "wd_…")Transfer (between own accounts)
client.treasury.transfer(amount: 10_000, source_id: "ba_a", destination_id: "ba_b")
client.treasury.confirm_transfer(transfer_id: "tx_…")Send (to a recipient)
client.treasury.send_payment(amount: 25_000, recipient_id: "rec_…")
client.treasury.confirm_send(send_id: "snd_…")
client.treasury.cancel_send(send_id: "snd_…")Transactions
client.treasury.list_transactions(limit: 100)
client.treasury.retrieve_transaction("tx_…")
client.treasury.update_transaction("tx_…", category_id: "cat_…")
client.treasury.transaction_settlement("tx_…")
client.treasury.export_transactions(start_date: "2026-04-01", end_date: "2026-04-30")Recipients
Full CRUD plus invitations, auto-pay, payment-method attach, W-9 collection, and bulk import via CSV upload.
client.treasury.list_recipients(limit: 50)
client.treasury.create_recipient(first_name: "Pat", last_name: "Lee", email: "pat@example.com")
client.treasury.retrieve_recipient("rec_…")
client.treasury.update_recipient("rec_…", email: "new@example.com")
client.treasury.delete_recipient("rec_…")
client.treasury.invite_recipient("rec_…")
client.treasury.set_recipient_auto_pay("rec_…", enabled: true)
client.treasury.create_recipient_payment_method("rec_…", type: "ACH", account_number: "…", routing_number: "…")
client.treasury.request_recipient_w9("rec_…")
client.treasury.recipient_tax_info("rec_…")
client.treasury.update_recipient_tax_info("rec_…", tin: "…", classification: "individual")
client.treasury.list_recipient_invitations
client.treasury.accept_recipient_invite(invite_token: "…")
client.treasury.recipients_tax_report(year: 2025)
# Plaid for recipient-side bank linking
client.treasury.recipient_plaid_link_token(recipient_id: "rec_…")
client.treasury.recipient_plaid_exchange(recipient_id: "rec_…", public_token: "…")Bulk import
POST /treasury/recipients/import is multipart/form-data. Pass file:
as a Net::HTTP::UploadIO (or any IO-like object the
multipart-post gem
accepts).
require "net/http/post/multipart"
client.treasury.import_recipients(
file: UploadIO.new(File.open("recipients.csv"), "text/csv", "recipients.csv")
)Payout links
client.treasury.list_payout_links(limit: 50)
client.treasury.generate_payout_link(amount: 50_000, recipient_email: "pat@example.com")
client.treasury.retrieve_payout_link("pl_token_…")
client.treasury.submit_payout_link("pl_token_…", payment_method_id: "pm_…")Recurring payments
client.treasury.list_recurring_payments(limit: 50)
client.treasury.create_recurring_payment(
recipient_id: "rec_…", amount: 100_000, interval: "month", interval_count: 1
)
client.treasury.retrieve_recurring_payment("rp_…")
client.treasury.update_recurring_payment("rp_…", amount: 120_000)
client.treasury.delete_recurring_payment("rp_…")Categories
client.treasury.list_categories
client.treasury.create_category(name: "Software")
client.treasury.delete_category("cat_…")
client.treasury.category_usage("cat_…")Security rules
client.treasury.list_security_rules
client.treasury.create_security_rule(rule_type: "max_send_amount", value: 100_000)
client.treasury.update_security_rule("sec_…", value: 250_000)
client.treasury.delete_security_rule("sec_…")Auto-transfer rules
client.treasury.list_auto_transfer_rules
client.treasury.create_auto_transfer_rule(source_id: "ba_a", destination_id: "ba_b", trigger_balance: 500_000)
client.treasury.update_auto_transfer_rule("atr_…", trigger_balance: 1_000_000)
client.treasury.delete_auto_transfer_rule("atr_…")Approval requests
client.treasury.create_approval_request(operation: "send", payload: { recipient_id: "rec_…", amount: 100_000 })
client.treasury.resolve_approval_request("ar_…", decision: "approve")Object shapes
Treasury returns rich, varied shapes — bank accounts, transactions, recipients, etc. all have distinct schemas.
Examples
Pay a contractor and confirm
recipient = client.treasury.create_recipient(
first_name: "Pat", last_name: "Lee", email: "pat@example.com"
)
send = client.treasury.send_payment(amount: 250_000, recipient_id: recipient[:id])
client.treasury.confirm_send(send_id: send[:id])Recurring monthly retainer
client.treasury.create_recurring_payment(
recipient_id: "rec_…",
amount: 500_000,
interval: "month",
interval_count: 1,
start_date: "2026-06-01"
)Bulk-import recipients from a CSV
require "net/http/post/multipart"
File.open("vendors.csv") do |io|
client.treasury.import_recipients(
file: UploadIO.new(io, "text/csv", "vendors.csv")
)
end