Tango Project Invoice Inbound (Payment Confirmation) — File
Generated fromTango Project Invoice Inbound (Payment Confirmation) Integration Design v0.7.docxin SharePoint folder04 Projects Integrations. OAS spec:invoice-inbound-file.yaml
Overview
SFTP file-based inbound integration. Client drops a pipe-delimited text file with invoice payment confirmation rows to Tango’s SFTP server; Tango’s batch program reads the file, updates payment records in the Projects → Costs → Payments tab, and moves the file to theProcessed folder.
Owner: Tango Analytics
Spec version: 0.7
Status: Draft (auto-generated from design doc — needs review)
Transport
Tango moves picked-up files to
Processed/ with a timestamp suffix.
Integration logic
- Uniqueness key:
(Invoice_ID, Payment_Number). Re-sending the same combination updates the existing payment record. - Tango never deletes existing payments or invoices.
- After this integration, the invoice status transitions:
Approved→Exported→Paid. - An invoice can only become
Paidif linked to aPaidpayment. - A payment linked to a
Paidinvoice cannot be modified (it must be voided first, then a new payment can be issued). - When
Payment_Status = PAID,Invoice_Statusmust also bePAID; if blank, it defaults toPAID. - Tango does NOT validate that payment amounts sum to the invoice amount.
- Files containing only a header (no data rows) produce a
no records to processservice-log entry.
Data fields
Status-transition matrix (source doc Appendix)
Validations
Open Questions / Assumptions
- SFTP credentials are
<TBD>— supplied per environment. - Timing/frequency is
<TBD>. - Header / Trailer row formats not defined — assumed only the data-mapping table describes Detail rows.
-
Client_IDis described as “to be provided by Tango” but the doc doesn’t say how — assumed it’s a constant per client, embedded in every row.

