> ## Documentation Index
> Fetch the complete documentation index at: https://docs.genesiscomputing.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ramp

> Configure a read-only Ramp connection in Genesis for card transactions and bills.

## Overview

Ramp appears in **Config -> Connections** under **Dev Tools**. Genesis reads card transactions through it, and bills if you turn them on, limited to the categories you allow. Nothing can be changed in Ramp through this connection.

> [!NOTE]
>
> Amounts and cardholder names are sensitive. Grant this connection only to the people and agents who should see them.
>
> The first time Ramp is used in a thread, the thread becomes private and can't be made public again. Its owner and holders of `manage_all_threads` can read it. Anyone else who has access to the thread can read it only if they can also see the connection. See [Sensitive connections](https://docs.genesiscomputing.com/docs/Setup/Connections.md#sensitive-connections).
>
> **The agent's replies posted to Slack or a room are copies outside that protection.** Anyone who can read that channel or room can read them, so have the agent post figures there only where everyone may see them.

## Setup workflow

**1. Create the app in Ramp**

A Ramp business admin opens **Company -> Developer** and creates an app. Add the **Client Credentials** grant type, then allow the scope `transactions:read`, plus `bills:read` if you will turn bills on. Copy the client ID and client secret.

**2. Add the connection**

Go to **Config -> Connections**, click **+ New Connection**, and select **Ramp**. Enter the client ID and client secret. Leave **Token Endpoint Client Auth** on HTTP Basic unless Ramp refuses the token request.

**3. Choose what can be read**

Fill in **Allowed Ramp Categories** and **Allowed Accounting Categories**, one per line, or set **Allow All Categories** to Yes. Until you do, agents read nothing. Bills stay refused until you set **Enable Bills** to Yes. Agents can't change these settings.

**4. Test it**

Click **Test Connection**. Genesis requests a new token, reads a page of each enabled kind, and reports how many rows on that page are in scope, not what they contain. Zero isn't a failure: it can mean the first page held nothing in scope. If no categories are set yet, it only checks the credentials and fetches no rows.

**5. Give an agent the tools**

Add the `ramp_connector_tools` tool group to the agent that needs it. See [Ramp Connector Tools](https://docs.genesiscomputing.com/docs/Genbot-Toolkit/Ramp-Connector-Tools.md).

## Which rows can be read

* A **transaction** is in if its Ramp category is allowed (the whole name), or its accounting coding is covered.
* A **bill** has no Ramp category, so only its accounting coding can cover it.
* Accounting coding is covered when every GL account on the record and its lines contains an allowed term. A line with no category uses the record's.
* **A row with no category is out.**
* **A mixed record is dropped whole.** One line outside the rules leaves the record out, so the in-scope share of mixed records isn't counted.

Dropped rows aren't returned, logged or counted. Because Ramp can't filter by these rules, Genesis filters after each page arrives, so a page can be short or empty while more remain.

## Troubleshooting

| Test Connection says | Check |
| - | - |
| Ramp refused the token request | The client ID and secret; that the app has the Client Credentials grant and its scopes (`bills:read` is needed if bills are on). If those are right, set **Token Endpoint Client Auth** to the POST body. |
| HTTP 403 | The app's allowed scopes, and whether the Ramp plan includes the endpoint. |
| HTTP 429 | Ramp's rate limit. It can block requests for 60 seconds. |

## Egress

On Snowflake Native App / SPCS deployments, Ramp connections declare egress for `api.ramp.com`. Ramp's sandbox (`demo-api.ramp.com`) is not supported.
