# Payment Processing – Credit, Check, Debit

<figure><img src="/files/OPkpKWNGisTRODxR9jdP" alt=""><figcaption></figcaption></figure>

## <mark style="color:blue;">ProcessCreditCard</mark>

**Endpoint URL:**\
`https://secure.ftipgw.com/ArgoFire/transact.asmx?op=ProcessCreditCard`

**Method:**\
SOAP (Action: `ProcessCreditCard`)

**Description:**\
Submits a real-time credit card transaction for authorization and optional capture. This is the core processing endpoint for credit card payments, supporting both one-time and token-based transactions.

**Request Parameters:**

| Name          | Type    | Required    | Description                                                      |
| ------------- | ------- | ----------- | ---------------------------------------------------------------- |
| Username      | string  | Yes         | API credential username                                          |
| Password      | string  | Yes         | API credential password                                          |
| TransType     | string  | Yes         | Transaction type: `Sale`, `Auth`, `Return`, or `PostAuth`        |
| Amount        | decimal | Yes         | Amount to charge in dollars (e.g., `10.00`)                      |
| NameOnCard    | string  | No          | Cardholder's name                                                |
| CcAccountNum  | string  | Conditional | Raw credit card number — required if no token is used            |
| CcExpDate     | string  | Conditional | Expiration date (MMYY) — required if using raw card data         |
| InvoiceNumber | string  | No          | Optional invoice number for reconciliation                       |
| Street        | string  | No          | Optional AVS field: billing address street                       |
| Zip           | string  | No          | Optional AVS field: billing ZIP code                             |
| ExtData       | string  | No          | Optional XML-formatted metadata for advanced options (see Notes) |

**Notes:**

* Either `CcAccountNum` + `CcExpDate` **or** `CcInfoKey` must be provided — both are not required.
* `TransType` values:
  * `Sale` – Authorizes and captures funds
  * `Auth` – Authorization only (for later capture via `PostAuth`)
  * `Return` – Issues a refund for a previous sale
  * `PostAuth` – Captures funds from a previous `Auth`
* `ExtData` can be used to pass flags like `<![CDATA[<CustRef>12345</CustRef><Force>T</Force>]]>`
* CVV is not stored and must be passed each time (if required).
* This endpoint returns a response object that includes:
  * `Result` (0 = success)
  * `RespMSG` (e.g., "Approved")
  * `AuthCode`
  * `TransRefID` (used for lookups and reporting)

#### 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 /ArgoFire/transact.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://TPISoft.com/SmartPayments/ProcessCreditCard"

<?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>
    <ProcessCreditCard xmlns="http://TPISoft.com/SmartPayments/">
      <UserName>string</UserName>
      <Password>string</Password>
      <TransType>string</TransType>
      <CardNum>string</CardNum>
      <ExpDate>string</ExpDate>
      <MagData>string</MagData>
      <NameOnCard>string</NameOnCard>
      <Amount>string</Amount>
      <InvNum>string</InvNum>
      <PNRef>string</PNRef>
      <Zip>string</Zip>
      <Street>string</Street>
      <CVNum>string</CVNum>
      <ExtData>string</ExtData>
    </ProcessCreditCard>
  </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>
    <ProcessCreditCardResponse xmlns="http://TPISoft.com/SmartPayments/">
      <ProcessCreditCardResult>
        <Result>int</Result>
        <RespMSG>string</RespMSG>
        <Message>string</Message>
        <Message1>string</Message1>
        <Message2>string</Message2>
        <AuthCode>string</AuthCode>
        <PNRef>string</PNRef>
        <HostCode>string</HostCode>
        <HostURL>string</HostURL>
        <ReceiptURL>string</ReceiptURL>
        <GetAVSResult>string</GetAVSResult>
        <GetAVSResultTXT>string</GetAVSResultTXT>
        <GetStreetMatchTXT>string</GetStreetMatchTXT>
        <GetZipMatchTXT>string</GetZipMatchTXT>
        <GetCVResult>string</GetCVResult>
        <GetCVResultTXT>string</GetCVResultTXT>
        <GetGetOrigResult>string</GetGetOrigResult>
        <GetCommercialCard>string</GetCommercialCard>
        <WorkingKey>string</WorkingKey>
        <KeyPointer>string</KeyPointer>
        <ExtData>string</ExtData>
      </ProcessCreditCardResult>
    </ProcessCreditCardResponse>
  </soap:Body>
</soap:Envelope>
```

#### SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

```
POST /ArgoFire/transact.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <ProcessCreditCard xmlns="http://TPISoft.com/SmartPayments/">
      <UserName>string</UserName>
      <Password>string</Password>
      <TransType>string</TransType>
      <CardNum>string</CardNum>
      <ExpDate>string</ExpDate>
      <MagData>string</MagData>
      <NameOnCard>string</NameOnCard>
      <Amount>string</Amount>
      <InvNum>string</InvNum>
      <PNRef>string</PNRef>
      <Zip>string</Zip>
      <Street>string</Street>
      <CVNum>string</CVNum>
      <ExtData>string</ExtData>
    </ProcessCreditCard>
  </soap12:Body>
</soap12:Envelope>
```

```
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <ProcessCreditCardResponse xmlns="http://TPISoft.com/SmartPayments/">
      <ProcessCreditCardResult>
        <Result>int</Result>
        <RespMSG>string</RespMSG>
        <Message>string</Message>
        <Message1>string</Message1>
        <Message2>string</Message2>
        <AuthCode>string</AuthCode>
        <PNRef>string</PNRef>
        <HostCode>string</HostCode>
        <HostURL>string</HostURL>
        <ReceiptURL>string</ReceiptURL>
        <GetAVSResult>string</GetAVSResult>
        <GetAVSResultTXT>string</GetAVSResultTXT>
        <GetStreetMatchTXT>string</GetStreetMatchTXT>
        <GetZipMatchTXT>string</GetZipMatchTXT>
        <GetCVResult>string</GetCVResult>
        <GetCVResultTXT>string</GetCVResultTXT>
        <GetGetOrigResult>string</GetGetOrigResult>
        <GetCommercialCard>string</GetCommercialCard>
        <WorkingKey>string</WorkingKey>
        <KeyPointer>string</KeyPointer>
        <ExtData>string</ExtData>
      </ProcessCreditCardResult>
    </ProcessCreditCardResponse>
  </soap12:Body>
</soap12:Envelope>
```

#### HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

```
POST /ArgoFire/transact.asmx/ProcessCreditCard HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

UserName=string&Password=string&TransType=string&CardNum=string&ExpDate=string&MagData=string&NameOnCard=string&Amount=string&InvNum=string&PNRef=string&Zip=string&Street=string&CVNum=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"?>
<Response xmlns="http://TPISoft.com/SmartPayments/">
  <Result>int</Result>
  <RespMSG>string</RespMSG>
  <Message>string</Message>
  <Message1>string</Message1>
  <Message2>string</Message2>
  <AuthCode>string</AuthCode>
  <PNRef>string</PNRef>
  <HostCode>string</HostCode>
  <HostURL>string</HostURL>
  <ReceiptURL>string</ReceiptURL>
  <GetAVSResult>string</GetAVSResult>
  <GetAVSResultTXT>string</GetAVSResultTXT>
  <GetStreetMatchTXT>string</GetStreetMatchTXT>
  <GetZipMatchTXT>string</GetZipMatchTXT>
  <GetCVResult>string</GetCVResult>
  <GetCVResultTXT>string</GetCVResultTXT>
  <GetGetOrigResult>string</GetGetOrigResult>
  <GetCommercialCard>string</GetCommercialCard>
  <WorkingKey>string</WorkingKey>
  <KeyPointer>string</KeyPointer>
  <ExtData>string</ExtData>
</Response>
```

## <mark style="color:blue;">Valid Input Reference Characters</mark>

#### Table 1. Valid Data Characters

| DEC | HEX | Character | DEC  | HEX | Character | DEC | HEX | Character               |
| --- | --- | --------- | ---- | --- | --------- | --- | --- | ----------------------- |
| 32  | 20  | (space)   | 63   | 3F  | `?`       | 96  | 60  | \<code>\`\</code>       |
| 33  | 21  | `!`       | 64   | 40  | `@`       | 97  | 61  | `a`                     |
| 34  | 22  | `“`       | 65   | 42  | `A`       | 98  | 62  | `b`                     |
| 35  | 23  | `#`       | 66   | 42  | `B`       | 99  | 63  | `c`                     |
| 36  | 24  | `$`       | 67   | 43  | `C`       | 100 | 64  | `d`                     |
| 37  | 25  | `%`       | 68   | 44  | `D`       | 101 | 65  | `e`                     |
| 38  | 26  | `&`       | 69   | 45  | `E`       | 102 | 66  | `f`                     |
| 39  | 27  | `‘`       | 70   | 46  | `F`       | 103 | 67  | `g`                     |
| 40  | 28  | `(`       | 71   | 47  | `G`       | 104 | 68  | `h`                     |
| 41  | 29  | `)`       | 72   | 48  | `H`       | 105 | 69  | `i` *(typo note below)* |
| 42  | 2A  | `*`       | 73   | 49  | `I`       | 106 | 6A  | `j`                     |
| 43  | 2B  | `+`       | 74   | 4A  | `J`       | 107 | 6B  | `k`                     |
| 44  | 2C  | `,`       | 75   | 4B  | `K`       | 108 | 6C  | `l`                     |
| 45  | 2D  | `–`       | 76   | 4C  | `L`       | 109 | 6D  | `m`                     |
| 46  | 2E  | `.`       | 77   | 4D  | `M`       | 110 | 6E  | `n`                     |
| 47  | 2F  | `/`       | 78   | 4E  | `N`       | 111 | 6F  | `o`                     |
| 48  | 30  | `0`       | 79   | 4F  | `O`       | 112 | 70  | `p`                     |
| 49  | 31  | `1`       | 80   | 50  | `P`       | 113 | 71  | `q`                     |
| 50  | 32  | `2`       | 81   | 51  | `Q`       | 114 | 72  | `r`                     |
| 51  | 33  | `3`       | 82   | 52  | `R`       | 115 | 73  | `s`                     |
| 52  | 34  | `4`       | 83   | 53  | `S`       | 116 | 74  | `t`                     |
| 53  | 35  | `5`       | 84   | 54  | `T`       | 117 | 75  | `u`                     |
| 54  | 36  | `6`       | 85   | 55  | `U`       | 118 | 76  | `v`                     |
| 55  | 37  | `7`       | 86   | 56  | `V`       | 119 | 77  | `w`                     |
| 56  | 38  | `8`       | 87   | 57  | `W`       | 120 | 78  | `x`                     |
| 57  | 39  | `9`       | 88   | 58  | `X`       | 121 | 79  | `y`                     |
| 58  | 3A  | `:`       | 89   | 59  | `Y`       | 122 | 7A  | `z`                     |
| 59  | 3B  | `;`       | 90   | 5A  | `Z`       | 123 | 7B  | `{`                     |
| 60  | 3C  | `<`       | 91\* | —   |           | 124 | 7C  | `\|`                    |
| 61  | 3D  | `=`       | 94   | 5E  | `^`       | 125 | 7D  | `}`                     |
| 62  | 3E  | `>`       | 95   | 5F  | `_`       | 126 | 7E  | `~`                     |

#### Table 2. XML Character Removal

These characters must be stripped by the Payment Server before submitting data to Web Service operations, to ensure correct XML parsing.

| Character | XML Parser Encoding |
| --------- | ------------------- |
| `<`       | `&lt;`              |
| `>`       | `&gt;`              |
| `&`       | `&amp;`             |
| `‘`       | `&apos;`            |
| `“`       | `&quot;`            |

#### Example: Character Removal in Action

If you submit:

* `NameOnCard = "John & James"` → The `&` is stripped → processed as `John James`
* `NameOnCard = "John &amp; James"` → Processed as `John amp; James`

## <mark style="color:blue;">RepeatSale</mark>

#### **Description**

Creates a new charge by repeating billing information used by a previous sale using its `PNRef`. Ideal for processing payments without re-entering full card details.

#### **Endpoint**

```
https://secure.ftipgw.com/ArgoFire/transact.asmx?op=ProcessCreditCard
```

#### **Required Parameters**

| Parameter   | Required | Description                                           |
| ----------- | -------- | ----------------------------------------------------- |
| `UserName`  | Yes      | Merchant’s API username.                              |
| `Password`  | Yes      | Merchant’s API password.                              |
| `TransType` | Yes      | Must be set to `Repeat Sale`.                         |
| `PNRef`     | Yes      | Reference number of the original sale to be repeated. |

#### **Sample Request**

```
<Request>
  <UserName>test</UserName>
  <Password>123</Password>
  <TransType>Repeat Sale</TransType>
  <PNRef>2329</PNRef>
</Request>
```

#### **Sample Response**

```
<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="https://secure.ftipgw.com/ArgoFire/">
  <Result>0</Result>
  <RespMSG>Approved</RespMSG>
  <Message>APPROVAL VITAL2</Message>
  <AuthCode>VITAL2</AuthCode>
  <PNRef>2332</PNRef>
  <GetCommercialCard>False</GetCommercialCard>
</Response>
```

**Response Field Notes**

* **Result = 0** → indicates success
* **RespMSG** → human-readable status (`Approved`)
* **Message** → detailed response message (`APPROVAL VITAL2`)
* **AuthCode** → authorization reference for this RepeatSale transaction
* **PNRef** → new reference number assigned to the RepeatSale
* **GetCommercialCard** → `False` indicates the card is not a commercial card

## <mark style="color:blue;">Reversal</mark>

#### Description

Reverses a previously authorized but unsettled credit card transaction. Unlike a Void, which cancels the transaction before settlement, a Reversal is used to cancel an authorization that has not yet been captured.

#### Endpoint

```
https://secure.ftipgw.com/ArgoFire/transact.asmx?op=ProcessCreditCard
```

*(Same endpoint used for all `ProcessCreditCard` operations.)*

#### Required Parameters

| Parameter   | Required | Description                                                |
| ----------- | -------- | ---------------------------------------------------------- |
| `UserName`  | Yes      | Merchant’s API username.                                   |
| `Password`  | Yes      | Merchant’s API password.                                   |
| `TransType` | Yes      | Must be set to `Reversal`.                                 |
| `PNRef`     | Yes      | Reference number of the original authorization to reverse. |

#### Sample Request

```
<Request>
  <UserName>test</UserName>
  <Password>123</Password>
  <TransType>Reversal</TransType>
  <PNRef>2327</PNRef>
</Request>
```

#### Sample Response

```
<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="https://secure.ftipgw.com/ArgoFire/">
  <Result>0</Result>
  <RespMSG>Approved</RespMSG>
  <Message>REVERSAL ACCEPTED</Message>
  <AuthCode>GB00029 ACCEPTED</AuthCode>
  <ExtData>Net_Count=1,Net_Amount=1,Settle_DT=2004-04-13 15:36:26</ExtData>
</Response>
```

**Response Field Notes:**

* **Result = 0** → indicates successful reversal
* **RespMSG** → human-readable status (`Approved`)
* **Message** → confirmation message (`REVERSAL ACCEPTED`)
* **AuthCode** → authorization reference for the reversal
* **ExtData** → contains batch settlement details: count, total amount, settlement timestamp

## <mark style="color:blue;">Void</mark>

**Endpoint URL:**\
`https://secure.ftipgw.com/ArgoFire/transact.asmx?op=ProcessCreditCard`

**Description:**\
Reverses (voids) a previously authorized yet unsettled credit card transaction.

**Required Parameters:**<br>

| Parameter   | Required | Description                                                              |
| ----------- | -------- | ------------------------------------------------------------------------ |
| `UserName`  | Yes      | The merchant’s API username.                                             |
| `Password`  | Yes      | The merchant’s API password.                                             |
| `TransType` | Yes      | Must be set to `Void`.                                                   |
| `PNRef`     | Yes      | The reference number of the original transaction to be voided.           |
| `CardNum`   | No       | Must be passed as **null** (not required, but must not contain a value). |
| `ExpDate`   | No       | Must be passed as **null** (not required, but must not contain a value). |

**Sample Response**

```
<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="https://secure.ftipgw.com/ArgoFire/">
  <Result>0</Result>
  <RespMSG>Approved</RespMSG>
  <AuthCode>VITAL4</AuthCode>
  <PNRef>2309</PNRef>
</Response>
```

**Response Field Notes**

* **Result = 0** → indicates the void was successful
* **RespMSG** → human-readable status (`Approved`)
* **AuthCode** → approval reference code for the void
* **PNRef** → new reference number created for the void transaction

## <mark style="color:blue;">ProcessCheck</mark>

**Endpoint URL:**\
`https://secure.ftipgw.com/ArgoFire/transact.asmx?op=ProcessCheck`

**Method:**\
SOAP (Action: `ProcessCheck`)

**Description:**\
Submits an electronic check (ACH) transaction using either raw bank account information or a previously generated `CheckInfoKey` token. Supports both `Sale` (debit) and `Return` (credit/refund) transactions.

**Request Parameters:**

| Name                | Type    | Required    | Description                                                            |
| ------------------- | ------- | ----------- | ---------------------------------------------------------------------- |
| Username            | string  | Yes         | API credential username                                                |
| Password            | string  | Yes         | API credential password                                                |
| TransType           | string  | Yes         | Transaction type: `Sale` or `Return`                                   |
| Amount              | decimal | Yes         | Dollar amount of the transaction (e.g., `50.00`)                       |
| NameOnCheck         | string  | No          | Optional name on the checking account                                  |
| CheckNum            | string  | No          | Optional check number (for reference only)                             |
| BankRoutingNum      | string  | Conditional | Required if not using `CheckInfoKey`                                   |
| BankAccountNum      | string  | Conditional | Required if not using `CheckInfoKey`                                   |
| BankAcctType        | string  | Conditional | `"C"` for Checking, `"S"` for Savings — required with raw account info |
| CheckInfoKey        | string  | Conditional | Tokenized bank account key — use instead of raw routing/account info   |
| ClientTransactionID | string  | No          | Optional merchant-defined transaction reference                        |
| InvoiceNumber       | string  | No          | Optional invoice number                                                |
| Street              | string  | No          | Optional billing street address (for validation/risk scoring)          |
| Zip                 | string  | No          | Optional ZIP code (for validation/risk scoring)                        |
| Email               | string  | No          | Optional email address for receipt                                     |
| ExtData             | string  | No          | Optional XML string for advanced configuration (see Notes)             |

**Notes:**

* You must provide either `BankRoutingNum` + `BankAccountNum` **or** a valid `CheckInfoKey`.
* `TransType` must be either:
  * `Sale` — Debit the account (standard ACH pull)
  * `Return` — Credit the account (ACH refund)
* `ExtData` can carry optional XML metadata like:

```
<![CDATA[<Force>T</Force><Description>Subscription Payment</Description>]]>
```

* Funds are not moved in real-time; ACH processing follows standard banking timelines (typically 1–3 business days).
* The response includes fields such as:

  * `Result` (0 = success)
  * `RespMSG` (e.g., "Approved", "Invalid Routing Number")
  * `TransRefID` for future lookups

#### 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 /ArgoFire/transact.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://TPISoft.com/SmartPayments/ProcessCheck"

<?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>
    <ProcessCheck xmlns="http://TPISoft.com/SmartPayments/">
      <UserName>string</UserName>
      <Password>string</Password>
      <TransType>string</TransType>
      <CheckNum>string</CheckNum>
      <TransitNum>string</TransitNum>
      <AccountNum>string</AccountNum>
      <Amount>string</Amount>
      <MICR>string</MICR>
      <NameOnCheck>string</NameOnCheck>
      <DL>string</DL>
      <SS>string</SS>
      <DOB>string</DOB>
      <StateCode>string</StateCode>
      <CheckType>string</CheckType>
      <ExtData>string</ExtData>
    </ProcessCheck>
  </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>
    <ProcessCheckResponse xmlns="http://TPISoft.com/SmartPayments/">
      <ProcessCheckResult>
        <Result>int</Result>
        <RespMSG>string</RespMSG>
        <Message>string</Message>
        <Message1>string</Message1>
        <Message2>string</Message2>
        <AuthCode>string</AuthCode>
        <PNRef>string</PNRef>
        <HostCode>string</HostCode>
        <HostURL>string</HostURL>
        <ReceiptURL>string</ReceiptURL>
        <GetAVSResult>string</GetAVSResult>
        <GetAVSResultTXT>string</GetAVSResultTXT>
        <GetStreetMatchTXT>string</GetStreetMatchTXT>
        <GetZipMatchTXT>string</GetZipMatchTXT>
        <GetCVResult>string</GetCVResult>
        <GetCVResultTXT>string</GetCVResultTXT>
        <GetGetOrigResult>string</GetGetOrigResult>
        <GetCommercialCard>string</GetCommercialCard>
        <WorkingKey>string</WorkingKey>
        <KeyPointer>string</KeyPointer>
        <ExtData>string</ExtData>
      </ProcessCheckResult>
    </ProcessCheckResponse>
  </soap:Body>
</soap:Envelope>
```

#### SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

```
POST /ArgoFire/transact.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <ProcessCheck xmlns="http://TPISoft.com/SmartPayments/">
      <UserName>string</UserName>
      <Password>string</Password>
      <TransType>string</TransType>
      <CheckNum>string</CheckNum>
      <TransitNum>string</TransitNum>
      <AccountNum>string</AccountNum>
      <Amount>string</Amount>
      <MICR>string</MICR>
      <NameOnCheck>string</NameOnCheck>
      <DL>string</DL>
      <SS>string</SS>
      <DOB>string</DOB>
      <StateCode>string</StateCode>
      <CheckType>string</CheckType>
      <ExtData>string</ExtData>
    </ProcessCheck>
  </soap12:Body>
</soap12:Envelope>
```

```
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <ProcessCheckResponse xmlns="http://TPISoft.com/SmartPayments/">
      <ProcessCheckResult>
        <Result>int</Result>
        <RespMSG>string</RespMSG>
        <Message>string</Message>
        <Message1>string</Message1>
        <Message2>string</Message2>
        <AuthCode>string</AuthCode>
        <PNRef>string</PNRef>
        <HostCode>string</HostCode>
        <HostURL>string</HostURL>
        <ReceiptURL>string</ReceiptURL>
        <GetAVSResult>string</GetAVSResult>
        <GetAVSResultTXT>string</GetAVSResultTXT>
        <GetStreetMatchTXT>string</GetStreetMatchTXT>
        <GetZipMatchTXT>string</GetZipMatchTXT>
        <GetCVResult>string</GetCVResult>
        <GetCVResultTXT>string</GetCVResultTXT>
        <GetGetOrigResult>string</GetGetOrigResult>
        <GetCommercialCard>string</GetCommercialCard>
        <WorkingKey>string</WorkingKey>
        <KeyPointer>string</KeyPointer>
        <ExtData>string</ExtData>
      </ProcessCheckResult>
    </ProcessCheckResponse>
  </soap12:Body>
</soap12:Envelope>
```

#### HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

```
POST /ArgoFire/transact.asmx/ProcessCheck HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

UserName=string&Password=string&TransType=string&CheckNum=string&TransitNum=string&AccountNum=string&Amount=string&MICR=string&NameOnCheck=string&DL=string&SS=string&DOB=string&StateCode=string&CheckType=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"?>
<Response xmlns="http://TPISoft.com/SmartPayments/">
  <Result>int</Result>
  <RespMSG>string</RespMSG>
  <Message>string</Message>
  <Message1>string</Message1>
  <Message2>string</Message2>
  <AuthCode>string</AuthCode>
  <PNRef>string</PNRef>
  <HostCode>string</HostCode>
  <HostURL>string</HostURL>
  <ReceiptURL>string</ReceiptURL>
  <GetAVSResult>string</GetAVSResult>
  <GetAVSResultTXT>string</GetAVSResultTXT>
  <GetStreetMatchTXT>string</GetStreetMatchTXT>
  <GetZipMatchTXT>string</GetZipMatchTXT>
  <GetCVResult>string</GetCVResult>
  <GetCVResultTXT>string</GetCVResultTXT>
  <GetGetOrigResult>string</GetGetOrigResult>
  <GetCommercialCard>string</GetCommercialCard>
  <WorkingKey>string</WorkingKey>
  <KeyPointer>string</KeyPointer>
  <ExtData>string</ExtData>
</Response>
```

## <mark style="color:blue;">Auth Capture</mark>

#### **Description**

Performs both an authorization and a capture in one step—approving and settling a credit card transaction within the current batch (often used in terminal-based or dedicated flows).

#### **Endpoint**

```
https://secure.ftipgw.com/ArgoFire/transact.asmx?op=ProcessCreditCard
```

#### **Required Parameters**

| Parameter   | Required | Description                                     |
| ----------- | -------- | ----------------------------------------------- |
| `UserName`  | Yes      | Merchant’s API username.                        |
| `Password`  | Yes      | Merchant’s API password.                        |
| `TransType` | Yes      | Must be set to `Capture`.                       |
| `PNRef`     | Yes      | Reference number of the previous authorization. |

#### **Sample Request**

```
<Request>
  <UserName>test</UserName>
  <Password>123</Password>
  <TransType>Capture</TransType>
  <PNRef>2327</PNRef>
</Request>
```

#### **Sample Response**

```
<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="https://secure.ftipgw.com/ArgoFire/">
  <Result>0</Result>
  <RespMSG>Approved</RespMSG>
  <Message>ACCEPTED</Message>
  <AuthCode>GB00029 ACCEPTED</AuthCode>
  <ExtData>Net_Count=1,Net_Amount=1,Settle_DT=2004-04-13 15:36:26</ExtData>
</Response>
```

**Response Field Notes:**

* **Result = 0** → indicates successful authorization and capture
* **RespMSG** → human-readable status (e.g., `Approved`)
* **Message** → additional confirmation (e.g., `ACCEPTED`)
* **AuthCode** → reference code confirming the transaction
* **ExtData** → contains batch settlement details: count, total amount, settlement timestamp

## <mark style="color:blue;">ProcessDebitCard</mark>

**Endpoint URL:**\
`https://secure.ftipgw.com/ArgoFire/transact.asmx?op=ProcessDebitCard`

**Method:**\
SOAP (Action: `ProcessDebitCard`)

**Description:**\
Processes real-time debit card transactions. This endpoint is used when merchants are configured for debit card routing separate from standard credit card processing. It supports `Sale`, `Auth`, `Return`, and `PostAuth` transaction types, similar to `ProcessCreditCard`.

**Request Parameters:**

| Name                | Type    | Required    | Description                                               |
| ------------------- | ------- | ----------- | --------------------------------------------------------- |
| Username            | string  | Yes         | API credential username                                   |
| Password            | string  | Yes         | API credential password                                   |
| TransType           | string  | Yes         | Transaction type: `Sale`, `Auth`, `Return`, or `PostAuth` |
| Amount              | decimal | Yes         | Amount to charge in dollars (e.g., `25.00`)               |
| NameOnCard          | string  | No          | Cardholder’s name                                         |
| CcAccountNum        | string  | Conditional | Debit card number — required if not using `CcInfoKey`     |
| CcExpDate           | string  | Conditional | Expiration date (MMYY) — required if using raw card data  |
| CcInfoKey           | string  | Conditional | Tokenized card key — used instead of card number          |
| Cvv2                | string  | Optional    | 3- or 4-digit security code                               |
| ClientTransactionID | string  | No          | Optional merchant-defined reference ID                    |
| InvoiceNumber       | string  | No          | Optional invoice number                                   |
| Street              | string  | No          | Optional AVS field: billing street address                |
| Zip                 | string  | No          | Optional AVS field: billing ZIP code                      |
| Email               | string  | No          | Optional email address for confirmation or metadata       |
| ExtData             | string  | No          | Optional XML metadata for advanced settings (see Notes)   |

**Notes:**

* Similar in structure to `ProcessCreditCard`, but uses debit routing and settlement channels.
* Either `CcAccountNum` + `CcExpDate` **or** `CcInfoKey` must be provided.
* `TransType` options:
  * `Sale`: Authorizes and settles the debit
  * `Auth`: Authorization only (for delayed capture)
  * `PostAuth`: Capture of a previously authorized transaction
  * `Return`: Refund back to the original debit card
* Response includes:
  * `Result` (0 = success)
  * `RespMSG` (e.g., “Approved”)
  * `AuthCode`
  * `TransRefID` (used for future queries and reconciliation)
* `ExtData` can include optional XML such as:

  ```
  xmlCopyEdit
  ```

```
<![CDATA[<CustRef>7890</CustRef><Force>T</Force>]]>
```

#### 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 /ArgoFire/transact.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://TPISoft.com/SmartPayments/ProcessDebitCard"

<?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>
    <ProcessDebitCard xmlns="http://TPISoft.com/SmartPayments/">
      <UserName>string</UserName>
      <Password>string</Password>
      <TransType>string</TransType>
      <CardNum>string</CardNum>
      <ExpDate>string</ExpDate>
      <MagData>string</MagData>
      <NameOnCard>string</NameOnCard>
      <Amount>string</Amount>
      <InvNum>string</InvNum>
      <PNRef>string</PNRef>
      <Pin>string</Pin>
      <RegisterNum>string</RegisterNum>
      <SureChargeAmt>string</SureChargeAmt>
      <CashBackAmt>string</CashBackAmt>
      <ExtData>string</ExtData>
    </ProcessDebitCard>
  </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>
    <ProcessDebitCardResponse xmlns="http://TPISoft.com/SmartPayments/">
      <ProcessDebitCardResult>
        <Result>int</Result>
        <RespMSG>string</RespMSG>
        <Message>string</Message>
        <Message1>string</Message1>
        <Message2>string</Message2>
        <AuthCode>string</AuthCode>
        <PNRef>string</PNRef>
        <HostCode>string</HostCode>
        <HostURL>string</HostURL>
        <ReceiptURL>string</ReceiptURL>
        <GetAVSResult>string</GetAVSResult>
        <GetAVSResultTXT>string</GetAVSResultTXT>
        <GetStreetMatchTXT>string</GetStreetMatchTXT>
        <GetZipMatchTXT>string</GetZipMatchTXT>
        <GetCVResult>string</GetCVResult>
        <GetCVResultTXT>string</GetCVResultTXT>
        <GetGetOrigResult>string</GetGetOrigResult>
        <GetCommercialCard>string</GetCommercialCard>
        <WorkingKey>string</WorkingKey>
        <KeyPointer>string</KeyPointer>
        <ExtData>string</ExtData>
      </ProcessDebitCardResult>
    </ProcessDebitCardResponse>
  </soap:Body>
</soap:Envelope>
```

#### SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

```
POST /ArgoFire/transact.asmx HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <ProcessDebitCard xmlns="http://TPISoft.com/SmartPayments/">
      <UserName>string</UserName>
      <Password>string</Password>
      <TransType>string</TransType>
      <CardNum>string</CardNum>
      <ExpDate>string</ExpDate>
      <MagData>string</MagData>
      <NameOnCard>string</NameOnCard>
      <Amount>string</Amount>
      <InvNum>string</InvNum>
      <PNRef>string</PNRef>
      <Pin>string</Pin>
      <RegisterNum>string</RegisterNum>
      <SureChargeAmt>string</SureChargeAmt>
      <CashBackAmt>string</CashBackAmt>
      <ExtData>string</ExtData>
    </ProcessDebitCard>
  </soap12:Body>
</soap12:Envelope>
```

```
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <ProcessDebitCardResponse xmlns="http://TPISoft.com/SmartPayments/">
      <ProcessDebitCardResult>
        <Result>int</Result>
        <RespMSG>string</RespMSG>
        <Message>string</Message>
        <Message1>string</Message1>
        <Message2>string</Message2>
        <AuthCode>string</AuthCode>
        <PNRef>string</PNRef>
        <HostCode>string</HostCode>
        <HostURL>string</HostURL>
        <ReceiptURL>string</ReceiptURL>
        <GetAVSResult>string</GetAVSResult>
        <GetAVSResultTXT>string</GetAVSResultTXT>
        <GetStreetMatchTXT>string</GetStreetMatchTXT>
        <GetZipMatchTXT>string</GetZipMatchTXT>
        <GetCVResult>string</GetCVResult>
        <GetCVResultTXT>string</GetCVResultTXT>
        <GetGetOrigResult>string</GetGetOrigResult>
        <GetCommercialCard>string</GetCommercialCard>
        <WorkingKey>string</WorkingKey>
        <KeyPointer>string</KeyPointer>
        <ExtData>string</ExtData>
      </ProcessDebitCardResult>
    </ProcessDebitCardResponse>
  </soap12:Body>
</soap12:Envelope>
```

#### HTTP POST

The following is a sample HTTP POST request and response. The placeholders shown need to be replaced with actual values.

```
POST /ArgoFire/transact.asmx/ProcessDebitCard HTTP/1.1
Host: secure.ftipgw.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

UserName=string&Password=string&TransType=string&CardNum=string&ExpDate=string&MagData=string&NameOnCard=string&Amount=string&InvNum=string&PNRef=string&Pin=string&RegisterNum=string&SureChargeAmt=string&CashBackAmt=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"?>
<Response xmlns="http://TPISoft.com/SmartPayments/">
  <Result>int</Result>
  <RespMSG>string</RespMSG>
  <Message>string</Message>
  <Message1>string</Message1>
  <Message2>string</Message2>
  <AuthCode>string</AuthCode>
  <PNRef>string</PNRef>
  <HostCode>string</HostCode>
  <HostURL>string</HostURL>
  <ReceiptURL>string</ReceiptURL>
  <GetAVSResult>string</GetAVSResult>
  <GetAVSResultTXT>string</GetAVSResultTXT>
  <GetStreetMatchTXT>string</GetStreetMatchTXT>
  <GetZipMatchTXT>string</GetZipMatchTXT>
  <GetCVResult>string</GetCVResult>
  <GetCVResultTXT>string</GetCVResultTXT>
  <GetGetOrigResult>string</GetGetOrigResult>
  <GetCommercialCard>string</GetCommercialCard>
  <WorkingKey>string</WorkingKey>
  <KeyPointer>string</KeyPointer>
  <ExtData>string</ExtData>
</Response>
```

### <mark style="color:$primary;">ExtData</mark>

`ExtData` is an XML-formatted field used to pass **processor-specific, optional, or extended transaction data** in a `ProcessCreditCard` request.

It serves as a flexible container for:

* Processor-required fields (e.g., Wells Fargo host-based processing)
* Transaction behavior modifiers (e.g., partial auth, duplicate handling)
* Enhanced data (commercial cards, recurring transactions, invoice detail)

> &#x20;Some processors require `ExtData` for all transactions.

`ExtData` must contain **well-formed XML**.

#### Basic Structure

```
<CustomerID>123</CustomerID>
<Force>T</Force>
```

#### Nested Structure (Supported)

```
<Invoice>
    <BillTo>
        <CustomerID>123</CustomerID>
        <Address>
            <Street>8320</Street>
            <Zip>85284</Zip>
        </Address>
    </BillTo>
    <TotalAmt>10.00</TotalAmt>
</Invoice>
<Force>T</Force>
```

***

**Structural Rules (Critical)**

* Multiple **top-level elements are allowed**
* Nested elements must be **properly contained**
* XML must be **well-formed and valid**

#### Invalid Example (Broken Nesting)

```
<CustomerID>123</CustomerID>
<Invoice>
    <TotalAmt>10.00</TotalAmt>
</Invoice>
<Force>T</Force>
```

**Issue:** Mixing structured and unstructured data creates an invalid hierarchy.

***

**Field Categories**

#### Behavior Modifiers

Fields that **change how the transaction is processed**.

| Field          | Description                           | Values                |
| -------------- | ------------------------------------- | --------------------- |
| `Force`        | Allow duplicate transactions          | `T`, `F`              |
| `Partial`      | Allow partial authorization (FSA/HSA) | `T`, `F`              |
| `TrainingMode` | Enable training/test mode             | `T`, `F`              |
| `Timeout`      | Timeout in seconds                    | Numeric (default: 40) |

***

#### Card & Entry Data

| Field        | Description            | Values                                                         |
| ------------ | ---------------------- | -------------------------------------------------------------- |
| `EntryMode`  | Card entry method      | `Manual`, `MagneticStripe`, `ICC`, `Proximity`                 |
| `CVPresence` | CVV presence indicator | `None`, `NotSubmitted`, `Submitted`, `Illegible`, `NotPresent` |

***

#### Transaction & Reference Data

| Field                | Description                 |
| -------------------- | --------------------------- |
| `CustomerID`         | Customer identifier         |
| `CustomerIDAuthCode` | Original authorization code |
| `RegisterNum`        | Register number             |
| `ServerID`           | Server identifier           |
| `PONum`              | Purchase order number       |
| `City`               | Billing city                |

***

Amount & Commercial Data

| Field      | Description                      |
| ---------- | -------------------------------- |
| `TipAmt`   | Tip amount                       |
| `TaxAmt`   | Tax amount (commercial cards)    |
| `CustCode` | Customer code (commercial cards) |

***

Recurring Transactions

| Field           | Description                  |
| --------------- | ---------------------------- |
| `SequenceNum`   | Current transaction number   |
| `SequenceCount` | Total number of transactions |

***

Other

| Field         | Description            | Values   |
| ------------- | ---------------------- | -------- |
| `BillPayment` | Bill payment indicator | `T`, `F` |

***

`ExtData` must contain **well-formed XML**.

**Basic Structure**

```
<CustomerID>123</CustomerID>
<Force>T</Force>
```

**Nested Structure (Supported)**

```
<Invoice>
    <BillTo>
        <CustomerID>123</CustomerID>
        <Address>
            <Street>8320</Street>
            <Zip>85284</Zip>
        </Address>
    </BillTo>
    <TotalAmt>10.00</TotalAmt>
</Invoice>
<Force>T</Force>
```

***

**Structural Rules (Critical)**

* Multiple **top-level elements are allowed**
* Nested elements must be **properly contained**
* XML must be **well-formed and valid**

**Invalid Example (Broken Nesting)**

```
<CustomerID>123</CustomerID>
<Invoice>
    <TotalAmt>10.00</TotalAmt>
</Invoice>
<Force>T</Force>
```

**Issue:** Mixing structured and unstructured data creates an invalid hierarchy.

***

**Field Categories**

**Behavior Modifiers**

Fields that **change how the transaction is processed**.

| Field          | Description                           | Values                |
| -------------- | ------------------------------------- | --------------------- |
| `Force`        | Allow duplicate transactions          | `T`, `F`              |
| `Partial`      | Allow partial authorization (FSA/HSA) | `T`, `F`              |
| `TrainingMode` | Enable training/test mode             | `T`, `F`              |
| `Timeout`      | Timeout in seconds                    | Numeric (default: 40) |

***

**Card & Entry Data**

| Field        | Description            | Values                                                         |
| ------------ | ---------------------- | -------------------------------------------------------------- |
| `EntryMode`  | Card entry method      | `Manual`, `MagneticStripe`, `ICC`, `Proximity`                 |
| `CVPresence` | CVV presence indicator | `None`, `NotSubmitted`, `Submitted`, `Illegible`, `NotPresent` |

***

**Transaction & Reference Data**

| Field                | Description                 |
| -------------------- | --------------------------- |
| `CustomerID`         | Customer identifier         |
| `CustomerIDAuthCode` | Original authorization code |
| `RegisterNum`        | Register number             |
| `ServerID`           | Server identifier           |
| `PONum`              | Purchase order number       |
| `City`               | Billing city                |

***

#### Amount & Commercial Data

| Field      | Description                      |
| ---------- | -------------------------------- |
| `TipAmt`   | Tip amount                       |
| `TaxAmt`   | Tax amount (commercial cards)    |
| `CustCode` | Customer code (commercial cards) |

***

**Recurring Transactions**

| Field           | Description                  |
| --------------- | ---------------------------- |
| `SequenceNum`   | Current transaction number   |
| `SequenceCount` | Total number of transactions |

***

**Other**

| Field         | Description            | Values   |
| ------------- | ---------------------- | -------- |
| `BillPayment` | Bill payment indicator | `T`, `F` |

***

Usage Guidelines

Use `ExtData` when:

* Required by the processor
* Implementing advanced features (recurring, Level 2/3, invoice data)
* Passing fields not available in the standard request

***

Behavior Notes

* `ExtData` is **not strictly validated** at the platform level
* Validation and requirements are often **processor-specific**
* Unsupported fields may be ignored or cause failure

Partial Authorization

If `Partial = T`, the processor may approve **less than the requested amount**.\
Integrations must handle partial approvals accordingly.

Use `ExtData` when:

* Required by the processor
* Implementing advanced features (recurring, Level 2/3, invoice data)
* Passing fields not available in the standard request

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.frontstream.com/argofire/full-endpoint-reference-and-tools/payment-processing-credit-check-debit.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
