Tokenization Services

GetClientSession
Endpoint URL:
https://secure.ftipgw.com/admin/ws/recurring.asmx?op=GetClientSessionID
Method:
SOAP (Action: GetClientSessionID
)
Description:
Generates a ClientSessionID
, which is a temporary token used to associate a cardholder or payer with subsequent tokenization requests (e.g., GetToken
, GetCheckToken
). This session ID must be passed in with any tokenization call.
Request Parameters:
Username
string
Yes
API credential username
Password
string
Yes
API credential password
ClientIP
string
Yes
IP address of the end user initiating the session
UserAgent
string
No
Optional browser or client User-Agent string
Notes:
ClientSessionID
is required in all tokenization calls and is valid for a short time only.Username
andPassword
are SOAP-level credentials, not tied to merchant accounts.ClientIP
should reflect the actual end user's IP — using a server IP may affect fraud tools.Including the
UserAgent
may assist with device fingerprinting or risk analysis, if enabled.Be sure to secure and store this session ID only temporarily.
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/GetClientSessionID"
<?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>
<GetClientSessionID xmlns="http://www.tpisoft.com/Admin/ws">
<Username>string</Username>
<Password>string</Password>
<Vendor>string</Vendor>
</GetClientSessionID>
</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>
<GetClientSessionIDResponse xmlns="http://www.tpisoft.com/Admin/ws">
<GetClientSessionIDResult>
<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>
</GetClientSessionIDResult>
</GetClientSessionIDResponse>
</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/GetClientSessionID HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Username=string&Password=string&Vendor=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>
GetToken
Endpoint URL:
https://secure.ftipgw.com/admin/ws/recurring.asmx?op=GetToken
Method:
SOAP (Action: GetToken
)
Description:
Retrieves a CcInfoKey
for a user, which represents a tokenized version of the credit card. This key can be reused for future transactions without resubmitting raw card data.
Request Parameters:
ClientSessionID
string
Yes
Identifies the user session
CcAccountNum
string
Yes
Raw credit card number to tokenize
CcExpDate
string
Yes
Expiration date in MMYY format
CcNameOnCard
string
No
Name on the card, as it appears
Notes:
This is a sensitive operation and must be called over HTTPS with appropriate security controls in place.
The resulting
CcInfoKey
is used in place of card data for subsequent transactions.This call does not authorize a payment or validate the card beyond formatting.
ClientSessionID
must be retrieved via a prior call toGetClientSession
.The
CcNameOnCard
field is optional and not validated or persisted.
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/GetToken"
<?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>
<GetToken xmlns="http://www.tpisoft.com/Admin/ws">
<ClientSessionID>string</ClientSessionID>
<CcAccountNum>string</CcAccountNum>
<CcExpDate>string</CcExpDate>
<CcNameOnCard>string</CcNameOnCard>
<CcStreet>string</CcStreet>
<CcZip>string</CcZip>
<FirstName>string</FirstName>
<LastName>string</LastName>
</GetToken>
</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>
<GetTokenResponse xmlns="http://www.tpisoft.com/Admin/ws">
<GetTokenResult>
<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>
</GetTokenResult>
</GetTokenResponse>
</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/GetToken HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
ClientSessionID=string&CcAccountNum=string&CcExpDate=string&CcNameOnCard=string&CcStreet=string&CcZip=string&FirstName=string&LastName=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>
GetCheckToken
Endpoint URL:
https://secure.ftipgw.com/admin/ws/recurring.asmx?op=GetCheckToken
Method:
SOAP (Action: GetCheckToken
)
Description:
Retrieves a CheckInfoKey
for a user, which represents a tokenized version of their bank account information. This key can be used to initiate ACH or eCheck transactions without resubmitting raw bank data.
Request Parameters:
ClientSessionID
string
Yes
Identifies the user session
BankRoutingNum
string
Yes
The bank routing number (9 digits)
BankAccountNum
string
Yes
The bank account number
BankAcctType
string
Yes
Type of account: "C"
for Checking, "S"
for Savings
BankName
string
No
Optional bank name
Notes:
The returned
CheckInfoKey
can be stored and reused for initiating future ACH transactions.This call does not validate the bank account or perform any micro-deposits.
ClientSessionID
must be created viaGetClientSession
beforehand.The
BankAcctType
is typically"C"
or"S"
— this field must be correctly set or the request will fail.Always use HTTPS, and do not log or persist raw account/routing numbers.
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/GetCheckToken"
<?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>
<GetCheckToken xmlns="http://www.tpisoft.com/Admin/ws">
<ClientSessionID>string</ClientSessionID>
<CkAccountNum>string</CkAccountNum>
<CkTransitNum>string</CkTransitNum>
<CkNameOnAccount>string</CkNameOnAccount>
<CheckType>string</CheckType>
<AccountType>string</AccountType>
<CkStreet>string</CkStreet>
<CkZip>string</CkZip>
<FirstName>string</FirstName>
<LastName>string</LastName>
</GetCheckToken>
</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>
<GetCheckTokenResponse xmlns="http://www.tpisoft.com/Admin/ws">
<GetCheckTokenResult>
<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>
</GetCheckTokenResult>
</GetCheckTokenResponse>
</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/GetCheckToken HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
ClientSessionID=string&CkAccountNum=string&CkTransitNum=string&CkNameOnAccount=string&CheckType=string&AccountType=string&CkStreet=string&CkZip=string&FirstName=string&LastName=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