> ## 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.

# Drop invoice payment confirmation file at SFTP path

> Virtual operation. Tango picks up the file from `inbound/payments/`,
processes each row, and updates the matching invoice's payment record.
Existing payment records can be updated by re-sending the same
`(Invoice_ID, Payment_Number)` combination.




## OpenAPI

````yaml /tango_projects/integrations/guides/invoice-inbound-file.yaml post /inbound/payments
openapi: 3.1.0
info:
  title: Tango Project Invoice Inbound (Payment Confirmation) — File
  version: '0.7'
  description: |
    SFTP file-based inbound integration. Client drops a pipe-delimited text file
    of invoice payment confirmations to Tango's SFTP server. Tango's internal
    batch program picks up the file, updates the Payments tab under Projects →
    Costs → Payments, and moves the source file to the `Processed` folder.

    Uniqueness key: `(Invoice_ID, Payment_Number)`.
  x-direction: inbound
  x-source: Client System
  x-destination: Tango
  x-transport: sftp
  x-file-format: pipe-delimited text (.txt)
  x-file-naming-convention: '{ClientCode}_invoicepayments_MMDDYYYYHHMMSS.txt'
servers:
  - url: sftp://sftp.tangoanalytics.com
    description: Production SFTP host
    x-environment: production
    x-path: inbound/payments/
  - url: sftp://sftpdev.tangoanalytics.com
    description: Test SFTP host (SIT/UAT)
    x-environment: test
    x-path: inbound/payments/
security:
  - sftpUserPassword: []
tags:
  - name: Invoice Payment Inbound
paths:
  /inbound/payments:
    post:
      tags:
        - Invoice Payment Inbound
      summary: Drop invoice payment confirmation file at SFTP path
      description: |
        Virtual operation. Tango picks up the file from `inbound/payments/`,
        processes each row, and updates the matching invoice's payment record.
        Existing payment records can be updated by re-sending the same
        `(Invoice_ID, Payment_Number)` combination.
      operationId: deliverInvoicePaymentFile
      requestBody:
        required: true
        content:
          text/plain:
            schema:
              type: string
              format: binary
              x-record-schema:
                $ref: '#/components/schemas/InvoicePaymentRow'
      responses:
        '200':
          description: File received and queued for processing.
components:
  securitySchemes:
    sftpUserPassword:
      type: http
      scheme: basic
      description: >-
        SFTP user/password — provisioned per environment (values <TBD> in
        source).

````