Skip to main content

AvidXchange Integration: Setup and File Exchange

Connect AvidXchange, an accounts payable automation provider, to DualEntry to exchange three kinds of data as CSV files: your vendors, the bills AvidXchange captures, and the payments you make against those bills. DualEntry pushes vendors and bill payments to AvidXchange and imports bills from AvidXchange, keeping a copy of every file so you can audit each exchange. The integration is file-based and user-driven rather than a continuous live sync.

Prerequisites

Confirm the following before using the integration:
  • An AvidXchange account, with AvidXchange’s onboarding team having configured your organization on their side. AvidXchange provisions the file exchange location for you; DualEntry does not self-serve that step.
  • A DualEntry classification that represents your AvidXchange locations. DualEntry matches each bill line’s AvidXchange location to a classification line by name, so the names must align.
  • Four custom fields configured in DualEntry and registered in the integration settings: an invoice number and invoice URL field (applied to bills), a project ID field, and an “Is AvidXchange vendor” checkbox field (applied to vendors).
  • Your chart of accounts set up, because imported bill lines map to GL accounts by account number. A bill line referencing an account number that does not exist fails the import.
  • A default bank account on each company that pays bills through AvidXchange. Bill payments draw on the paying company’s default bank account.
AvidXchange configures the file exchange for your organization during onboarding. Until AvidXchange has set up your side, file pushes and imports have nowhere to land. Coordinate go-live with your AvidXchange contact.

Onboard with AvidXchange

Onboarding with AvidXchange includes several steps and usually takes a few weeks. These steps include:
  • Bill export template set up within AvidXchange. Contact your DualEntry CX representative who provides an invoice export template for your AvidXchange rep to set up.
  • Contact your DualEntry CX representative to request a dedicated file server setup within DualEntry. DualEntry then provides details on how to connect to this file server for you to share with your AvidXchange contact. AvidXchange then tests the connection and confirms successful file transfer.
  • Manually update your chart of accounts, vendors and companies or locations within AvidXchange to align with the desired setup in DualEntry.
  • Finally, once setup and testing have completed, a cut-over period is implemented. This period could range from one day to a week, depending on your preference. You cease to process bills within AvidXchange for a period of time and test file transfer with live bills and payment instruction files.

How the AvidXchange file exchange works

DualEntry and AvidXchange exchange data as CSV files rather than through a real-time API, and every exchange is recorded so you can trace it later. There are three exchange types, each flowing in one direction.
  • Vendors push (DualEntry to AvidXchange). DualEntry serializes the vendors you have flagged as AvidXchange vendors and sends them to AvidXchange.
  • Bill upload (AvidXchange to DualEntry). You upload a CSV of bills in DualEntry that have been manually exported from AvidXchange, in the Bill import template format as implemented during the set-up phase. DualEntry then creates these as bills within your account.
  • Bill payments push (DualEntry to AvidXchange). DualEntry sends the payments you make against AvidXchange bills back to AvidXchange for processing.
Every exchange produces a file exchange record with a status of created, pending, completed, or failed, plus the row count and a downloadable copy of the file. There are no scheduled syncs: vendor pushes fire when a flagged vendor changes, and bill imports and payment pushes happen when you act in DualEntry. This design keeps AvidXchange as the system that captures and routes invoices while DualEntry holds the resulting bills, vendor payments, and ledger impact.

Configure the integration

Set up the integration once so DualEntry knows which classification and custom fields drive the AvidXchange exchange.
  1. In DualEntry, create the AvidXchange integration from Settings → Integrations → AvidXchange. The integration connects immediately because it relies on the file exchange location AvidXchange provisions, not on credentials you enter.
  2. Create the four custom fields the integration needs, if they do not already exist: invoice number, invoice URL, project ID, and an “Is AvidXchange vendor” checkbox.
  3. Register each custom field and the AvidXchange location classification in the integration settings. DualEntry treats setup as incomplete until all four custom field settings, the location classification setting, and the classification itself are present.
  4. Mark the vendors you transact with through AvidXchange by setting their “Is AvidXchange vendor” field to true. Only flagged vendors are included in the vendor push.
After these settings are in place, DualEntry reports the integration as set up and the three exchange flows become available.

Sync vendors to AvidXchange

DualEntry pushes vendor master data to AvidXchange so payments route to the right payee. Only vendors whose “Is AvidXchange vendor” field is set to true are included. The push runs automatically when a flagged vendor changes, with no fixed schedule. DualEntry reads the current set of AvidXchange vendors, serializes them to CSV, and sends the whole set to AvidXchange rather than only the changed record, so AvidXchange always receives a complete, current list. Each vendor record carries its name, name on check, address, contact details, vendor type, active status, and bank account details (account number, routing number, and account type) used for payment routing. Because the push re-sends every flagged vendor, the file AvidXchange receives reflects your latest vendor data at the moment of the change. To add a vendor to the exchange, set its “Is AvidXchange vendor” field to true; to stop sending one, clear the field. DualEntry skips the push entirely when no vendors are flagged.
The vendor and bill payment files include bank account and routing numbers and vendor tax IDs. Treat the downloadable exchange copies as sensitive, and restrict who can view the AvidXchange integration’s file exchange history.

Import bills from AvidXchange

DualEntry imports bills from a CSV that AvidXchange produces, turning each invoice into a bill in your ledger. You upload the file from the AvidXchange integration; DualEntry validates and processes it in the background.
  1. Export the bills CSV from AvidXchange.
  2. In DualEntry, upload the file on the AvidXchange integration page. The file must be a .csv under 10 MB.
  3. DualEntry validates each row against the AvidXchange bill schema and stores the file. Processing then runs asynchronously.
DualEntry groups the CSV rows by invoice number and creates one bill per invoice, with one expense line per row. Each line maps to a GL account by account number and, when present, to a classification line matched by name. DualEntry records the invoice number and invoice URL on the bill through the custom fields you configured. When a line’s expensing company differs from the paying company, DualEntry sets the expensing company on that line so intercompany bills post correctly. Bill import is all-or-nothing per file. If any invoice in the file fails to create, DualEntry rolls back the entire upload and marks the file exchange failed with the per-invoice errors. Fix the flagged rows and upload the file again.

Pay bills through AvidXchange

DualEntry creates vendor payments for the AvidXchange bills you select and pushes them to AvidXchange for processing. You choose the bills and the amount to pay for each. For each selected bill, DualEntry creates a posted vendor payment drawn on the paying company’s default bank account, assigns the next check number in that account’s sequence, and includes the bill’s invoice number. It then serializes the payments to CSV and pushes the file to AvidXchange. The whole operation is atomic: either every payment is created and pushed, or none are. Before creating payments, DualEntry validates that every selected bill exists, that each paying company has a default bank account, and that the account is active. If any check fails, the request is rejected and no payments are created. Bill payments currently support USD only; the exchange rate is fixed at 1.

Review file exchange history

Every push and import is recorded so you can confirm what was sent or received and download the exact file. Use the file exchange history on the AvidXchange integration to audit activity. Each record shows the exchange type (vendors, bills upload, or bill payments), its status (created, pending, completed, or failed), the row count, the file size, who initiated it, and when. You can filter by type, status, and date range, and generate a download link for the stored CSV. Download links are presigned and expire after 24 hours, so generate a fresh link each time you need the file. Failed records carry the error message that explains why the exchange did not complete.

Current limitations

A few constraints are worth knowing before you rely on the integration:
  • USD bill payments only. Payments push at an exchange rate of 1. Non-USD bills cannot be paid through AvidXchange yet.
  • No scheduled sync. Vendor pushes are triggered by vendor changes, and bill imports and payment pushes are manual. There is no periodic background sync.
  • Flagged vendors only. Vendors without the “Is AvidXchange vendor” field set to true are never pushed.
  • AvidXchange-managed onboarding. AvidXchange configures the exchange location for your organization. You cannot complete the connection entirely from within DualEntry.
  • CSV size cap. A bills upload file must be under 10 MB.

Troubleshoot exchange errors

When an exchange fails or a record does not appear, the most common causes are below.
SymptomCauseResolution
Integration shows setup incompleteA required custom field setting or the location classification is missing or points to a deleted record.Configure all four custom fields and the location classification, and confirm the classification still exists.
Bills upload rejected immediatelyThe file is not a .csv, is empty, or exceeds 10 MB.Re-export from AvidXchange as CSV under 10 MB and upload again.
Bills upload marked failedOne or more invoices reference a missing GL account number, an unmatched classification name, or a missing posting date.Read the per-invoice errors on the failed exchange, correct the source data or mapping, and re-upload. The import is all-or-nothing.
Bill payment request rejectedA selected bill does not exist, a paying company has no default bank account, or its default bank account is inactive.Set an active default bank account on each paying company and confirm the bill IDs, then retry.
Vendor not appearing in AvidXchangeThe vendor’s “Is AvidXchange vendor” field is not set to true.Set the field to true. The vendor is included on the next push.

For maintainers

The details below describe connector configuration and internal endpoints, not user-facing features. The connector is named avid internally.
  • File storage: exchange copies are written to s3://{S3_BUCKET}/integrations/avid/{org_id}/{exchange_type}_{timestamp}.csv. Presigned download URLs expire after 86400 seconds (24 hours).
  • Exchange types (AvidFileExchangeType): vendors, bills_upload, bill_payments. Statuses (AvidFileExchangeStatus): created, pending, completed, failed.
  • Required settings (category avid): AVID_LOCATION_CLASSIFICATION_ID, AVID_INVOICE_NUMBER_CUSTOM_FIELD_ID, AVID_INVOICE_URL_CUSTOM_FIELD_ID, AVID_PROJECT_ID_CUSTOM_FIELD_ID, and AVID_IS_AVID_VENDOR_CUSTOM_FIELD_ID.
  • API endpoints (router Integrations - Avid): POST / create integration; GET {integration_id}/file-exchanges/ history with filters; GET {integration_id}/file-exchanges/{exchange_id}/download_url/ presigned download; POST {integration_id}/bills/upload/ upload bills CSV; POST {integration_id}/bill-payments/ create and push payments.
  • Async processing: process_avid_bills_upload (Celery) parses and creates bills; maybe_sync_avid_vendors pushes vendors on change. Bills are created with per-invoice savepoints inside one transaction, so any failure rolls back the whole file.
  • Status page: https://avidascend.betteruptime.com/.

Result

After completing these steps, you can push your AvidXchange vendors and bill payments to AvidXchange and import AvidXchange bills into DualEntry, with every exchange recorded and downloadable for audit. AvidXchange remains the system that captures and routes invoices; DualEntry holds the resulting bills, vendor payments, and ledger impact. To compare other AP integrations, see Bill.com and Ramp. To connect additional systems, return to Integrations.
Last modified on June 10, 2026