Skip to main content
Connect Ramp to DualEntry so card transactions, bills, reimbursements, and statement payments flow into your general ledger automatically. In the other direction, your DualEntry chart of accounts, vendors, classifications, and, if enabled, entities and customers stay current in Ramp. DualEntry is the source of truth for everything it pushes to Ramp. If a field or value is renamed or removed on the Ramp side, DualEntry corrects it back on the next sync. The integration is native and bidirectional, built and maintained directly in DualEntry. After the initial setup, sync runs automatically every two hours, and you can trigger a manual sync at any time.

Prerequisites

Confirm the following before connecting. Each prerequisite blocks a specific configuration step downstream, so missing one stops the setup partway through rather than at first sync.
  • Admin access to both your DualEntry account and your Ramp account.
  • Your chart of accounts finalized in DualEntry. GL accounts are pushed to Ramp automatically on connection, so placeholder or temporary accounts appear in Ramp and create cleanup work later.
  • Vendors set up in DualEntry. The integration pushes vendors to Ramp and reconciles incoming Ramp merchants against your vendor list by name.
  • Companies (entities) configured in DualEntry. Each Ramp entity must map to a DualEntry company before sync runs.
  • A chart of accounts that has not been manually uploaded in Ramp. If a CSV chart of accounts is already loaded in Ramp on a fresh account, contact DualEntry support before proceeding; a duplicate-account cleanup is required.
If your Ramp account is currently connected to another accounting provider, see Switching from another accounting provider before you start.

What syncs to and from Ramp

The integration moves accounting data in both directions on every sync run. Ramp pushes spend activity into DualEntry as transactional records, and DualEntry pushes master data (accounts, vendors, classifications, and optionally entities and customers) into Ramp so employees can code expenses against current values. The table below summarizes what flows from Ramp into DualEntry on each sync: The table below summarizes what DualEntry pushes back to Ramp on every sync: Merchant is a separate Accounting Field that Ramp creates automatically for card transactions without a full vendor record. It is not part of the DualEntry sync and should not be renamed or deleted.

Switching from another accounting provider

Ramp allows one accounting provider connected at a time, so a cutover from another provider needs planning before you connect DualEntry. Once a Ramp transaction is marked as Synced by any provider, that status is permanent: Ramp will not re-sync that transaction to a new provider. Transactions already synced to your old provider stay there and do not appear in DualEntry. Choose a cutoff date that aligns with the last day you want your old provider to receive data from Ramp, typically the last day of a month or accounting period. Everything from the day after that date forward flows into DualEntry; everything before stays in your previous system.
  1. Choose your cutoff date.
  2. Before disconnecting, in Ramp open Accounting → Settings and download your accounting data export. The export contains historical bills, transactions, and reimbursements with GL line detail.
  3. If you used vendor default GL account assignments in Ramp, reconstruct them from the export. Those mappings are tied to the previous accounting connection and do not carry over. Pivot the bills export by vendor and GL account, take the most common GL account per vendor, and re-enter the mappings in Ramp once DualEntry is connected.
  4. In Ramp, go to Accounting → Settings, locate the current accounting connection, and disconnect it.
  5. Complete the connection steps below.
  6. After connecting, in DualEntry navigate to Configuration → Company → Integrations → Ramp → Settings and set the Initial Cut-Off Date field to the day after your last sync with the old provider. If you leave it blank, DualEntry pulls from the integration connection date forward.
Set the Initial Cut-Off Date a few days earlier than your last sync date rather than exactly on it. Ramp will never re-sync a transaction that was already synced to your previous provider, so going back a few days costs nothing. This captures any transactions that were dated slightly earlier and hadn’t made it through to your old system before you disconnected.

Step 1: Connect DualEntry to Ramp

Authorize Ramp to share data with DualEntry through OAuth. The connection is initiated from DualEntry, not from Ramp, so you don’t paste API keys or credentials anywhere. The OAuth flow handles authentication and returns an access token that DualEntry stores against the integration.
  1. In DualEntry, navigate to Configuration → Company → Integrations.
  2. Find Ramp in the integrations list and choose Connect.
  3. DualEntry redirects you to Ramp’s OAuth authorization screen. Sign in with your Ramp admin credentials and approve the access request.
  4. Ramp redirects you back to DualEntry. The integration status now shows as Connected.
A Connected status confirms that authentication succeeded; it does not mean that any transactions have synced yet. Connecting also does not immediately run a sync. Complete the configuration steps in the following sections before triggering your first sync. Otherwise transactions will error on missing entity mappings or system accounts, and the errors will accumulate in the integration error log until the underlying configuration is filled in.

Step 2: Map Ramp entities to DualEntry companies

Each Ramp entity must be mapped to a DualEntry company before any data syncs. If your entity names in Ramp exactly match your company names in DualEntry, the integration suggests mappings automatically. Confirm each suggestion or pick the correct company from the dropdown.
  1. From the Ramp integration page, open the Settings panel.
  2. Under Default Settings, choose the Companies Mapping tile.
  3. For each Ramp entity in the left column, choose the corresponding DualEntry company from the dropdown on the right.
  4. Choose Save.
All entities must be mapped before the sync runs. If an entity is left unmapped, every transaction for that entity errors and does not sync. This is the most common cause of a connected integration that doesn’t appear to be syncing. If your organization operates multiple separate Ramp accounts, connect each one as a separate integration in DualEntry. Entity mapping is scoped per integration, so each connection has its own set of Ramp entities and DualEntry companies.

Step 3: Configure system accounts

For each company, map the system accounts that DualEntry uses to post Ramp transactions. These tell DualEntry where to record the offsetting entries for each transaction type, so Ramp activity lands on the correct credit card liability, bank, and AP accounts. From the Ramp Settings panel, choose the System Accounts Mapping tile. Use the Company dropdown at the top to choose each company in turn, configure the accounts in the table below, and choose Save after each company.
If a required system account is missing when a sync runs, every transaction that needs that account errors and is not posted. The errors appear in the integration error log under Configuration → Company → Integrations → Ramp, not on the originating Ramp record. Check the log if a category of transactions stops landing in DualEntry.

Step 4: Configure Ramp Accounting Field Settings

Decide which DualEntry data syncs to Ramp, and whether each one applies at the header or line level of a bill.
  1. In DualEntry, navigate to Configuration → Company → Integrations → Ramp → Settings.
  2. Choose the Ramp Accounting Field Settings tile. Its controls are organized into three sections: classification sync, entity sync, and customer sync.
  3. Set Active and Splittable for each classification, then turn Entity sync and Customer sync on if you need them. The sections below explain what each control does.
  4. Choose Save, then trigger a sync to create or update the fields in Ramp.
DualEntry owns every Accounting Field it creates this way. See How DualEntry enforces source of truth in Ramp for what happens when someone edits one on the Ramp side.

Classification sync

Every classification in DualEntry (departments, classes, locations, custom dimensions) appears as its own row. For each one, you can:
  • Active - turn the classification’s sync to Ramp on or off.
  • Splittable - choose whether it applies at the line level of a bill (independently selectable per line) or the header level (applied to every line of the bill automatically).
New classifications default to Active and Splittable on. Turning Active off removes the DualEntry-owned Accounting Field from Ramp entirely, including from transactions where it was already applied; those transactions no longer show that coding in Ramp. Your DualEntry data stays intact. DualEntry warns you before you confirm the change. If a classification is inactive in DualEntry while sync stays Active, DualEntry soft-deactivates the field’s options in Ramp instead of deleting the field.

How nested classifications appear in Ramp

Each DualEntry classification becomes one Ramp Accounting Field, and each of that classification’s values becomes one option on the field. Ramp Accounting Fields are single-choice option lists with no nesting of their own. A classification organized as a parent-child hierarchy in DualEntry arrives in Ramp as a flat list of options. The values are pushed by name, and a value’s parent is not sent alongside it. Two consequences follow. First, a Ramp cardholder picking a value sees every value in the classification in one list rather than drilling from parent to child. Values that are only meaningful under a specific parent are still selectable on their own. Second, if two values in different branches of the hierarchy share a name, they are indistinguishable in the Ramp picker even though DualEntry treats them as separate values. Give hierarchical values names that stand alone if you sync them to Ramp. For example:
  • Avoid: USWest and EMEAWest both arrive in Ramp as West.
  • Use: USUS West and EMEAEMEA West arrive in Ramp as US West and EMEA West.
Renaming the value in DualEntry is enough, because DualEntry is the source of truth for these fields and pushes the new name on the next sync. Coding still resolves correctly on the way back into DualEntry. An imported transaction is matched to the specific classification value it was tagged with, and that value keeps its place in the DualEntry hierarchy for segment reporting. The flattening affects only how the options are presented for selection in Ramp, not how the resulting records are classified in your ledger.

Entity sync

Entity sync is off by default. Turning it on pushes your DualEntry companies to Ramp as a single Accounting Field named DualEntry Entity. It is splittable by default so it can be applied at the line level of a bill. This is what powers automatic intercompany billing. See Intercompany billing.

Customer sync

Customer sync is off by default. Turning it on pushes your DualEntry customers to Ramp as a single Accounting Field named DualEntry Customer. It is splittable by default so it can be applied at the line level of a bill. Use it to tag bills, reimbursements, or card transactions against a customer for COGS reporting or chargebacks.

Header-level vs. line-level (splittable) fields

This choice only affects bills, since reimbursements and card transactions in Ramp only ever have one line.
  • Line-level (splittable): the value can be set independently on each line of a bill.
  • Header-level: the value is set once and applied to every line of the bill when it syncs to DualEntry.
A field can only be one or the other at a time. When a field is line-level, its Accounting Field in Ramp is named {Name} - lines; when header-level, it is named exactly {Name}. Switching a field between header-level and line-level only affects bills imported after the change. Bills that synced before the change are not updated retroactively.

Step 5: Configure posting dates and the sync cutoff

Three settings control how Ramp dates map to DualEntry posting dates and when the sync starts pulling transactions. All three live in DualEntry under Configuration → Company → Integrations → Ramp → Settings and are safe to change before the first sync. Initial Cut-Off Date. If you are migrating from another provider or only want to pull transactions from a specific date forward, set this date before triggering the first sync. When left blank, DualEntry pulls all transactions from the integration connection date forward. See Switching from another accounting provider for the recommended approach if you’re cutting over from an existing connection. Map accounting date to posting date in DualEntry. This setting applies to bills and credit card transactions that have an accounting date set in Ramp. When on, DualEntry uses the Ramp accounting date as the posting date. When off (the default), DualEntry uses the bill issued date. This is particularly relevant when connecting mid-period: if a bill has an accounting date in a prior period, posting by transaction date avoids inadvertently reopening that period. Use approval date as posting date for reimbursements. Ramp reimbursements don’t have an accounting date, so by default DualEntry uses the bill issued date. When on, DualEntry uses the reimbursement approval date instead. This is useful for teams where employees submit expenses after month-end close, ensuring reimbursements post in the period they are processed rather than the period the expense occurred. Changes to either date setting only affect transactions imported after the change. Previously synced transactions are not retroactively updated, though they can be archived and replaced manually if needed.

Step 6: Trigger your first sync

Once entity mapping and system accounts are configured for every company, kick off the initial sync from DualEntry. The first sync does the bulk of the work. It pulls historical Ramp transactions from your Initial Cut-Off Date forward. It also pushes your DualEntry chart of accounts, vendors, classifications, and, if enabled, entities and customers into Ramp as Accounting Fields.
  1. Navigate to Configuration → Company → Integrations → Ramp.
  2. Choose Sync Now.
  3. Allow a few minutes for the first sync to complete; accounts with extensive history can take longer.
  4. Review the sync log and error table for any issues. Errors on individual records do not block the rest of the sync, so the log is where you find which specific records failed.
After the first sync, the integration runs automatically every two hours. You can trigger an additional manual sync from the same page whenever you need to pull current activity outside the schedule. Run it as many times as you need. The integration is idempotent on each transaction, so reruns will not create duplicates.

How DualEntry enforces source of truth in Ramp

DualEntry enforces its own values as the source of truth for the classification Accounting Fields it pushes to Ramp, so edits made on the Ramp side are reconciled rather than kept. The table below summarizes how DualEntry responds to each kind of Ramp-side change: For DualEntry Entity and DualEntry Customer, DualEntry still overwrites Ramp-side renames and recreates missing options on the next sync when those syncs are Active. Deleting either field in Ramp does not change DualEntry master data; if sync is still on, DualEntry recreates the field on the next sync. Once a transaction is marked Synced in Ramp, it cannot be edited there. A transaction tagged with a classification value or a DualEntry Entity option that DualEntry does not recognize is rejected rather than imported with missing or incorrect coding. Create the matching value in DualEntry, run a sync, then re-tag the transaction in Ramp so it imports successfully. Unrecognized DualEntry Customer values are not imported as customer tags, but they do not by themselves block the rest of the transaction. DualEntry Entity and DualEntry Customer are exceptions on the inbound side: changes made to those fields or their options in Ramp never update DualEntry companies or customers.

Intercompany billing

The Ramp integration supports two intercompany billing patterns, and they are not mutually exclusive. You can use both depending on the transaction.

Method 1: Line-level entity allocation

A single Ramp bill can be paid by one entity and have its expenses allocated across multiple entities at the line level. The top-level company on the bill is the paying entity (the company that owes the vendor). Each line can then be assigned to a different entity using the DualEntry Entity Accounting Field in Ramp, representing the company that actually incurred that expense. When the bill syncs to DualEntry, intercompany payables and receivables are generated automatically between the paying company and each expensing company on the lines. To enable this pattern:
  1. In DualEntry, go to Configuration → Company → Integrations → Ramp → Settings → Ramp Accounting Field Settings.
  2. Under Entity sync, turn the toggle Active on. Leave Splittable on (the default) so the field is available at the line level of bills.
  3. Save your changes, then trigger a sync.
  4. DualEntry automatically creates a DualEntry Entity Accounting Field in Ramp with one option per active DualEntry company. No manual upload is required.
Company names in DualEntry are the source of truth for this field. If you rename a company in DualEntry, the Accounting Field option in Ramp updates automatically on the next sync. Renaming it directly in Ramp is overwritten back to the DualEntry value.

Method 2: Pay-on-behalf via bank account routing

A second pattern handles the case where one entity pays a Ramp bill on behalf of another, for example, a parent company paying subsidiary expenses centrally. When a Ramp bill is paid, DualEntry checks the bank account used for payment. If that bank account is mapped to a different DualEntry company than the company on the bill, DualEntry treats this as a pay-on-behalf intercompany payment automatically. DualEntry creates:
  • A bill on the expensing company (the entity on the bill).
  • A vendor payment attributed to the paying company (the entity whose bank account was used).
  • Intercompany payable and receivable entries between the two companies, generated when the vendor payment is posted.
No special configuration is required beyond ensuring your bank accounts in Ramp are mapped to the correct DualEntry company in the System Accounts Mapping. DualEntry handles the intercompany entries automatically once the bank account routing identifies the paying entity.

Settings reference

These settings live in DualEntry under Configuration → Company → Integrations → Ramp → Settings and control how transactions flow from Ramp into DualEntry.

Diagnose common sync issues

When a record fails to sync, it appears in the integration error log under Configuration → Company → Integrations → Ramp. Errors on individual records do not block the rest of the sync, so the log is the canonical place to look when a category of transactions stops landing. This section covers the symptom-level checks for the issues you’re most likely to hit; see Resolve specific error messages for the per-error-code resolutions.

Connected but nothing is syncing

The most common cause is incomplete entity mapping. DualEntry does not run the main sync until every Ramp entity has been mapped to a DualEntry company. Open the Ramp Settings panel, choose Companies Mapping, and confirm every entity has a company assigned. If mapping is complete, allow up to two hours for the next scheduled sync, or choose Sync Now to trigger immediately, then check the error log.

Transactions posting to the wrong date

Review your date posting settings under Configuration → Company → Integrations → Ramp → Settings. If transactions are posting in a period you didn’t expect, check whether Map accounting date to posting date in DualEntry matches your intended behavior. Changes only affect future imports; already-synced transactions are not updated retroactively.

Transactions posting to the wrong GL account

Review the account mapping in the Ramp Settings panel under System Accounts Mapping. If a GL account was lost or changed (for example, after a chart of accounts cleanup), remap the affected system accounts.

A bill synced but the vendor payment is missing

DualEntry reports a bill as successfully synced to Ramp (so Ramp marks it as Synced) even if the vendor payment failed to post separately. Check the integration error log for a payment-level error. Common causes:

Card transactions are not coming through

Confirm that the transactions are marked Ready to Sync in Ramp, or whether the Sync Ready filter setting should be turned off for your use case. Confirm that entity mapping is complete for the entity the transactions belong to. Also confirm that the Ramp Credit Card Account is configured for that entity under System Accounts Mapping.

Resolve specific error messages

Specific error messages and duplicate-detection flags show up directly in the integration error log on individual records. Each one points at a precise piece of configuration, master data, or Ramp-side state; the H3s below give you the fix per error.

Entity or system account errors

These errors all point at the same root cause: a missing piece of configuration on a specific company. Open the Ramp Settings panel, choose the relevant tile, and complete the setup for the company named in the error.

A bill is stuck in the error log and retrying doesn’t fix it

If a bill is persistently failing, confirm the bill is in an approved status in Ramp. Bills that are rejected or terminated will not sync. If the bill appears approved in Ramp but is still stuck, recreate it from the recreate path on the error table row. If the error reason is not displayed, contact DualEntry support.

Possible duplicated transaction found

The duplicate detection check flagged this transaction as a potential duplicate of one already in DualEntry. Review the flagged transaction manually. If it is confirmed unique, retry the sync for that record from the error log.

Vendor from Ramp isn’t showing up in DualEntry

Vendors reconcile automatically by name. A mismatch between the Ramp merchant name and an existing DualEntry vendor can create a duplicate vendor. Check your vendor list and merge if needed.

Duplicate accounts appearing in Ramp

This happens when a chart of accounts was manually uploaded in Ramp before connecting DualEntry. Contact DualEntry support; a cleanup script resolves duplicate account mappings.

Result

After completing these steps, Ramp card transactions, bills, reimbursements, statement payments, and cashback flow into DualEntry every two hours, and your DualEntry chart of accounts, vendors, classifications, and, if enabled, entities and customers stay current in Ramp without manual uploads. DualEntry remains the source of truth throughout: renamed or deleted values in Ramp are reconciled automatically, and unrecognized coding is rejected rather than silently imported. DualEntry handles intercompany allocations on bills and pay-on-behalf payments automatically. This happens when the Ramp entity on a bill line, or the bank account on a payment, points at a different DualEntry company. To validate the integration is healthy after each scheduled sync, confirm three things in DualEntry:
  • New Ramp activity appears under the expected company.
  • The integration error log on Configuration → Company → Integrations → Ramp is empty, or every entry is a known exception.
  • The DualEntry Entity, DualEntry Customer, and classification fields in Ramp reflect your current DualEntry master data.
To connect more systems, return to Integrations. For Ramp’s own platform docs, see the Ramp Accounting Overview. For how the resulting bills and vendor payments behave in DualEntry’s AP workflows, see Bill management.
Last modified on August 27, 2026