Skip to main content

AddInvoicePayment

Records a payment against an invoice. Overflow amounts are split into a separate excess-payment record.

Purpose

Records a payment against an invoice. Returns the new invoice-payment ID. When the payment amount exceeds the invoice's unpaid balance, the API splits the payment automatically: one record is created at the unpaid-balance amount, and a second "excess payment" record is created for the overflow.

Endpoint

  • Method: AddInvoicePayment

  • SOAPAction (1.1): "https://ftservices.onlinereportinginc.com/v2/AddInvoicePayment"

  • Parameter wrapper: <oPayment>

Authentication

Standard credentials apply, supplied inside the <oPayment> wrapper. See Authentication & Authorization.

Parameters

Name

Type

Required

Description

Login

string

yes

Authorized FileTrac system login.

Password

string

yes

Password for the login.

CompanyKey

string

yes

The unique company code provided by FileTrac.

InvoiceID

int

yes

System ID of the invoice. Obtained from GetInvoiceSummaries or GetInvoiceDetail.

PaymentDate

dateTime

no

Payment date. Server default applies if omitted.

PaymentCheckNumber

string

no

Check number associated with the payment.

PaymentAmount

decimal

yes

Amount. Cents optional.

This method does not accept payee fields — the payee on an invoice payment is implicit (the adjusting company's billing entity).

Response

Returns a complex AddInvoicePaymentResult:

Field

Datatype

Description

InvoicePaymentID

int

The new payment's ID on success. 0 on failure.

ResponseMessage

string

Success, or — on payment overflow — the excess-payment record's ID. On failure, a failure-identifying string.

Overflow behavior

When PaymentAmount exceeds the invoice's unpaid balance:

  1. InvoicePaymentID is the ID of the primary payment record, set at the unpaid balance of the invoice (not the requested amount).

  2. ResponseMessage contains the excess payment record's ID — the overflow amount recorded as a separate payment record so the funds are not lost.

Only one excess payment can be recorded per invoice. Once an invoice is paid in full (including any excess), subsequent payment attempts return error (2).

Errors

Error Message

Cause

Remediation

(1) Invoice not found - invalid InvoiceID or InvoiceNumber

The invoice cannot be located.

Confirm InvoiceID via GetInvoiceSummaries.

(2) Invoice has already been paid in full. Unable to apply additional payments

The invoice has zero unpaid balance, and the one allowed excess payment has already been recorded.

No remediation — the invoice is fully resolved.

Remarks

  • Payments are not updateable. No documented void pattern for invoice payments — unlike reserve and deductible payments, this method does not advertise negative-amount void support.

  • Cache the unpaid balance. To avoid overflow surprises, pull GetInvoiceDetail and compute the balance before submitting the payment.

  • Excess payments record once. The split happens server-side on the first overflowing payment. After that, the invoice is closed; further payments fail.

Example Request (SOAP 1.1)

POST /v2/service.asmx HTTP/1.1
Host: ftservices.onlinereportinginc.com
Content-Type: text/xml; charset=utf-8
SOAPAction: "https://ftservices.onlinereportinginc.com/v2/AddInvoicePayment"<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <AddInvoicePayment xmlns="https://ftservices.onlinereportinginc.com/v2/">
      <oPayment>
        <Login>integration.svc</Login>
        <Password>•••••••••</Password>
        <CompanyKey>ACME-AC-001</CompanyKey>
        <InvoiceID>70212</InvoiceID>
        <PaymentDate>2026-05-26T00:00:00</PaymentDate>
        <PaymentCheckNumber>20119</PaymentCheckNumber>
        <PaymentAmount>4250.00</PaymentAmount>
      </oPayment>
    </AddInvoicePayment>
  </soap:Body>
</soap:Envelope>

Example Response (SOAP 1.1) — normal payment

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <AddInvoicePaymentResponse xmlns="https://ftservices.onlinereportinginc.com/v2/">
      <AddInvoicePaymentResult>
        <InvoicePaymentID>91204</InvoicePaymentID>
        <ResponseMessage>Success</ResponseMessage>
      </AddInvoicePaymentResult>
    </AddInvoicePaymentResponse>
  </soap:Body>
</soap:Envelope>

Example Response (SOAP 1.1) — excess payment

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <AddInvoicePaymentResponse xmlns="https://ftservices.onlinereportinginc.com/v2/">
      <AddInvoicePaymentResult>
        <InvoicePaymentID>91205</InvoicePaymentID>
        <ResponseMessage>91206</ResponseMessage>
      </AddInvoicePaymentResult>
    </AddInvoicePaymentResponse>
  </soap:Body>
</soap:Envelope>

In the excess-payment response, 91205 is the primary payment record (at the unpaid-balance amount) and 91206 is the excess-payment record (the overflow). Parse ResponseMessage as an integer when the value is not Success.

Related Methods

Did this answer your question?