Using Flat Files

Revised: 24 April 2017

Flat File Integration Overview

Coupa Supports Flat File import and download routines natively within the application for loading through automated integrations.  As part of the Integration Services, Coupa created a set of common flat file formats for common Coupa business objects that allow our customers the ability to quickly get high quality integrations running quickly.

Our integration CSV files use the following conventions taken from RFC 4180:

  • The delimiter is a comma: (,)
  • All fields are always text qualified (enclosed) with the double quote character: (")
  • Double quote characters within a field are escaped by another double quote character.  If a user enters: Status is "Green" in a comment field, this would be represented as "Status is ""Green"""
  • New Line characters may be allowed within qualified field values
  • Text-Encoding: UTF-8 without Byte Order Marker (BOM)

As of Release 15, Coupa supports PGP encryption of the files exchanged through SFTP.

SFTP Setup

Each Coupa instance will have a dedicated SFTP account where all file transfers (Inbound and Outbound) are done. SFTP account will be created by the Coupa resource assigned to this specific engagement. Below SFTP details will be sent:

  • hostname and port
  • account name
  • password (will be sent via phone or text)

Inbound Files

  • They are picked up every 3-6 minutes from customers Coupa sFTP site for further processing. This schedule is standard across all Coupa customer for all Coupa objects and can’t be modified.
  • Exception to above rule are the Credit Card files (related to expense) which are processed based on a Scheduled Job which can be timed based on Customer request.
  • Once the file corresponding to each object is processed it is moved to the corresponding Archive folder.
  • Errors corresponding to files structure or data created/updated/errored can be viewed from https://{instance_url}/data_sources page.

Outbound Files

  • Files can be generated based on Object Specific Scheduled Job within Coupa and accordingly files are sent to Customer’s sFTP folder for further use.
  • It is Customers Middleware/ERP responsibility to take and process the files from Coupa sFTP site.

How to create Invoices using SFTP

Invoice files can be deposited in the Coupa SFTP at /Incoming/Invoices/ folder. Coupa regularly scans these files for any new inbound files, and they will be processed to create new Invoices.

Invoices with or without attachments can be created using the SFTP integration. When sending Invoices with attachments, the attachments and scanned images must be compressed in a zip file before depositing in SFTP.

Maximum attachment size supported is 8MB, and recommended size is 2MB or less.

File format and specifications are available in the wiki here.

File Storage Policy

Coupa SFTP should be used for exchanging files, and not for storing or archiving the files. All outbound files from Coupa will be placed under the respective outbound folders, and customer system should pick up the file, process it and delete the file from Coupa SFTP once processed. Partners may archive outbound the file in their system

All inbound files to Coupa, files are picked up and start processing within couple of minutes, once successfully picked up, files are archived under /Archive/Incoming. Archive files are moved to AWS backup after 2 weeks timeframe.

You can also download files directly from the File Status page in Coupa.

Error Handling

All inbound and outbound file transfers are listed in the Coupa UI. The fie status can be accessed in Coupa at Setup > File Status. If there are any errors, the File Status page will be updated with an error message.

Best Practices

Inbound Files

  • Latest template for each object should be pulled from UI through the object specific load from file > CSV template and not the templates specified on integrate.coupa.com
  • Each Inbound object file should not have more than 5000 rows (excluding the header row) and processing files parallely rather than creating one large file.
  • Avoiding loading of dependency object files at same time. Ex: Not Loading the Supplier, Item and corresponding Supplier-Item file at same time, but loading the supplier and Item file first and then the supplier item file.
  • For a small data set, creating the data manually through UI and not using integration for same. Ex: 3 rows of Chart of Accounts

Outbound Files

  • Outbound files once processed must be deleted from the Coupa sFTP site of your Customer. This also helps in avoiding any system space issue over time.
  • Outbound Scheduled Jobs should be timed to generate file with a sufficient data and avoiding generating one big file at end of day. Ex: If Daily Approved Invoices are 40,000, then schedule the job to run every 1 hr. to send the data in small batches and not a file with 40,000 rows at end of day.