Skip to main content

Expensify Component

Expensify provides an industry leading expense management system. Use the Expensify component to programmatically download expense report data for analysis or insertion into your accounting package, provision accounts for new hires, and much more.

Component key: Expensify

Description

Expensify provides an industry leading expense management system.

Use the Expensify component to programmatically download expense report data for analysis or insertion into your accounting package, provision accounts for new hires, and much more.

API Reference: Expensify API Reference

Connections

Basic Connection

Create a new authentication connection. Refer to the following guide for more information.

  1. Navigate to https://www.expensify.com/tools/integrations/ and select the option that creates a new set of credentials
  2. A pair of credentials: partnerUserID and partnerUserSecret will be generated and shown on the page.
    1. Make sure to store the partnerUserID and partnerUserSecret pair you're given in a secure location, as you won't be shown them again.
  3. Enter the partnerUserID and partnerUserSecret into the connection configuration of your Prismatic integration

Data Sources

List Cards

Returns all Cards. | key: listCards | type: picklist


List Policies

Returns all Policies. | key: listPolicies | type: picklist


Actions

Create Expense

Allows you to create expenses in a user’s account. | key: createExpense

Output Example Payload

{
"data": {
"responseCode": 200,
"transactionList": [
{
"amount": 1234,
"merchant": "Name Of Merchant 1",
"created": "2016-01-01",
"transactionID": "6720309558248016",
"currency": "USD"
},
{
"amount": 2211,
"merchant": "Name Of Merchant 2",
"created": "2016-01-31",
"transactionID": "6720309558248017",
"currency": "CAD"
}
]
}
}

Create Expense Rule

Create expense rules for a given employee on a given policy. | key: createExpenseRule


Create Policy

Creates a policy. | key: createPolicy

Output Example Payload

{
"data": {
"responseCode": 200,
"policyID": "0123456789ABCDEF",
"policyName": "My New Policy"
}
}

Create Report

Creates a report, with transactions, in a user’s account. | key: createReport

Output Example Payload

{
"data": {
"responseCode": 200,
"reportName": "Name of the report",
"reportID": "R006AseGxMka"
}
}

Download Report

This job lets you download reports that were generated with the Report Exporter job. | key: downloadReport


Export Report

Export expense or report data in a configurable format for analysis or insertion into your accounting package. | key: exportReport

Output Example Payload

{
"data": "exporteba3c95b-f302-4d74-a41a-6127c9088551-5650745444954548.pdf,exporteba3c95b-f302-4d74-a41a-6127c9088551-2050520975381833.pdf"
}

Get Policy

Gets specific information about listed policies. | key: getPolicy

Output Example Payload

{
"data": {
"responseCode": 200,
"policyInfo": {
"4C6722D4BD2BD941": {
"reportFields": [
{
"values": [],
"name": "title",
"type": "formula"
},
{
"values": [
"Class 1",
"Class 2",
"Class 2:Sub class 2"
],
"name": "Classes",
"type": "dropdown"
},
{
"values": [
"Donatello",
"Leonardo",
"Michelangelo",
"Rafael"
],
"name": "Customers/Jobs",
"type": "dropdown"
}
],
"categories": [
{
"name": "Entertainment",
"enabled": true
},
{
"name": "Transportation",
"enabled": true
},
{
"name": "Phone",
"enabled": true
},
{
"name": "Fuel/Mileage",
"enabled": true
},
{
"name": "Lodging",
"enabled": true
},
{
"name": "Meals",
"enabled": true
},
{
"name": "Other",
"enabled": false
}
],
"tags": [
{
"glCode": "",
"name": "Enterprise",
"enabled": true
},
{
"glCode": "",
"name": "Enterprise:Jean-Luc Picard",
"enabled": true
},
{
"glCode": "",
"name": "Enterprise:Lt. Commander Data",
"enabled": true
},
{
"glCode": "",
"name": "Enterprise:William Riker",
"enabled": true
}
],
"tax": {
"default": "4",
"rates": [
{
"rate": 0,
"name": "EC Goods Zero-rated",
"rateID": "5"
},
{
"rate": 0,
"name": "EC Services Standard",
"rateID": "4"
},
{
"rate": 20,
"name": "Standard",
"rateID": "2"
},
{
"rate": 5,
"name": "Reduced",
"rateID": "9"
}
],
"name": "Tax"
}
},
"3F329EA1C3809E6C": {
"categories": [
{
"name": "Phone Costs",
"areCommentsRequired": false,
"enabled": false
},
{
"name": "Legal",
"areCommentsRequired": false,
"enabled": false
},
{
"name": "Agency Expense",
"areCommentsRequired": false,
"enabled": false
}
],
"reportFields": [
{
"values": [],
"name": "title",
"type": "formula"
}
],
"tags": [
{
"name": "Tags",
"tags": []
}
],
"tax": {},
"employees": [
{
"email": "admin@domain.com",
"role": "admin",
"submitsTo": "user@domain.com"
},
{
"email": "user@domain.com",
"role": "user",
"submitsTo": "admin@domain.com",
"employeeID": "Emp1",
"customField2": "custom information"
}
]
}
}
}
}

List Cards

Gets the list of credit cards that are assigned at the domain level. | key: listCards


List Policies

Gets a list of policies with some relevant information about them. | key: listPolicies

Output Example Payload

{
"data": {
"policyList": [
{
"outputCurrency": "USD",
"owner": "admin@acmecorp.com",
"role": "user",
"name": "Acme Corp USA Policy",
"id": "DEADBEEF12345678",
"type": "corporate"
},
{
"outputCurrency": "EUR",
"owner": "admin@acmecorp.com",
"role": "auditor",
"name": "Acme Corp France Policy",
"id": "BA5EBA1187654321",
"type": "corporate"
},
{
"outputCurrency": "USD",
"owner": "hr@acmecorp.com",
"role": "admin",
"name": "ACME Corp Candidate Policy",
"id": "F005BA11000099999",
"type": "corporate"
}
],
"responseCode": 200
}
}

Raw Request

Send a raw HTTP request to the Expensify API | key: rawRequest


Update Employee

Add, update or remove policy members | key: updateEmployee

The advanced employee updater is designed to allow dynamic and customizable employee provisioning and de-provisioning in Expensify. It will allow you to:

  • Provision employees into Expensify policies based on customizable fields, such as employee department, country, job code, etc.
  • De-provision employees from Expensify, based on customizable fields, such as termination date
  • Assign employees to Expensify domain groups based on customizable fields, such as employee department, country, job code, etc.
  • Automatically invite managers to policies they have subordinates on
  • Automatically detect employee email address changes, and merge both addresses into the same account
  • Import additional information from the employee feed into Expensify, to reuse for custom data export

Output Example Payload

{
"data": {
"responseCode": 200,
"dry-run": false,
"updatedEmployeesCount": 3,
"diff": {
"diffToAdd": {
"0123456789ABCDEF": [
"employee1@domain.com",
"employee2@domain.com"
],
"ABCDEF0123456789": [
"employee3@domain.com"
]
},
"diffToRemove": {
"B1C7903C636F4A51": [
"terminatedEmployee@domain.com"
]
}
},
"securityGroupEmployeesMap": {
"407184": [
"employee1@domain.com",
"employee2@domain.com"
],
"830936": [
"employee3@domain.com"
]
},
"skippedEmployees": [
{
"email": "employee6@domain.com",
"reason": "No policy found for 'Marketing'"
},
{
"email": "employee7@domain.com",
"reason": "Invalid manager email address 'manager@domain '"
}
]
}
}

Update Expense Rules

Update a preexisting expense rule for a given employee on a given policy. | key: updateExpenseRule


Update Policy

manage categories, tags and report fields on a policy. | key: updatePolicy


Update Report Status

Update the status of a report. | key: updateReportStatus

Output Example Payload

{
"data": {
"responseCode": 200,
"reportIDs": [
"R006AseGxMka",
"R00bCluvcO4T"
]
}
}