Skip to main content
Rho is a US business banking and spend management platform, covering checking and savings accounts, corporate cards, treasury and accounts payable. Its API exposes the accounts your business holds, the full transaction ledger behind them and the finalized period-end statements, so your banking data can be reconciled and analyzed alongside the rest of your data.

1. Add your Rho access

  1. In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Rho option from the list of connectors.
  2. Click Next and you’ll be prompted to add your access.
  • API Access Token: Your Rho API Access Token, in the rhobat_... format.
  • Initial sync date: (Optional, advanced) The earliest transaction date to sync on the first run. Leave it empty to load the full history of your accounts.
  • Lookback days: (Optional, advanced. Default: 7) How many days before the last synced point each incremental run re-reads, so transactions that settle or fail after they were first loaded get their status updated. See How the data is replicated.

Generating the API Access Token

The token is created inside Rho, and only an Account Owner or an Admin can do it:
  1. In Rho, go to Settings → Configurations → Access Tokens.
  2. Create a new token and complete the 2FA challenge.
  3. Give it the scopes accounts:read, transactions:read and statements:read. A missing scope makes the corresponding stream fail with a permission error.
  4. Choose an expiration date — Rho requires one, up to a maximum of one year.
  5. Leave the Allowed IPs allowlist empty, otherwise Rho will reject the requests coming from Nekt.
  6. Copy the token and paste it into Nekt.
Rho shows the raw token only once, right after creating it. There is no way to recover it later — if you close the dialog without copying it, you have to create a new one.
Rho tokens expire on the date you choose and after 45 days without any use. A source that stops running for more than 45 days will need a new token. Rotate the token before its expiration date: create the replacement, update it here, and only then revoke the old one.
The token is read-only and scoped to account and transaction data. It cannot initiate payments or change anything in your Rho account, and you can revoke it at any time from the same settings screen.
  1. Click Next.

2. Select your Rho streams

  1. The next step is letting us know which streams you want to bring. You can select entire groups of streams or only a subset of them.
    Tip: The stream can be found more easily by typing its name.
If you don’t see a stream you were expecting to find, please check if your access token has the matching scope. If that’s not the issue, then it’s probably because we still haven’t implemented it. Feel free to get in touch and request it!
  1. Click Next.

3. Configure your Rho data streams

  1. Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: depending on the data you are bringing to the lake, you can choose between INCREMENTAL and FULL_TABLE. Read more about Sync Types here.
  1. Click Next.

4. Configure your Rho data source

  1. Describe your data source for easy identification within your organization. You can inform things like what data it brings, to which team it belongs, etc.
  2. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).
  3. Optionally, you can define some additional settings (if available).
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.

Check your new source!

  1. Click Next to finalize the setup. Once completed, you’ll receive confirmation that your new source is set up!
  2. You can view your new source on the Sources page. Now, for you to be able to see it on your Catalog, you have to wait for the pipeline to run. You can now monitor it on the Sources page to see its execution and completion. If needed, manually trigger the pipeline by clicking on the refresh icon. Once executed, your new table will appear in the Catalog section.
If you encounter any issues, reach out to us via Slack, and we’ll gladly assist you!

How the data is replicated

Transactions are extracted incrementally on initiated_at, the moment the transaction was created — the only timestamp Rho always fills in, since posted_at is empty while a transaction is still pending. A transaction’s initiated_at never changes, but its status and posted_at do: a card authorization settles a few days later, an ACH debit can be returned. To keep those rows current, every incremental run also re-reads a short window before the last synced point — 7 days by default, configurable through the Lookback days setting. Raise it if your account sees returns or settlements landing later than a week after the transaction was initiated. Accounts and statements are extracted in full on every run. Balances are a point-in-time snapshot with no history behind them, and a business closes only a handful of statements per month, so reading them completely is cheap and guarantees nothing is missed.

Working with the data

All money values are integers in the smallest unit of the currency — cents for USD. Divide by 100 to read them as dollars. This applies to amount and balance, and to every figure inside the accounts JSON of a statement.
  • Amounts are signed. In transactions, negative values are debits and positive values are credits.
  • Transactions are keyed by id and account_id. Rho does not guarantee that id alone is unique: the two entries of a single money movement — for example both legs of an internal transfer — can share it. Use money_movement_id to group the entries that belong to the same movement and treat it as one event.
  • Attribution fields can be empty. user_id and user_full_name are empty for system-initiated activity such as interest, and card_id and card_name are only filled on card transactions.
  • transaction_type is an open list. Rho adds new values as it launches new products and payment rails, so treat an unknown value as new rather than invalid.
  • statements.accounts is a JSON string. It holds the per-account figures for the period — opening and closing balance, totals of credits, debits and fees, plus spending, repayments and cashback on credit statements. Parse it in a Query when you need the individual values.
  • statements.pdf_url expires. It is a signed link generated at sync time and valid for about 15 minutes, so it will not work when read from the table later on.

Rate limits

Rho allows around 60 requests per minute per access token. The connector stays below that limit on its own and automatically waits and retries when the API asks it to, so no configuration is needed on your side. Very large first extractions simply take longer to complete.

Streams and Fields

Below you’ll find all available data streams from Rho and their corresponding fields.
The bank accounts your business holds on Rho, with their current balance. Extracted in full on every run.Key Fields:
  • id - Unique identifier of the account on Rho
  • account_name - Display name given to the account in Rho, such as “Primary Checking”
  • account_type - Kind of account: checking (operating cash), savings (higher-yield deposits), credit (the revolving line backing corporate cards), investment (treasury sleeves) or rewards (cash-back balance)
  • balance - Current balance in cents, reflecting the latest posted activity
  • balance_currency - ISO 4217 currency code of the balance, for example USD
  • account_number_last_4 - Last four digits of the account number, empty for account types with no deposit number such as credit and rewards
  • routing_number_last_4 - Last four digits of the routing number, empty for the same account types
Every monetary movement posted against your Rho accounts — card spend, ACH, wires, checks, internal transfers, interest, fees and refunds. Extracted incrementally on initiated_at.Key Fields:
  • id - Identifier of the transaction, part of the composite key with account_id
  • money_movement_id - Identifier shared by every entry of the same money movement, used to group both legs of a transfer
  • account_id - Identifier of the account the transaction posted against, part of the composite key with id
  • account_name - Display name of that account
  • account_type - Type of that account: checking, savings, credit, investment or rewards
  • transaction_type - Kind of movement: card spend, credit-line repayment, ACH, wire, check, internal transfer, savings, treasury, rewards, fee and adjustment activity, including the refund and return variants of each
  • status - Where the transaction stands: pending, settled or failed
  • amount - Signed amount in cents, where negative values are debits
  • amount_currency - ISO 4217 currency code of the amount, for example USD
  • initiated_at - When the transaction was created, used as the incremental replication key
  • posted_at - When the transaction cleared the ledger, empty while it is pending
  • counterparty_name - The merchant, or the other side of the money movement
  • counterparty_logo_url - Link to the counterparty’s logo, when Rho has one on file
  • memo - Memo written on the transaction
  • note - Annotation added to the transaction by a user or by Rho
  • user_id - Identifier of the team member the transaction is attributed to, empty for system-initiated activity such as interest
  • user_full_name - Name of that team member
  • card_id - Identifier of the corporate card the spend was made on, empty for non-card transactions
  • card_name - Display name of that card
  • tracking_number - Payment network reference used to trace an outbound payment: an ACH NACHA trace number, or a wire IMAD/OMAD
  • attachments - Receipts and other files attached to the transaction, as a JSON string listing each file’s file_id and file_name. The files themselves are not synced
The finalized, period-end statements Rho issues for your accounts — the same documents you can download from the Rho dashboard. Extracted in full on every run.Key Fields:
  • id - Unique identifier of the statement
  • statement_type - Kind of statement: account (checking and savings), credit (the corporate card line) or treasury
  • period_start - First day covered by the statement period, inclusive
  • period_end - Close date of the statement period, inclusive
  • available_at - When the finalized statement became available to download
  • pdf_url - Signed link to the statement PDF, valid for about 15 minutes after the sync
  • accounts - Per-account figures for the period, as a JSON string: opening and closing balance, totals of credits, debits and fees, plus repayment date, spending, repayments and cashback on credit statements