> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tangoanalytics.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Vendor inbound file

# Tango Vendor Inbound — File

> Generated from `Tango Vendor Integration Design Specification V0.6.docx` in SharePoint folder `01 Common Integrations`.
> OAS spec: [`vendor-inbound-file.yaml`](./vendor-inbound-file.yaml)

## Overview

SFTP file-based inbound. Client drops a pipe-delimited file of vendor / supplier records. Tango creates new vendors or updates existing ones; inactivation via `status = I`. **Tango never deletes vendors.**

**Owner:** Tango Analytics
**Spec version:** 0.6
**Status:** Draft (auto-generated — needs review)

## Transport

| Attribute | Value | |
| - | - | - |
| Direction | Inbound (Client → Tango) | |
| Mechanism | SFTP file drop | |
| File format | Pipe-delimited (\` | `) text, `.txt\` |
| File naming | `{ClientName}_Vendor_MMDDYYYYHHMMSS.txt` | |
| Production host | `sftp.tangoanalytics.com` | |
| Test host | `sftpdev.tangoanalytics.com` | |
| Path | `/inbound/vendor` | |
| Auth | SFTP user/password (TBD) | |
| Frequency | TBD | |

## Out-of-scope

* Linking the vendor to a lease (UI only).
* Adding / updating contacts attached to the vendor (UI only).

## Integration logic

* Tango never deletes vendors. To remove a vendor, send `status = I`.
* No-update day → client sends no file.
* Empty / header-only file → `no data sent in the file` warning.
* Multiple files at the same time → processed FIFO.

## Data fields (required ✅)

| Field | Type | Req | Sample | Notes |
| - | - | - | - | - |
| `client_id` | NUMBER | ✅ | `76` | Tango client identifier |
| `vendor_number` | VARCHAR | ✅ | `0000041674/01` | Unique vendor number |
| `supplier_site_name` | VARCHAR | ✅ | `Aqualogical - East Side` | Client label "Vendor Name" |
| `supplier_type` | VARCHAR | ✅ | `LEASE` | `LEASE` / `PROJECT` / `ALL` |
| `supplier_site_type` | VARCHAR | ✅ | `Lessee` | Client-defined (Lessee/Payee/Tenant/etc.) |
| `description` | VARCHAR | – | `Design Consultants` | |
| `address_1` / `address_2` / `address_3` | VARCHAR | – | | |
| `is_payee` | VARCHAR | ✅ | `Y` | Y/N |
| `city` / `state` / `zip` | VARCHAR | – | | |
| `country` | VARCHAR | ✅ | `USA` | 3-char ISO |
| `phone_number` | VARCHAR | – | `235-000-0000` | |
| `email` | VARCHAR | – | `jane@consulting.com` | |
| `status` | VARCHAR | ✅ | `A` | `A` Active / `I` Inactive |

## Validations

| Condition | Error message |
| - | - |
| `client_id` missing/invalid | `Fatal Error: Client ID is not available or Invalid` |
| `vendor_number` missing | `Fatal Error: Vendor Number is not available` |
| `supplier_site_name` missing | `Fatal Error: Vendor Name is not available` |
| `supplier_type` missing/invalid | `Fatal Error: Supplier Type is not available or invalid` |
| `supplier_site_type` missing/invalid | `Fatal Error: Supplier Site Type is not available or invalid` |
| `is_payee` missing/invalid | `Fatal Error: IS_PAYEE is not available or invalid` |
| `status` missing/invalid | `Fatal Error: Status is not available or invalid` |
| Empty / header-only | `Warning: No data sent for processing` |

## Open Questions / Assumptions

* [ ] **Field names differ from API variant** — file uses `vendor_number`, `phone_number`, `address_1` (snake\_case with underscore numbers); API uses `Supplier_number`, `business_phone`, `address1`. Confirm both are correct and intentional.
* [ ] **SFTP credentials** are `<TBD>`.
* [ ] **Timing/frequency** is `<TBD>`.
* [ ] **No `payment_*` / `bank_*` / `tax_id` fields** in this file variant (API has them). Confirm whether banking info is intentionally out of scope here.
* [ ] **Lookup codes** are `<TBD>` in Appendix.

## Changelog

| Ver | Date | Description | Author |
| - | - | - | - |
| 0.1 | 09/10/2019 | Initial Draft | Alpna Bansal |
| 0.2 | 12/15/2019 | Updated logic for 1:1 supplier-and-site mapping | Alpna Bansal |
| 0.3 | 01/21/2021 | Updated Data Mapping | Alpna Bansal |
| 0.4 | 09/09/2021 | Updated Data Mapping | Alpna Bansal |
| 0.5 | 09/21/2022 | Reformatted | Jasmin Thasleem |
| 0.6 | 09/18/2023 | Reformatted | Jasmin Thasleem |
