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:
AddInvoicePaymentSOAPAction (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 |
| string | yes | Authorized FileTrac system login. |
| string | yes | Password for the login. |
| string | yes | The unique company code provided by FileTrac. |
| int | yes | System ID of the invoice. Obtained from |
| dateTime | no | Payment date. Server default applies if omitted. |
| string | no | Check number associated with the payment. |
| 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 |
| int | The new payment's ID on success. |
| string |
|
Overflow behavior
When PaymentAmount exceeds the invoice's unpaid balance:
InvoicePaymentIDis the ID of the primary payment record, set at the unpaid balance of the invoice (not the requested amount).ResponseMessagecontains 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 |
| The invoice cannot be located. | Confirm |
| 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
GetInvoiceDetailand 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
GetInvoiceDetail— pull unpaid balance before paying.GetInvoiceSummaries— find theInvoiceID.AddDeductiblePayment,AddReservePayment— sibling payment methods.Invoice— the parent type.Payment— the abstract Payment type.
