| Applies toExpensify | AudienceAll users | Last updatedJanuary 07, 2026 |
In this article
The GoldFinch Expensify Integration automates the process of importing approved expense reports from Expensify directly into Salesforce. This integration streamlines financial workflows by creating Purchase Invoices and General Journals automatically—saving time and reducing data entry errors.
With this integration, you can:
- Automatically download approved and reimbursed expense reports from Expensify
- Convert Reimbursable expenses into Purchase Invoices
- Convert Non-Reimbursable (Credit Card) expenses into General Journals
- Run manual or scheduled imports to keep data in sync
How It Works
The integration follows this process:
- GoldFinch retrieves reports from Expensify that have been Approved or Reimbursed.
- Each downloaded report is flagged as processed so it won’t be re-imported.
- The system tracks the last synced date to only fetch newly approved reports.
- For each report:
- Reimbursable expenses → A Purchase Invoice is created.
- Non-Reimbursable (e.g., company credit card) expenses → A General Journal is created.
Setup Instructions
1. Generate Expensify API Credentials
- Log in to Expensify and navigate to https://www.expensify.com/tools/integrations/.
- Expensify will generate the following credentials:
partnerUserIDpartnerUserSecret
2. Configure GoldFinch External Credentials
- In Salesforce Setup, go to Named Credentials → External Credentials.
- Open GoldFinch Expensify.
- Under the Principals section, click Edit next to
ExpensifyCreds. - Paste your Expensify Partner User ID and Partner User Secret into the Value fields.
- Click Save to complete setup.
- Once the Named Credential is set up, ensure it is enabled under the External Credential Principal Access section of the Permission Set.
3. GL Account and Bank Code Mapping
- GoldFinch automatically maps Expensify expense categories to Salesforce GL Accounts.
- Primary: Expensify Category GL Code → GoldFinch GL Account Name (partial match supported)
- Fallback: Expensify Category Name → GL Account Name
- Example: If the Expensify Category GL Code is
9000, it will match to 9000-Misc Expense.
4. Bank Code Mapping
- To map Expensify Bank Codes (used for credit card transactions) to GL Accounts, enter the Bank Code in the GL Account’s External Expense Category field.
- Example: If the Expensify Bank Code is
vcf, it will map to 7002-MasterCard Credit Card.
5. (Optional) Multi-Ledger and Accounting Variables
- Multi-Ledger by Currency: Create a system setting for each currency using the format:
Expensify_GLLedger_{CurrencyCode}→ e.g.,Expensify_GLLedger_USD
- Tags to Accounting Variables: Set
Expensify_TagsToAccountingVariables=trueto enable mapping tags to accounting variables.
6. (Optional) Initial Historical Download
- If you need to import past Expensify data for a specific date range, create these system settings:
System Setting Name Description Example Value Expensify_InitialDownloadEnable initial download by date range trueExpensify_SyncStartDateStart date (format: yyyy-mm-dd) 2024-01-01ExpensifyLastSyncedAtEnd date (format: yyyy-mm-dd) 2024-03-31
Using the Integration
Manual Download
- Navigate to App Launcher → Import Purchase Invoice.
- Click Download Expensify Transactions to fetch approved reports.
- Review the imported Import Purchase Invoice records.
- Select the ones to process and click Create Purchase Invoice.
- Reimbursable entries → Create Purchase Invoice
- Non-Reimbursable entries → Create General Journal
Scheduled Sync (Automatic)
GoldFinch provides an Apex scheduler for automated synchronization.
Class: ExpensifySyncScheduler.cls
Field Mapping Reference
This table describes how Expensify report and transaction fields map to corresponding GoldFinch fields during the import process.
| GoldFinch Field | Expensify Field | Mapping Logic / Notes |
|---|---|---|
| Import Purchase Invoice Header | ||
| External Source Id | reportId | Unique Expensify report identifier |
| Transaction Source | — | Constant value: Expensify |
| Description | report name | Concatenates Report Name + " - " + Report ID |
| Account Email | — | Used to locate the related Salesforce Account via Contact Email |
| Invoice Date | transactionDate | If multiple expense dates exist, system uses the last day of the month of the earliest transaction date. If only one date exists, that date becomes the posting date. |
| Currency | currency | Defaults to report currency from Expensify |
| Vendor Invoice No | — | Submitter First Name + " Expense - " + Report ID |
| Status | status | Expensify report status (e.g., Approved, Reimbursed) |
| Import Purchase Invoice Line | ||
| External Source Id | transactionID | Unique Expensify transaction identifier |
| Category | category | Used to derive the GL Account mapping |
| Category GL Code | categoryGlCode | Linked to GL Account Name via Category GL Code |
| GL Account | — | Resolved using GL Account Mapping rules |
| Merchant | merchant | Expense merchant name |
| Type | type | Expense type (e.g., expense, time, customUnit for Distance) |
| Description | — | Concatenates Submitter Name + Merchant + Transaction Date + Report Link + Receipt Link. Truncated to 255 characters if over limit. |
| Bank | bank | Bank or credit card source (used for Non-Reimbursable mapping) |
| Transaction Date | created | Expense transaction creation date |
| Reimbursable | reimbursable | Boolean field determining whether entry posts to Purchase Invoice or General Journal |
| Tags | tag | Mapped to Accounting Variables if Expensify_TagsToAccountingVariables = true |
| Unit Cost | — | Calculation logic: • If modifiedAmount present → use that value• If Type = Distance or Time → unitsCount × unitsRate• Otherwise → use amount |
| Quantity | — | If Type = Distance or Time → use unitsCountOtherwise defaults to 1 |
Troubleshooting
⚠️ Warning: Expensify may return improperly formatted JSON data containing unescaped quotation marks ("), which can cause import errors.
To fix this issue:
- Create or update
Expensify_DataCorrectionImport=true. - Download the raw report JSON file from Expensify.
- Upload it to Salesforce Documents.
- Create
Expensify_ReportJSONSFDocumentIDand paste the uploaded document’s ID. - Go to Import Purchase Invoice and click Download Expensify Transactions to process the file.
- After import, set
Expensify_DataCorrectionImport=false.
Article Expensify-Integration · Last updated January 07, 2026 · GoldFinch ERP Help Center
Comments
0 comments
Please sign in to leave a comment.