My name is Matthew Pirtle, and I’m part of the Technical Solutions team here at Ramp. I wanted to share some details on how to recreate our Universal CSV export using API endpoints. This chart outlines the specific API calls you’ll need to make in order to retrieve the same data that is included in our CSV export.
I hope you find it helpful!
I’d also love to hear feedback from others on which API endpoints you’d like to see Ramp expose, as well as how you would utilize them in your workflows!
CSV Column
Corresponding Field
API Call + Notes
Transaction Time
user_transaction_time
GET /developer/v1/transactions
Transaction Date
user_transaction_time
GET /developer/v1/transactions In the csv, date and time are separate and re-formatted but in the api they are returned together as a timestamp.
Accounting Date
accounting_date
GET /auth/transactions
Clearing Time
settlement_date
GET /developer/v1/transactions
Amount
amount
GET /developer/v1/transactions
Amount Repaid
not directly available
The amount of the matching reimbursement; (code reference: transaction_repayment_data)
Repayment Date
not directly available
Same as above, it is the max(reimbursement.created_at)
User
not directly available
need to grab the user_id and call the GET user/<user_id> endpoint to get the equivalent information in the csv
Merchant Description
merchant_descriptor
GET /developer/v1/transactions
Merchant Name
merchant_name
GET /developer/v1/transactions
Merchant City
available under merchant_location for US transactions
GET /developer/v1/transactions
Merchant State
available under merchant_location for US transactions
GET /developer/v1/transactions
Ramp Category
sk_category_name
GET /developer/v1/transactions
Ramp Department
not directly available
need to get the location_id and call GET locations/<id> endpoint
Ramp Location
not directly available
GET /developer/v1/transactions
Card Last 4
not directly available
need to get the card_id and call GET cards/<id> endpoint
Card Present
not available via any api call
Card Display Name
not directly available
need to get the card_id and call GET cards/<id> endpoint
Hi Matthew! This is the most recent message I’m seeing in API endpoints, but could you tell me, is there anything roadmapped to provide an endpoint for business accounts with a response set? Seems like many of the response fields would map onto business accounts, and would be useful even if they were less than real time (monthly) - although real time would be preferred! I have the beta Treasury endpoint which has been awesome, but I keep watching the developer docs thinking Biz Accounts must be here soon…
Hey Jeff, sorry for the delay here! What do you mean business accounts? Are you talking about RBA and treasury accounts? If so, what fields were you hoping could be exposed?
Hi Matthew, I can pull treasury account information from the API endpoint (Teddy shared this in Alpha previously) but I don’t have transaction access for Ramp Business Accounts. Only documented transaction point in public docs is for Ramp cards that I know of. Anything out there by chance that might be unpublished for RBAs? It would be great to be able to support something more frequent than a monthly statement sync to our accounting system (Xero). Right now, RBA’s don’t appear to be accessible via the Plaid or Yodlee sync options Xero provides, so I’ve been running a monthly CloudFlare CSV importer, but that sure lowers my accounting system visibility. If I could get near real time (daily) transaction json (or transaction anything really) for RBAs, that would be excellent.
Got it. Let me take this back to the dev API team. We meet every other week and will bring this up and report back when I hear more! Appreciate your patience here.
Hi Matthew - any word? It would be awesome to expose this transaction level, but I realize it liley takes re-encapsulating original data from your bank partner, or else creating a customer proxy to their API.
Also came up today that it would be awesome to be able to query my automations/sweeps across accounts for governance, right now there’s no central dashboard/portal for automations so they take navigating to the account level of ramp business accounts, which takes a bit of time.
Hello, I’d like to follow up on this as well. We just set up RBA and are considering Xero for accounting - I’m a bit concerned that there isn’t good integration between RBA and Xero?
Hi, we have several Ramp fields that we would like to be included in API endpoints!
“Changes Requested” status — Transactions sent back to cardholders do not appear in the API spend export. We need this as a distinct status value alongside “Missing items.”
Rejection Date (changes_requested_at) — The date a transaction was sent back to the cardholder. Required to determine whether the rejection falls within our grace period.
Incomplete “Missing Items” results — Some transactions visible as “Missing items” in the Ramp UI do not appear in the API export at all. We have confirmed specific transaction IDs that are missing.
Inconsistent Clearing Date — The transaction_cleared_at field returned by the API does not always match the clearing date displayed in the Ramp UI for the same transaction.
Additionally:
Date Assigned — The date and time a transaction entered a specific approver’s queue. Currently only the transaction date (spend_time) is available; we need the queue assignment date to accurately determine how long an approval has been pending.
Approval Group Name — The name of the approval group assigned to the transaction (e.g. “Manager”, “CTA Ops”). We use this to route notifications differently by group type.
Approver Email Address — The next_approver_users field returns a display name only. An email address would allow us to send notifications without a separate employee lookup.
Task Type — A distinction between “Transaction approval” and “Reimbursement approval” at the API level, so each can be handled differently in our workflow.
Delegate Relationships — Whether a user has an approval delegate assigned, and if so, who. This is not surfaced anywhere in the API and requires manual detection on our end.
Last, the subbmission_policy_status doesn’t seem to be including the value “changes requested” in the API but it is available in Ramp export. Is this named something else in the API? If not, can it be added also?