Easy Labs
SDKsRubyResources

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_summary

Bank 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_instructions

Withdraw

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")
)
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

On this page