Recurring Billing & Customer Info

AddRecurringCreditCard
Endpoint URL:
https://secure.ftipgw.com/admin/ws/recurring.asmx?op=AddRecurringCreditCard
Method: Supports both SOAP POST and HTTP POST (form-encoded)
Description: Creates a new recurring credit card billing contract by adding a customer profile, a recurring contract, and a payment method in a single API call. This endpoint simplifies recurring billing setup by consolidating multiple setup steps into a single request.
Request Parameters
UserName
string
Yes
Admin user name for authentication
Password
string
Yes
Admin user password
Vendor
string
Yes
Merchant identifier (numeric key)
CustomerID
string
Yes
Unique customer identifier provided by the merchant
CustomerName
string
Yes
Full name of the customer
FirstName
string
No
Customer’s first name
LastName
string
No
Customer’s last name
Title
string
No
Customer’s title
Department
string
No
Customer’s department
Street1
string
No
Address line 1
Street2
string
No
Address line 2
Street3
string
No
Address line 3
City
string
No
City
StateID
string
No
2-character U.S. state abbreviation
Province
string
No
Province (used for international addresses)
Zip
string
No
Postal/ZIP code
CountryID
string
No
3-character country code (default is "USA")
string
No
Email address
Mobile
string
No
Mobile phone number
DayPhone
string
No
Daytime phone number
Fax
string
No
Fax number
ContractID
string
Yes
Unique contract ID assigned by the merchant
ContractName
string
No
Descriptive name for the billing contract
BillAmt
string
Yes
Billing amount per cycle
TaxAmt
string
No
Tax amount
TotalAmt
string
Yes
Total amount to bill (must equal BillAmt + TaxAmt)
StartDate
string
Yes
Contract start date (must be at least one day in the future)
EndDate
string
No
Optional end date; omit for indefinite billing
BillingPeriod
string
Yes
One of: DAY, WEEK, MONTH, or YEAR
BillingInterval
string
Yes
Frequency for the selected billing period (e.g., every 2 months)
MaxFailures
string
No
Number of allowed consecutive failures before suspension
FailureInterval
string
No
Days between retry attempts after failure
EmailCustomer
string
No
TRUE/FALSE – send customer email confirmation
EmailMerchant
string
No
TRUE/FALSE – send merchant email confirmation
EmailCustomerFailure
string
No
TRUE/FALSE – notify customer on failure
EmailMerchantFailure
string
No
TRUE/FALSE – notify merchant on failure
CcAccountNum
string
Yes
Credit card number (digits only)
CcExpDate
string
Yes
Expiration date (MMYY format)
CcNameOnCard
string
No
Name as it appears on the card
CcStreet
string
No
Billing address street line
CcZip
string
No
Billing ZIP/postal code
ExtData
string
No
Optional extended data (XML string for custom fields)
Notes
This endpoint is designed for quick setup of a full recurring billing profile in one request. It simultaneously creates the customer, the billing contract, and the associated payment method.
The StartDate must be at least one day in the future. Attempts to use today's date will result in a validation error.
BillingPeriod and BillingInterval determine the recurrence schedule. For example,
BillingPeriod=MONTH
andBillingInterval=1
means monthly billing.The CcAccountNum and CcExpDate fields are required for creating the credit card payment method. If you instead want to use a tokenized payment method, a different endpoint should be used.
If TotalAmt ≠ BillAmt + TaxAmt, the request will fail.
Optional fields such as EmailCustomer, EmailMerchant, and their failure variants provide control over automated email notifications.
The ExtData field supports gateway- or partner-specific extensions via embedded XML. For most merchants, this can be left blank.
SOAP 1.1
The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.tpisoft.com/Admin/ws/AddRecurringCreditCard"
<?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>
<AddRecurringCreditCard xmlns="http://www.tpisoft.com/Admin/ws">
<Username>string</Username>
<Password>string</Password>
<Vendor>string</Vendor>
<CustomerID>string</CustomerID>
<CustomerName>string</CustomerName>
<FirstName>string</FirstName>
<LastName>string</LastName>
<Title>string</Title>
<Department>string</Department>
<Street1>string</Street1>
<Street2>string</Street2>
<Street3>string</Street3>
<City>string</City>
<StateID>string</StateID>
<Province>string</Province>
<Zip>string</Zip>
<CountryID>string</CountryID>
<Email>string</Email>
<DayPhone>string</DayPhone>
<NightPhone>string</NightPhone>
<Fax>string</Fax>
<Mobile>string</Mobile>
<ContractID>string</ContractID>
<ContractName>string</ContractName>
<BillAmt>string</BillAmt>
<TaxAmt>string</TaxAmt>
<TotalAmt>string</TotalAmt>
<StartDate>string</StartDate>
<EndDate>string</EndDate>
<BillingPeriod>string</BillingPeriod>
<BillingInterval>string</BillingInterval>
<MaxFailures>string</MaxFailures>
<FailureInterval>string</FailureInterval>
<EmailCustomer>string</EmailCustomer>
<EmailMerchant>string</EmailMerchant>
<EmailCustomerFailure>string</EmailCustomerFailure>
<EmailMerchantFailure>string</EmailMerchantFailure>
<CcAccountNum>string</CcAccountNum>
<CcExpDate>string</CcExpDate>
<CcNameOnCard>string</CcNameOnCard>
<CcStreet>string</CcStreet>
<CcZip>string</CcZip>
<ExtData>string</ExtData>
</AddRecurringCreditCard>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?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>
<AddRecurringCreditCardResponse xmlns="http://www.tpisoft.com/Admin/ws">
<AddRecurringCreditCardResult>
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</AddRecurringCreditCardResult>
</AddRecurringCreditCardResponse>
</soap:Body>
</soap:Envelope>
HTTP POST
The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx/AddRecurringCreditCard HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Username=string&Password=string&Vendor=string&CustomerID=string&CustomerName=string&FirstName=string&LastName=string&Title=string&Department=string&Street1=string&Street2=string&Street3=string&City=string&StateID=string&Province=string&Zip=string&CountryID=string&Email=string&DayPhone=string&NightPhone=string&Fax=string&Mobile=string&ContractID=string&ContractName=string&BillAmt=string&TaxAmt=string&TotalAmt=string&StartDate=string&EndDate=string&BillingPeriod=string&BillingInterval=string&MaxFailures=string&FailureInterval=string&EmailCustomer=string&EmailMerchant=string&EmailCustomerFailure=string&EmailMerchantFailure=string&CcAccountNum=string&CcExpDate=string&CcNameOnCard=string&CcStreet=string&CcZip=string&ExtData=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<RecurringResult xmlns="http://www.tpisoft.com/Admin/ws">
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</RecurringResult>
AddRecurringCheck
Endpoint URL:
https://secure.ftipgw.com/admin/ws/recurring.asmx?op=AddRecurringCheck
Method: Supports SOAP POST and HTTP POST (form-encoded)
Description: Adds a new recurring check-based billing contract by creating a customer profile, a billing contract, and a check payment method in one call. Useful for recurring ACH billing setups.
Request Parameters
UserName
string
Yes
Admin username
Password
string
Yes
Admin password
Vendor
string
Yes
Merchant/Vendor key
CustomerID
string
Yes
Merchant-supplied unique customer ID
CustomerName
string
Yes
Full customer name
FirstName
string
No
Customer first name
LastName
string
No
Customer last name
Title
string
No
Title
Department
string
No
Department
Street1
string
No
Address line 1
Street2
string
No
Address line 2
Street3
string
No
Address line 3
City
string
No
City
StateID
string
No
2-character state code
Province
string
No
Province (for non-US)
Zip
string
No
Postal code
CountryID
string
No
3-character country code
string
No
Email address
DayPhone
string
No
Daytime phone
Fax
string
No
Fax number
Mobile
string
No
Mobile phone
ContractID
string
Yes
Merchant-supplied contract ID
ContractName
string
No
Billing contract name
BillAmt
string
Yes
Billing amount per cycle
TaxAmt
string
No
Tax amount
TotalAmt
string
Yes
Must equal BillAmt + TaxAmt
StartDate
string
Yes
Contract start date
EndDate
string
No
Optional end date; omit for indefinite schedule
BillingPeriod
string
Yes
DAY, WEEK, MONTH, or YEAR
BillingInterval
string
Yes
Frequency for billing period
MaxFailures
string
No
Max retries before suspension
FailureInterval
string
No
Days between failure retries
EmailCustomer
string
No
TRUE/FALSE – notify customer on success
EmailMerchant
string
No
TRUE/FALSE – notify merchant on success
EmailCustomerFailure
string
No
TRUE/FALSE – notify customer on failure
EmailMerchantFailure
string
No
TRUE/FALSE – notify merchant on failure
CheckType
string
Yes
PERSONAL or BUSINESS
AccountType
string
Yes
CHECKING or SAVINGS
CheckNum
string
No
Check number
MICR
string
No
MICR line (optional when account info is present)
AccountNum
string
Yes
Bank account number
TransitNum
string
Yes
Bank routing number
SS
string
No
SSN of the check holder
DOB
string
No
Date of birth
BranchCity
string
No
Bank branch city
DL
string
No
Driver’s license number
StateCode
string
No
State code on the license
NameOnCheck
string
No
Name printed on the check
ExtData
string
No
Optional XML string for additional metadata
Notes
Combines creation of a customer, billing contract, and ACH/check payment method into a single request.
StartDate is required and must be a valid future date.
Omitting EndDate results in an indefinite billing contract.
CheckType must be either
PERSONAL
orBUSINESS
; AccountType must beCHECKING
orSAVINGS
.TotalAmt must match the sum of BillAmt and TaxAmt, or the request will be rejected.
MICR input is optional if CheckNum, AccountNum, and TransitNum are provided.
Notifications can be configured for both customer and merchant on success and failure.
Response includes RecurringResult with elements such as
CustomerKey
,ContractKey
,CheckInfoKey
,code
,error
,AuthCode
, andPNRef
.
ManageCheckInfo
Endpoint URL:
https://secure.ftipgw.com/admin/ws/recurring.asmx?op=ManageCheckInfo
Method: Supports SOAP POST, HTTP POST, and HTTP GET (form-encoded)
Description: Adds, updates, or deletes stored ACH/check account information for an existing customer. This endpoint is used to manage the customer’s check payment method, particularly in the context of recurring billing.
Request Parameters
UserName
string
Yes
Admin username
Password
string
Yes
Admin password
TransType
string
Yes
ADD, UPDATE, or DELETE
Vendor
string
Yes
Merchant numeric key
CustomerKey
string
Yes
Unique key for the customer
CheckInfoKey
string
Conditional
Required for UPDATE or DELETE to identify record
CheckType
string
Yes
PERSONAL or BUSINESS
AccountType
string
Yes
CHECKING or SAVINGS
CheckNum
string
No
Check number
MICR
string
No
Scanned MICR line data
AccountNum
string
Yes
Bank account number
TransitNum
string
Yes
Bank routing number
SS
string
No
SSN of the check holder
DOB
string
No
Date of birth of the check holder
BranchCity
string
No
Bank branch city
DL
string
No
Driver's license number
StateCode
string
No
State code on the license
NameOnCheck
string
No
Printed name on the check
string
No
Customer email address
DayPhone
string
No
Daytime phone number
Street1
string
No
Address line 1
Street2
string
No
Address line 2
Street3
string
No
Address line 3
City
string
No
Customer city
StateID
string
No
2-character state code
Province
string
No
Province (for non-US addresses)
PostalCode
string
No
Postal or ZIP code
CountryID
string
No
3-character country code (e.g., USA, CAN)
ExtData
string
No
Optional metadata via XML
Notes
TransType controls the action: Use
ADD
to create a new check method,UPDATE
to modify existing check info, andDELETE
to remove it.CheckInfoKey
is required for bothUPDATE
andDELETE
.Dual protocol support: This endpoint accepts SOAP requests and standard HTTP GET or POST (form-encoded), offering integration flexibility.
MICR vs. Account Fields: You may provide either MICR string or discrete fields like
CheckNum
,AccountNum
, andTransitNum
, depending on how your system captures check data.Supplementary identity fields: Fields like
SS
,DOB
,DL
, andStateCode
support extended identity verification and risk assessment but are optional.Response behavior: A successful response returns a
RecurringResult
object includingCustomerKey
,CheckInfoKey
,Result
,AuthCode
,PNRef
, andMessage
. If relevant, it may also include billing contract information or status of the last transaction attempt.
SOAP 1.1
The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.tpisoft.com/Admin/ws/ManageCheckInfo"
<?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>
<ManageCheckInfo xmlns="http://www.tpisoft.com/Admin/ws">
<Username>string</Username>
<Password>string</Password>
<TransType>string</TransType>
<Vendor>string</Vendor>
<CustomerKey>string</CustomerKey>
<CheckInfoKey>string</CheckInfoKey>
<CheckType>string</CheckType>
<AccountType>string</AccountType>
<CheckNum>string</CheckNum>
<MICR>string</MICR>
<AccountNum>string</AccountNum>
<TransitNum>string</TransitNum>
<RawMICR>string</RawMICR>
<SS>string</SS>
<DOB>string</DOB>
<BranchCity>string</BranchCity>
<DL>string</DL>
<StateCode>string</StateCode>
<NameOnCheck>string</NameOnCheck>
<Email>string</Email>
<DayPhone>string</DayPhone>
<Street1>string</Street1>
<Street2>string</Street2>
<Street3>string</Street3>
<City>string</City>
<StateID>string</StateID>
<Province>string</Province>
<PostalCode>string</PostalCode>
<CountryID>string</CountryID>
<ExtData>string</ExtData>
</ManageCheckInfo>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?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>
<ManageCheckInfoResponse xmlns="http://www.tpisoft.com/Admin/ws">
<ManageCheckInfoResult>
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</ManageCheckInfoResult>
</ManageCheckInfoResponse>
</soap:Body>
</soap:Envelope>
HTTP POST
The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx/ManageCheckInfo HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Username=string&Password=string&TransType=string&Vendor=string&CustomerKey=string&CheckInfoKey=string&CheckType=string&AccountType=string&CheckNum=string&MICR=string&AccountNum=string&TransitNum=string&RawMICR=string&SS=string&DOB=string&BranchCity=string&DL=string&StateCode=string&NameOnCheck=string&Email=string&DayPhone=string&Street1=string&Street2=string&Street3=string&City=string&StateID=string&Province=string&PostalCode=string&CountryID=string&ExtData=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<RecurringResult xmlns="http://www.tpisoft.com/Admin/ws">
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</RecurringResult>
ManageCreditCardInfo
Endpoint URL:
https://secure.ftipgw.com/admin/ws/recurring.asmx?op=ManageCreditCardInfo
Method: Supports SOAP POST and HTTP POST (form-encoded)
Description: Adds, updates, or deletes stored credit card information for an existing customer. Commonly used in recurring billing workflows.
Request Parameters
UserName
string
Yes
Admin username
Password
string
Yes
Admin password
TransType
string
Yes
ADD, UPDATE, or DELETE
Vendor
string
Yes
Merchant numeric key
CustomerKey
string
Yes
Unique customer key
CardInfoKey
string
Conditional
Required for UPDATE or DELETE
CcAccountNum
string
Required for ADD
Credit card number
CcExpDate
string
Required for ADD
Expiration date (MMYY)
CcNameOnCard
string
No
Name as printed on the card
CcStreet
string
No
Billing street address
CcZip
string
No
Billing ZIP/postal code
ExtData
string
No
Optional XML-formatted string for metadata
Notes
Action driven by TransType: Use
ADD
to store a new card,UPDATE
to change existing card data, andDELETE
to remove a card.CardInfoKey
is required for update and delete operations.Flexible update behavior: When updating a card,
CcAccountNum
andCcExpDate
are optional. This allows updating address or metadata without resubmitting the card number.Protocol support: Both SOAP and form-encoded HTTP POST are accepted, depending on the integration environment.
Returns a standard RecurringResult: Responses include keys such as
CustomerKey
,CardInfoKey
,Result
,AuthCode
,PNRef
,code
,error
, andMessage
, offering status and processing outcomes.
SOAP 1.1
The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.tpisoft.com/Admin/ws/ManageCreditCardInfo"
<?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>
<ManageCreditCardInfo xmlns="http://www.tpisoft.com/Admin/ws">
<Username>string</Username>
<Password>string</Password>
<TransType>string</TransType>
<Vendor>string</Vendor>
<CustomerKey>string</CustomerKey>
<CardInfoKey>string</CardInfoKey>
<CcAccountNum>string</CcAccountNum>
<CcExpDate>string</CcExpDate>
<CcNameOnCard>string</CcNameOnCard>
<CcStreet>string</CcStreet>
<CcZip>string</CcZip>
<ExtData>string</ExtData>
</ManageCreditCardInfo>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?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>
<ManageCreditCardInfoResponse xmlns="http://www.tpisoft.com/Admin/ws">
<ManageCreditCardInfoResult>
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</ManageCreditCardInfoResult>
</ManageCreditCardInfoResponse>
</soap:Body>
</soap:Envelope>
HTTP POST
The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx/ManageCreditCardInfo HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Username=string&Password=string&TransType=string&Vendor=string&CustomerKey=string&CardInfoKey=string&CcAccountNum=string&CcExpDate=string&CcNameOnCard=string&CcStreet=string&CcZip=string&ExtData=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<RecurringResult xmlns="http://www.tpisoft.com/Admin/ws">
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</RecurringResult>
ManageContract
Endpoint URL:
https://secure.ftipgw.com/admin/ws/recurring.asmx?op=ManageContract
Method: Supports SOAP POST and HTTP POST (form-encoded)
Description: Adds, updates, suspends, resumes, or deletes an existing billing contract associated with a customer. This endpoint allows direct control over the recurring billing schedule and status of an individual contract.
Request Parameters
UserName
string
Yes
Admin username
Password
string
Yes
Admin password
TransType
string
Yes
ADD, UPDATE, SUSPEND, RESUME, DELETE
Vendor
string
Yes
Merchant numeric key
CustomerKey
string
Yes
Unique key for the customer
ContractKey
string
Conditional
Required for all types except ADD
ContractID
string
Required for ADD
Merchant-supplied unique contract ID
ContractName
string
No
Optional contract name
BillAmt
string
Required for ADD/UPDATE
Amount to be charged per cycle
TaxAmt
string
No
Tax amount to be included
TotalAmt
string
Required for ADD/UPDATE
Must equal BillAmt + TaxAmt
StartDate
string
Required for ADD
Start date for recurring billing
EndDate
string
No
Optional end date; omit for indefinite billing
BillingPeriod
string
Required for ADD
DAY, WEEK, MONTH, or YEAR
BillingInterval
string
Required for ADD
Frequency multiplier for billing period
MaxFailures
string
No
Number of allowed consecutive failures before suspension
FailureInterval
string
No
Number of days between retry attempts
EmailCustomer
string
No
TRUE/FALSE – Notify customer on successful creation
EmailMerchant
string
No
TRUE/FALSE – Notify merchant on successful creation
EmailCustomerFailure
string
No
TRUE/FALSE – Notify customer on failure
EmailMerchantFailure
string
No
TRUE/FALSE – Notify merchant on failure
ExtData
string
No
Optional XML-formatted string for metadata
Notes
TransType defines the contract operation: Use
ADD
to create a new billing contract,UPDATE
to modify an existing one, andSUSPEND
,RESUME
, orDELETE
to manage its active state.ContractKey
is required for all actions exceptADD
.Billing logic:
TotalAmt
must always equal the sum ofBillAmt
andTaxAmt
. Incorrect totals will result in validation errors.StartDate and BillingInterval required on ADD: These define the recurrence structure and are mandatory when creating a new contract.
Notifications optional: Email fields let you control which parties receive automated messages about success or failure events related to the contract.
ExtData flexibility: Can be used to pass additional metadata or custom fields into the platform, depending on merchant configuration.
Typical usage:
ADD
: when creating a recurring billing planUPDATE
: to change amount or scheduleSUSPEND
: temporarily stop billingRESUME
: restart billing after suspensionDELETE
: remove the contract entirely
SOAP 1.1
The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.tpisoft.com/Admin/ws/ManageContract"
<?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>
<ManageContract xmlns="http://www.tpisoft.com/Admin/ws">
<Username>string</Username>
<Password>string</Password>
<TransType>string</TransType>
<Vendor>string</Vendor>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<PaymentInfoKey>string</PaymentInfoKey>
<PaymentType>string</PaymentType>
<CustomerID>string</CustomerID>
<CustomerName>string</CustomerName>
<FirstName>string</FirstName>
<LastName>string</LastName>
<Title>string</Title>
<Department>string</Department>
<Street1>string</Street1>
<Street2>string</Street2>
<Street3>string</Street3>
<City>string</City>
<StateID>string</StateID>
<Province>string</Province>
<Zip>string</Zip>
<CountryID>string</CountryID>
<Email>string</Email>
<DayPhone>string</DayPhone>
<NightPhone>string</NightPhone>
<Fax>string</Fax>
<Mobile>string</Mobile>
<ContractID>string</ContractID>
<ContractName>string</ContractName>
<BillAmt>string</BillAmt>
<TaxAmt>string</TaxAmt>
<TotalAmt>string</TotalAmt>
<StartDate>string</StartDate>
<EndDate>string</EndDate>
<NextBillDt>string</NextBillDt>
<BillingPeriod>string</BillingPeriod>
<BillingInterval>string</BillingInterval>
<MaxFailures>string</MaxFailures>
<FailureInterval>string</FailureInterval>
<EmailCustomer>string</EmailCustomer>
<EmailMerchant>string</EmailMerchant>
<EmailCustomerFailure>string</EmailCustomerFailure>
<EmailMerchantFailure>string</EmailMerchantFailure>
<Status>string</Status>
<ExtData>string</ExtData>
</ManageContract>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?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>
<ManageContractResponse xmlns="http://www.tpisoft.com/Admin/ws">
<ManageContractResult>
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</ManageContractResult>
</ManageContractResponse>
</soap:Body>
</soap:Envelope>
HTTP POST
The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx/ManageContract HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Username=string&Password=string&TransType=string&Vendor=string&CustomerKey=string&ContractKey=string&PaymentInfoKey=string&PaymentType=string&CustomerID=string&CustomerName=string&FirstName=string&LastName=string&Title=string&Department=string&Street1=string&Street2=string&Street3=string&City=string&StateID=string&Province=string&Zip=string&CountryID=string&Email=string&DayPhone=string&NightPhone=string&Fax=string&Mobile=string&ContractID=string&ContractName=string&BillAmt=string&TaxAmt=string&TotalAmt=string&StartDate=string&EndDate=string&NextBillDt=string&BillingPeriod=string&BillingInterval=string&MaxFailures=string&FailureInterval=string&EmailCustomer=string&EmailMerchant=string&EmailCustomerFailure=string&EmailMerchantFailure=string&Status=string&ExtData=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<RecurringResult xmlns="http://www.tpisoft.com/Admin/ws">
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</RecurringResult>
ManageCustomer
Endpoint URL:
https://secure.ftipgw.com/admin/ws/recurring.asmx?op=ManageCustomer
Method: Supports SOAP POST and HTTP POST (form-encoded)
Description: Adds, updates, or deletes a customer profile within the recurring billing system. This profile is used to associate payment methods and recurring billing contracts.
Request Parameters
UserName
string
Yes
Admin username
Password
string
Yes
Admin password
TransType
string
Yes
ADD, UPDATE, or DELETE
Vendor
string
Yes
Merchant numeric key
CustomerKey
string
Conditional
Required for UPDATE or DELETE
CustomerID
string
Required for ADD
Unique merchant-supplied customer identifier
CustomerName
string
Yes
Full name of the customer
FirstName
string
No
First name
LastName
string
No
Last name
Title
string
No
Title (e.g., Mr., Dr.)
Department
string
No
Department or division
Street1
string
No
Address line 1
Street2
string
No
Address line 2
Street3
string
No
Address line 3
City
string
No
City
StateID
string
No
2-character state code
Province
string
No
Province (for non-US addresses)
PostalCode
string
No
ZIP or postal code
CountryID
string
No
3-character country code (e.g., USA, CAN)
string
No
Email address
DayPhone
string
No
Daytime phone number
Fax
string
No
Fax number
Mobile
string
No
Mobile phone number
ExtData
string
No
Optional XML string for custom metadata
Notes
TransType controls the operation: Use
ADD
to create a new customer,UPDATE
to modify an existing one, andDELETE
to remove the customer profile.CustomerKey
is required for bothUPDATE
andDELETE
.CustomerID vs. CustomerKey:
CustomerID
is the merchant-defined external identifier, whileCustomerKey
is the system-generated internal key returned by the platform after creation.Minimal required fields for creation:
CustomerID
,CustomerName
,UserName
,Password
, andVendor
must be supplied at minimum to create a valid customer record.Flexible structure for address data: Street and location fields are optional but recommended to enable risk scoring, reporting, or downstream integrations.
Use with other endpoints: A customer must exist before you can attach recurring contracts or payment methods (such as via
AddRecurringCreditCard
,AddRecurringCheck
, orManageContract
).ExtData usage: The
ExtData
field supports merchant-defined XML key-value pairs and can be used to store custom tags, external system IDs, or control flags.
SOAP 1.1
The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.tpisoft.com/Admin/ws/ManageCustomer"
<?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>
<ManageCustomer xmlns="http://www.tpisoft.com/Admin/ws">
<Username>string</Username>
<Password>string</Password>
<TransType>string</TransType>
<Vendor>string</Vendor>
<CustomerKey>string</CustomerKey>
<CustomerID>string</CustomerID>
<CustomerName>string</CustomerName>
<FirstName>string</FirstName>
<LastName>string</LastName>
<Title>string</Title>
<Department>string</Department>
<Street1>string</Street1>
<Street2>string</Street2>
<Street3>string</Street3>
<City>string</City>
<StateID>string</StateID>
<Province>string</Province>
<Zip>string</Zip>
<CountryID>string</CountryID>
<Email>string</Email>
<DayPhone>string</DayPhone>
<NightPhone>string</NightPhone>
<Fax>string</Fax>
<Mobile>string</Mobile>
<Status>string</Status>
<ExtData>string</ExtData>
</ManageCustomer>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?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>
<ManageCustomerResponse xmlns="http://www.tpisoft.com/Admin/ws">
<ManageCustomerResult>
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</ManageCustomerResult>
</ManageCustomerResponse>
</soap:Body>
</soap:Envelope>
HTTP POST
The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx/ManageCustomer HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Username=string&Password=string&TransType=string&Vendor=string&CustomerKey=string&CustomerID=string&CustomerName=string&FirstName=string&LastName=string&Title=string&Department=string&Street1=string&Street2=string&Street3=string&City=string&StateID=string&Province=string&Zip=string&CountryID=string&Email=string&DayPhone=string&NightPhone=string&Fax=string&Mobile=string&Status=string&ExtData=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<RecurringResult xmlns="http://www.tpisoft.com/Admin/ws">
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</RecurringResult>
ManageContractAddDaysToNextBillDt
Endpoint URL:
https://secure.ftipgw.com/admin/ws/recurring.asmx?op=ManageContractAddDaysToNextBillDt
Method: Supports SOAP POST and HTTP POST (form-encoded)
Description: Adds a specified number of days to the next scheduled billing date of an existing recurring contract. This is typically used to delay the next payment without modifying the billing interval or period.
Request Parameters
UserName
string
Yes
Admin username
Password
string
Yes
Admin password
Vendor
string
Yes
Merchant numeric key
CustomerKey
string
Yes
Unique identifier for the customer
ContractKey
string
Yes
Unique identifier for the contract to be updated
AddDays
string
Yes
Number of days to add to the next billing date
ExtData
string
No
Optional XML-formatted metadata
Notes
Purpose: This endpoint is used to delay the upcoming scheduled billing date of a recurring contract, without changing the recurring frequency or start/end dates.
AddDays logic: The number provided in
AddDays
will be added to the contract’s current next billing date. For example, if the next billing date is July 5 andAddDays
is set to10
, the new next billing date will be July 15.Non-destructive to billing cycle: This does not permanently alter the contract’s recurrence settings. After the next billing event, the contract resumes its regular billing interval.
Common use cases:
To offer a grace period or deferral for a specific customer.
To realign a billing date with a customer’s preference or payroll cycle.
To compensate for prior billing failures or service issues.
No date input required: You only supply the number of days — the platform handles the date calculation internally based on the current contract schedule.
ExtData support: Optional field for tagging or logging additional context related to the update, such as administrative reason codes.
SOAP 1.1
The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.tpisoft.com/Admin/ws/ManageContractAddDaysToNextBillDt"
<?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>
<ManageContractAddDaysToNextBillDt xmlns="http://www.tpisoft.com/Admin/ws">
<Username>string</Username>
<Password>string</Password>
<Vendor>string</Vendor>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<NumOfDays>string</NumOfDays>
<ExtData>string</ExtData>
</ManageContractAddDaysToNextBillDt>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?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>
<ManageContractAddDaysToNextBillDtResponse xmlns="http://www.tpisoft.com/Admin/ws">
<ManageContractAddDaysToNextBillDtResult>
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</ManageContractAddDaysToNextBillDtResult>
</ManageContractAddDaysToNextBillDtResponse>
</soap:Body>
</soap:Envelope>
HTTP POST
The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.
POST /admin/ws/recurring.asmx/ManageContractAddDaysToNextBillDt HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Username=string&Password=string&Vendor=string&CustomerKey=string&ContractKey=string&NumOfDays=string&ExtData=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<RecurringResult xmlns="http://www.tpisoft.com/Admin/ws">
<CustomerID>string</CustomerID>
<ClientSessionID>string</ClientSessionID>
<CustomerKey>string</CustomerKey>
<ContractKey>string</ContractKey>
<CcInfoKey>string</CcInfoKey>
<CheckInfoKey>string</CheckInfoKey>
<code>OK or Unknown_Error or Access_Denied or Invalid_Login or Invalid_User_Status or Invalid_User or User_Not_Found or Username_Already_In_Use or Username_Has_Invalid_Characters or Not_Enough_Privilege or Invalid_PartnerID or Invalid_VendorID or Invalid_Argument or Invalid_Record or Transaction_Type_Not_Supported_By_Host or Internal_Error or Invalid_ProcessorID or Processor_Not_Found or InValidPassword</code>
<error>string</error>
<Partner>string</Partner>
<Vendor>string</Vendor>
<Username>string</Username>
<Result>string</Result>
<AuthCode>string</AuthCode>
<PNRef>string</PNRef>
<Message>string</Message>
<Contracts>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
<ContractInfo>
<Contract_Key>string</Contract_Key>
<Next_Bill_Date>string</Next_Bill_Date>
</ContractInfo>
</Contracts>
<ContractTransactions>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
<LastContractTrans>
<PaymentPref>string</PaymentPref>
<Contract_Key>string</Contract_Key>
<Transaction_Date>string</Transaction_Date>
<Transaction_Amount>string</Transaction_Amount>
<Convenience_Fee>string</Convenience_Fee>
<PNRef>string</PNRef>
<ResultCode>string</ResultCode>
<ResponseMessage>string</ResponseMessage>
<AuthCode>string</AuthCode>
</LastContractTrans>
</ContractTransactions>
<AccountNumber>string</AccountNumber>
</RecurringResult>
Last updated