REST/API/JSON reports?

Bjorn Expensify Customer Posts: 3 Expensify Newcomer

I'm trying to dump Concur and switch us to Expensify. We need report header and report lines imported into our Salesforce accounting system. It's not Financial Force though, so I need to use the API. I looked at which has a connector... but it only exports reports as PDFs, which is useless to me. I use Microsoft Flow for all sorts of things and can roll my own HTTP connector. I've tested it against a single report ID and get back a 200 status. So where's my JSON formatted report data? The documentation really emphasizes files like CSV, Excel, etc. and those files being saved to Can I really not get JSON formatted report header and line data returned to me from an API call?

My super basic request is below. What am I missing?




  • Conor Pendergrast
    Conor Pendergrast Expensify Success Coach - Admin, Expensify Team Posts: 175 Expensify Team
    edited April 2018

    Hey @Bjorn, you're definitely correct here: our API doesn't support returning JSON-formatted report/ expense detail within an API call. You have to define the formatting and get that returned to you via a separate file download (which you then call using the download job).

    Sorry to provide the disappointing news!

  • Bjorn
    Bjorn Expensify Customer Posts: 3 Expensify Newcomer

    Thanks for the reply Conor. I guess my only question is... why the hell not?! It's 2018, the age of clouds, integrations, and APIs, and you guys are only capable of working with physical files that I'm going to have to generate, retrieve, store, and parse? Microsoft Flow, Mulesoft, Zapier, IFTTT, etc.should all have connectors that allow users to GET and POST through your API and not deal with files at all. I guess we're sticking with Concur for now.

  • Rhyd
    Rhyd Expensify Customer Posts: 4 Expensify Newcomer


    I think there may be some confusion (could be me :), but we have integrated Expensify with Salesforce without the need for physical files.

    The process requires two api calls. The first defines what data is required. The call returns the name of a 'file' with the data, sitting on the expensify server.

    The second call, you send the name of the 'file' required and it contents gets returned in the body of the http response. Using code you can then coalesce the data into classes in Salesforce and work from there.

    Your code will create the 'file' on their server. You need another api call to return the contents of it.

    Hope that helps. Give us a shout if you need more info.


  • Bjorn
    Bjorn Expensify Customer Posts: 3 Expensify Newcomer

    Thanks for the clarification Rhyd. I've put this project on the back burner for now, will pick it back up in August. I may bug you for details if I get stuck. Thanks!

  • Rhyd
    Rhyd Expensify Customer Posts: 4 Expensify Newcomer

    Sorry Bjorn, only just seen you replied.

    Give us a shout if you need anymore help.

    We actually have an App for pulling Reports and Expenses into Salesforce. It can be done via the click of a button or can be scheduled to run periodically.

    It's free.

    Let me know if it's of any interest. The App is currently going through the Salesforce security review, so as yet it is not on the App Exchange, so we currently distribute the App by clients contacting us directly.


  • caglarcem
    caglarcem Expensify Customer Posts: 4 Expensify Newcomer

    Hi @Rhyd I am stuck with a similar problem.

    I am trying to get all the expenses information based on a filter by "downloader".

    Currently, some expenses are uploaded by mobile app, and I can also create new expenses by api calls.

    The issue starts when I try to get all the expenses based on a filter.

    1 - I exported a report with "Report Exporter" ("type":"combinedReportData") filtering by a start date. This returned a file name.

    2- Using the file name above, I called Downloader api endpoint ("type": "download")

    3- It only returned a string "template@expensify_template.ftl" .

    I expect it to return a response with all the expense information (is that right?)

    So, what am I doing wrong? How can I get the details of all the uploaded expenses?