---
title: "Upload flat file and process via data file source"
method: POST
path: "/data_file_sources/load_from_sftp"
tags: ["DataFileSource"]
---

# Upload flat file and process via data file source

`POST /data_file_sources/load_from_sftp`

## Request

- Base URL: `https://r38.coupadev.com/api`
- URL: `https://r38.coupadev.com/api/data_file_sources/load_from_sftp`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://r38.coupadev.com/oauth2/authorizations/new`
    - Token URL: `https://r38.coupadev.com/oauth2/token`
  - OAuth 2
    - Client credentials
    - Token URL: `https://r38.coupadev.com/oauth2/access_tokens`
- TypeScript: <https://skmtc.dev/coupa/apis/coupa-api-4/docs/data_file_sources/load_from_sftp/post.ts> (a function with typed inputs; its response is checked against the schema)

Upload flat file and process via data file source

## Query parameters

- `return_object` 'limited' | 'shallow' | 'none'
- `filter` string

## Request body

- DataFileSource
  - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `created-by` UserSimple
    - `avatar-thumb-url` string, string: Avatar url
    - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `email` string, string(255), required: email
    - `employee-number` string, string(255): employee number
    - `firstname` string, string(40), required: first name
    - `fullname` string, string(255): full name
    - `id` integer: Coupa unique identifier
    - `lastname` string, string(40), required: last name
    - `login` string, string(255), required: login
    - `salesforce-id` string, string(255), required: salesforce_id
    - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `end-time` string, datetime: end_time
  - `file-content-type` string, string(255): file_content_type
  - `file-file-name` string, string(255): file_file_name
  - `file-file-size` string, string(255): file_file_size
  - `id` integer: Coupa unique identifier
  - `integration-id` integer: Unique identifier for integration
  - `integration-run-id` integer: Unique identifier for integration run
  - `progress` integer: progress
  - `records-count` integer: number of records in the CSV (grouping of related header + lines)
  - `records-created` integer: number of records created
  - `records-updated` integer: number of records updated
  - `result-text` string, text: result_text
  - `source-for` string, string(50), required: source_for
  - `start-time` string, datetime: start_time
  - `status` string, string(50): transaction status
  - `type` string, string(50): type
  - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `updated-by` UserSimple
    - `avatar-thumb-url` string, string: Avatar url
    - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `email` string, string(255), required: email
    - `employee-number` string, string(255): employee number
    - `firstname` string, string(40), required: first name
    - `fullname` string, string(255): full name
    - `id` integer: Coupa unique identifier
    - `lastname` string, string(40), required: last name
    - `login` string, string(255), required: login
    - `salesforce-id` string, string(255), required: salesforce_id
    - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `upload-errors` UploadError[]
    - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `created-by` UserSimple
      - `avatar-thumb-url` string, string: Avatar url
      - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
      - `email` string, string(255), required: email
      - `employee-number` string, string(255): employee number
      - `firstname` string, string(40), required: first name
      - `fullname` string, string(255): full name
      - `id` integer: Coupa unique identifier
      - `lastname` string, string(40), required: last name
      - `login` string, string(255), required: login
      - `salesforce-id` string, string(255), required: salesforce_id
      - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `field-errors` string, text, required: field_errors
    - `field-with-error` string, string(255): field_with_error
    - `first-column` string, string(255): first_column
    - `id` integer: Coupa unique identifier
    - `row` integer: row
    - `type` string, string(255): type
    - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `updated-by` UserSimple
      - `avatar-thumb-url` string, string: Avatar url
      - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
      - `email` string, string(255), required: email
      - `employee-number` string, string(255): employee number
      - `firstname` string, string(40), required: first name
      - `fullname` string, string(255): full name
      - `id` integer: Coupa unique identifier
      - `lastname` string, string(40), required: last name
      - `login` string, string(255), required: login
      - `salesforce-id` string, string(255), required: salesforce_id
      - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `value` string, string(255): value
  - `upload-errors-count` integer: number of upload errors

## Response `201`

Created

- DataFileSource
  - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `created-by` UserSimple
    - `avatar-thumb-url` string, string: Avatar url
    - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `email` string, string(255), required: email
    - `employee-number` string, string(255): employee number
    - `firstname` string, string(40), required: first name
    - `fullname` string, string(255): full name
    - `id` integer: Coupa unique identifier
    - `lastname` string, string(40), required: last name
    - `login` string, string(255), required: login
    - `salesforce-id` string, string(255), required: salesforce_id
    - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `end-time` string, datetime: end_time
  - `file-content-type` string, string(255): file_content_type
  - `file-file-name` string, string(255): file_file_name
  - `file-file-size` string, string(255): file_file_size
  - `id` integer: Coupa unique identifier
  - `integration-id` integer: Unique identifier for integration
  - `integration-run-id` integer: Unique identifier for integration run
  - `progress` integer: progress
  - `records-count` integer: number of records in the CSV (grouping of related header + lines)
  - `records-created` integer: number of records created
  - `records-updated` integer: number of records updated
  - `result-text` string, text: result_text
  - `source-for` string, string(50), required: source_for
  - `start-time` string, datetime: start_time
  - `status` string, string(50): transaction status
  - `type` string, string(50): type
  - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `updated-by` UserSimple
    - `avatar-thumb-url` string, string: Avatar url
    - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `email` string, string(255), required: email
    - `employee-number` string, string(255): employee number
    - `firstname` string, string(40), required: first name
    - `fullname` string, string(255): full name
    - `id` integer: Coupa unique identifier
    - `lastname` string, string(40), required: last name
    - `login` string, string(255), required: login
    - `salesforce-id` string, string(255), required: salesforce_id
    - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `upload-errors` UploadError[]
    - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `created-by` UserSimple
      - `avatar-thumb-url` string, string: Avatar url
      - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
      - `email` string, string(255), required: email
      - `employee-number` string, string(255): employee number
      - `firstname` string, string(40), required: first name
      - `fullname` string, string(255): full name
      - `id` integer: Coupa unique identifier
      - `lastname` string, string(40), required: last name
      - `login` string, string(255), required: login
      - `salesforce-id` string, string(255), required: salesforce_id
      - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `field-errors` string, text, required: field_errors
    - `field-with-error` string, string(255): field_with_error
    - `first-column` string, string(255): first_column
    - `id` integer: Coupa unique identifier
    - `row` integer: row
    - `type` string, string(255): type
    - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `updated-by` UserSimple
      - `avatar-thumb-url` string, string: Avatar url
      - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
      - `email` string, string(255), required: email
      - `employee-number` string, string(255): employee number
      - `firstname` string, string(40), required: first name
      - `fullname` string, string(255): full name
      - `id` integer: Coupa unique identifier
      - `lastname` string, string(40), required: last name
      - `login` string, string(255), required: login
      - `salesforce-id` string, string(255), required: salesforce_id
      - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `value` string, string(255): value
  - `upload-errors-count` integer: number of upload errors

## Other responses

- `400`: Bad Request

---

[API](https://skmtc.dev/coupa/apis/coupa-api-4.md) - [All operations](https://skmtc.dev/coupa/apis/coupa-api-4/llms.txt) - [OpenAPI document](https://skmtc.dev/coupa/apis/coupa-api-4/revisions/adc09cabd758?raw)
