Included in the packet:
Genius Certification Script, Implementation Review Outline, EMV Response message field and value documentation, EMV XML Schema for the response structure, EMV receipt requirements matrix, Genius/EMV certification script with EMV response simulator instructions.
Integration & certification Support
Please reach out to your Business Development Director if you're ready for certification and they can schedule a call to cover the details of this new functionality.
An implementation review call will be scheduled as the last step of the Genius Certification process. The following three items will be required to be demonstrated on the call:
This documentation serves as a reference guide for Point of Sale developers looking to accept different payment types available using simplified integration methods. Please note that you must contact the Certification team if you intend to use HTTPS to make requests.
For more details on network configuration, see our FAQ page here.
| Column 1 | Column 2 |
|---|---|
| 1 Stage Transaction | Generate a unique key (TransportKey) using the createTransaction web service method to stage the transaction parameters. |
| 2 Initiate Transaction | a. Send the TransportKey to the Customer Engagement Device using the GET method and wait for the customer to complete the transaction. b. After the transaction is completed, the device sends the response back to the Point of Sale in XML or JSON format. |
| 3 Retrieve Transaction Details | Optional Use the DetailsByTransportKey web service method to retrieve additional payment information for payments like gift and loyalty. |
| Column 1 | Column 2 |
|---|---|
| Stage Transaction | https://transport.merchantware.net/v4/transportService.asmx |
| Initiate Transaction | http://127.0.0.1:8080/v2/pos?TransportKey=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx&Format=xxx |
| Retrieve Details | https://genius.merchantware.net/v1/Reporting.asmx |
The CreateTransaction web service method allows you to submit non-sensitive payment information to the payment gateway and returns a unique key (TransportKey) in the response which will be used for all subsequent steps to identify the transaction.
Content-Type: text/xml; charset=utf-8
SOAPAction: http://transport.merchantware.net/v4/CreateTransaction
| Column 1 | Column 2 |
|---|---|
| Staging Endpoint | https://transport.merchantware.net/v4/transportService.asmx |
Code Sample: Our Knowledge Base has a collection of code samples in a variety of languages to help you get started. Click below for a sample of this functionality
Request Parameters
| Name | Type | Size | Description |
|---|---|---|---|
| merchantName | String | 1-160 | The name of the business or organization owning the Merchantware account. |
| merchantSiteId | String | 8-160 | The site identifier of a location or storefront owned by the Merchantware account owner. |
| merchantKey | String | 1-160 | The software key or password for the site accessing a Merchantware account. |
| Request | TransportRequest | -- | A TransportRequest object containing the transaction data. Details below. |
| Name | Type | Size | Description |
|---|---|---|---|
| TransactionType | String | 4-14 | The transaction type for this transaction. Valid values:• SALE• _REFUND• LEVEL2SALE - level 2 transaction for business/corp cards. Requires tax amount, customer code and po number fields.• PREAUTH - preauthorizes card only. A POSTAUTH needs to be performed to capture the transaction.• FORCESALE - used to perform a voice authorization transaction by using the authorization code. |
| Amount | Decimal | 0-214748.36 | The desired amount for a transaction. |
| ClerkId | String | 1-50 | A unique ID for the user running the transaction. POS can send the server ID, clerk ID, employee ID, register ID or any other ID that identifies the user or system running the transaction. |
| OrderNumber | String | 1-8 | The order or invoice number associated with the transaction. |
| Dba | String | 1-50 | The business name for the merchant as it should appear to the customer. |
| SoftwareName | String | 1-50 | The name of the software application sending the request. |
| SoftwareVersion | String | 1-25 | The version number of the software application sending the request. |
| TransactionId | String | 1-100 | The merchant-defined identifier for the transaction. |
| ForceDuplicate | Boolean | -- | Override duplicate protection and allow the transaction to process normally.• true• false |
| CustomerCode | String | 1-50 | Required for level 2 transactions. The merchant-defined identifier for the customer involved in the transaction. |
| PoNumber | String | 1-8 | Required for level 2 transactions. The customer-defined identifier declaring a purchase order for the transaction. |
| TaxAmount | Decimal | 0-20,000 | Required for Level 2 transactions. The declared tax amount of the transaction, this does not affect the Amount value. |
| TerminalId | String | 0-16 | Terminal ID to uniquely identify the terminal to the processor. The terminal ID must contain all numeric characters. If no value is supplied, the last 2 digits of the Genius device serial number will be used as a default value. For more information about the TID value that should be used for merchants, take a look at our article . |
Notes: If the sum of the SnapAmount and SnapTaxAmount is greater than the Amount, you cannot use SNAP for the transaction.
| Name | Type | Description |
|---|---|---|
| transportKey | String (GUID) | A GUID that references the staged transaction. Used for subsequent actions like initiating the transaction request on the Genius device. |
| validationKey | String (GUID) | A GUID that is used to validate the response from the Genius device upon the completion of the transaction. |
| messages | MessageList | A collection of message objects that contain any error messages generated by the request. Each message contains a field and information field. |
<?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>
<CreateTransaction xmlns="http://transport.merchantware.net/v4/">
<merchantName>ZERO INC</merchantName>
<merchantSiteId>00000000</merchantSiteId>
<merchantKey>00000-00000-00000-00000-00000</merchantKey>
<request>
<TransactionType>SALE</TransactionType>
<Amount>1.23</Amount>
<ClerkId>ABC123</ClerkId>
<OrderNumber>ABC123</OrderNumber>
<Dba>ZERO BRANDS</Dba>
<SoftwareName>ABC SOFTWARE</SoftwareName>
<SoftwareVersion>1.0.0.0</SoftwareVersion>
<Cardholder>VISA TEST CARD</Cardholder>
<TransactionId>ABC123</TransactionId>
<ForceDuplicate>false</ForceDuplicate>
<CustomerCode>ABC123</CustomerCode>
<PoNumber>ABC123</PoNumber>
<TaxAmount>0.09</TaxAmount>
<TerminalId>01</TerminalId>
<AuthorizationCode>OK9999</AuthorizationCode>
<HealthCareAmountDetails>
<HealthCareTotalAmount>1.23</HealthCareTotalAmount>
<ClinicalAmount>0.23</ClinicalAmount>
<CopayAmount>0.25</CopayAmount>
<DentalAmount>0.25</DentalAmount>
<PrescriptionAmount>0.25</PrescriptionAmount>
<VisionAmount>0.25</VisionAmount>
</HealthCareAmountDetails>
<TipDetails>
<EligibleAmount>1.00</EligibleAmount>
</TipDetails>
<EbtAmountDetails>
<SnapAmount>2.50</SnapAmount>
<SnapTaxAmount>1.00</SnapTaxAmount>
</EbtAmountDetails>
<Invoice>
<TaxIndicator>Provided</TaxIndicator>
<ProductDescription>Misc Goods</ProductDescription>
<DiscountAmount>1.01</DiscountAmount>
<ShippingAmount>1.02</ShippingAmount>
<DutyAmount>1.03</DutyAmount>
<DestinationPostalCode>06033</DestinationPostalCode>
<DestinationCountryCode>840</DestinationCountryCode>
<ShipFromPostalCode>01887</ShipFromPostalCode>
<LineItems>
<LineItem>
<CommodityCode>030</CommodityCode>
<Description>Misc Goods</Description>
<Upc>012345678901</Upc>
<Quantity>5.1</Quantity>
<UnitOfMeasure>lbs</UnitOfMeasure>
<UnitCost>0.60</UnitCost>
<DiscountAmount>0.61</DiscountAmount>
<TotalAmount>0.62</TotalAmount>
<TaxAmount>0.63</TaxAmount>
<ExtendedAmount>0.64</ExtendedAmount>
<DebitOrCreditIndicator>Credit</DebitOrCreditIndicator>
<NetOrGrossIndicator>Gross</NetOrGrossIndicator>
</LineItem>
</LineItems>
</Invoice>
<CardOnFileDetails>
<StoreCardInVault>true</StoreCardInVault>
<StoredCardReason>UnscheduledCIT</StoredCardReason>
</CardOnFileDetails>
</request>
</CreateTransaction>
</soap:Body>
</soap:Envelope><?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>
<CreateTransactionResponse xmlns="http://transport.merchantware.net/v4/">
<CreateTransactionResult>
<TransportKey>xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx</TransportKey>
<ValidationKey>xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx</ValidationKey>
<Messages>
<Message>
<Field/>
<Information/>
</Message>
<Message>
<Field/>
<Information/>
</Message>
</Messages>
</CreateTransactionResult>
</CreateTransactionResponse>
</soap:Body>
</soap:Envelope>REQUEST Use GET to send the TransportKey to the Customer Engagement Device. The device will prompt the customer to select the payment type and complete the transaction. The Point of Sale will keep the port open to the device and wait for the GET request to complete. The GET response will contain an XML or JSON packet.
For more information on how to get the Genius device's Hostname, see our FAQ article How can I Connect to a Genius Device.
HTTP request parameters
| Column 1 | Column 2 |
|---|---|
| v2 Sample XML request [Default] | http://127.0.0.1:8080/v2/pos?TransportKey=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx&Format=XMLAdditional Connection Methods |
| v2 Sample JSON request | http://127.0.0.1:8080/v2/pos?TransportKey=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx&Format=JSONAdditional Connection Methods |
Android Intents request parameters
| Name | Required | Type | Description |
|---|---|---|---|
| ResultReceiverID | Yes | String | Genius returns the result using this ResultReceiverID. You should use your POS name as your ResultReceiverID. |
| TransportKey | Yes | String | The TransportKey received in the Stage transaction response. |
| Format | Yes | String | The format that the CED should respond in.• XML• JSON |
| URI | Yes | String | /version/pos version indicates the version of call set in settings |
RESPONSE When the transaction is completed, the device will send the transaction results back to the Point of Sale so it can be parsed out, stored and used at a later time if necessary.
| Name | Type | Description |
|---|---|---|
| Status | String | The status of the transaction, typically 'APPROVED', 'DECLINED' or 'ERROR'. This value may also have other definitions depending on CardType and context. For cancelled transactions, the status returned will be 'USERCANCELLED' for transactions cancelled by the user or 'POSCANCELLED' for transactions cancelled by the POS system. |
| AmountApproved | Decimal | The amount of the transaction that was approved. |
| AuthorizationCode | String | Authorization Code issued by the processor upon receipt of a transaction. |
| Cardholder | String | The Cardholder associated with the payment card used in a transaction. |
| AccountNumber | String | A string representing the truncated card number of the payment card used in a transaction. |
| PaymentType | enum | The issuer type of payment card used in a transaction.• VISA - Visa• MASTERCARD - Mastercard or Diner's Club• AMEX - American Express• DISCOVER - Discover• DEBIT - PIN Debit• GIFT - Gift card• EBT - Electronic Balance Transfer card• VOYAGER - Voyager fleet card• WEX - Wright Express fleet card• JCB - Japan Credit Bureau• CUP - China Union Pay• UNKNOWN - This value is reserved.• PRIVATELABEL - This payment type is not available by default, for more information about private label cards, email [developer@cayan.com](mailto:developer@cayan.com). |
| EntryMode | enum | The entry mode for this transaction• SWIPE - Magnetic stripe• PROXIMITY - Contactless / NFC• BARCODE - Barcode• MANUAL - KeyedSale (N.B. Only as result of [Initiate Keyed Entry](https://developer.globalpaymentsintegrated.com/#/landing/content/%2Fportal%2Fweb%2Fapi%2Fgenius-terminals%2FMini-Android?top=Genius%20API&amp;l1=Genius%20Terminals&amp;l2=Initiate%20Keyed%20Entry#Initiate\_Keyed\_Entry)) |
| Name | Type | Description |
|---|---|---|
| Aid | String | ID of the EMV application selected by the customer. |
| ApplicationLabel | String | The application label as displayed to the customer. |
| PINStatement | String | Statement to signify ’PIN Verified’ or ‘PIN Locked’. |
These EMV fields are the ones required to be used for compliance. For the additional optional fields, see the V2 Examples available above.
<?xml version="1.0" encoding="utf-8"?>
<TransactionResult>
<Status>APPROVED</Status>
<AmountApproved>6.01</AmountApproved>
<AuthorizationCode>OK0601</AuthorizationCode>
<Cardholder>TEST CARD/GENIUS</Cardholder>
<AccountNumber>************0026</AccountNumber>
<PaymentType>VISA</PaymentType>
<EntryMode>SWIPE</EntryMode>
<ErrorMessage/>
<Token>1601601601</Token>
<TransactionDate>3/29/2016 2:58:41 PM</TransactionDate>
<TransactionType>SALE</TransactionType>
<ResponseType>SINGLE</ResponseType>
<ValidationKey>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</ValidationKey>
<AdditionalParameters>
<SignatureData>10,10^110,110^0,65535^10,110^110,10^0,65535^~</SignatureData>
<AmountDetails>
<UserTip>0.00</UserTip>
<Cashback>0.00</Cashback>
<Donation>0.00</Donation>
<Surcharge>0.00</Surcharge>
<Discount>
<Total>0.00</Total>
</Discount>
</AmountDetails>
</AdditionalParameters>
</TransactionResult>{
"Status": "APPROVED",
"AmountApproved": "6.01",
"AuthorizationCode": "OK0601",
"Cardholder": "TEST CARD\/GENIUS",
"AccountNumber": "************0026",
"PaymentType": "VISA",
"EntryMode": "SWIPE",
"ErrorMessage": "",
"Token": "1601601601",
"TransactionDate": "3\/29\/2016 3:01:09 PM",
"TransactionType": "SALE",
"ResponseType": "SINGLE",
"ValidationKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"AdditionalParameters": {
"SignatureData": "10,10^110,110^0,65535^10,110^110,10^0,65535^~",
"AmountDetails": {
"UserTip": "0.00",
"Cashback": "0.00",
"Donation": "0.00",
"Surcharge": "0.00",
"Discount": {
"Total": "0.00"
}
}
}
}<?xml version="1.0" encoding="utf-8"?>
<TransactionResult>
<Status>APPROVED</Status>
<AmountApproved>6.01</AmountApproved>
<AuthorizationCode>OK0601</AuthorizationCode>
<Cardholder>TEST CARD/GENIUS</Cardholder>
<AccountNumber>************0026</AccountNumber>
<PaymentType>VISA</PaymentType>
<EntryMode>SWIPE</EntryMode>
<ErrorMessage/>
<Token>1601601601</Token>
<TransactionDate>3/29/2016 2:58:41 PM</TransactionDate>
<TransactionType>SALE</TransactionType>
<ResponseType>SINGLE</ResponseType>
<ValidationKey>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</ValidationKey>
<AdditionalParameters>
<SignatureData/>
<AmountDetails>
<UserTip>0.00</UserTip>
<Cashback>0.00</Cashback>
<Donation>0.00</Donation>
<Surcharge>0.00</Surcharge>
<Discount>
<Total>0.00</Total>
</Discount>
</AmountDetails>
<EMV>
<ApplicationInformation>
<Aid>A0000000032010</Aid>
<ApplicationLabel>Visa Electron</ApplicationLabel>
<ApplicationExpiryDate>1/1/2017</ApplicationExpiryDate>
<ApplicationEffectiveDate>1/1/2014</ApplicationEffectiveDate>
<ApplicationInterchangeProfile>1359</ApplicationInterchangeProfile>
<ApplicationVersionNumber>1</ApplicationVersionNumber>
<ApplicationTransactionCounter>826</ApplicationTransactionCounter>
<ApplicationUsageControl>1234</ApplicationUsageControl>
<ApplicationPreferredName>Visa Electron</ApplicationPreferredName>
<ApplicationDisplayName>Visa Electron</ApplicationDisplayName>
</ApplicationInformation>
<CardInformation>
<MaskedPan>************0026</MaskedPan>
<PanSequenceNumber>1</PanSequenceNumber>
<CardExpiryDate>01/19</CardExpiryDate>
</CardInformation>
<ApplicationCryptogram>
<CryptogramType>TC</CryptogramType>
<Cryptogram>9F424AA68EB17A2</Cryptogram>
</ApplicationCryptogram>
<CvmResults>010001</CvmResults>
<IssuerApplicationData>123AB123456123</IssuerApplicationData>
<TerminalVerificationResults>123AB12345</TerminalVerificationResults>
<UnpredictableNumber>2147483647</UnpredictableNumber>
<Amount>
<AmountAuthorised>6.01</AmountAuthorised>
<AmountOther>0.00</AmountOther>
</Amount>
<PosEntryMode>05</PosEntryMode>
<TerminalInformation>
<TerminalType>22</TerminalType>
<IfdSerialNumber>1211-121-1212</IfdSerialNumber>
<TerminalCountryCode>840</TerminalCountryCode>
<TerminalID>12345678</TerminalID>
<TerminalActionCodeDefault>DC404F800</TerminalActionCodeDefault>
<TerminalActionCodeDenial>DC404F800</TerminalActionCodeDenial>
<TerminalActionCodeOnline>DC404F800</TerminalActionCodeOnline>
</TerminalInformation>
<TransactionInformation>
<TransactionType>GOODS</TransactionType>
<TransactionCurrencyCode>840</TransactionCurrencyCode>
<TransactionStatusInformation>E800</TransactionStatusInformation>
</TransactionInformation>
<CryptogramInformationData>AB</CryptogramInformationData>
<PINStatement>PIN Verified</PINStatement>
<CvmMethod>ONLINE PIN</CvmMethod>
<IssuerActionCodeDefault>1234567890</IssuerActionCodeDefault>
<IssuerActionCodeDenial>1234567890</IssuerActionCodeDenial>
<IssuerActionCodeOnline>1234567890</IssuerActionCodeOnline>
<AuthorizationResponseCode>00</AuthorizationResponseCode>
</EMV>
</AdditionalParameters>
</TransactionResult>{
"Status": "APPROVED",
"AmountApproved": "6.01",
"AuthorizationCode": "OK0601",
"Cardholder": "TEST CARD\/GENIUS",
"AccountNumber": "************0026",
"PaymentType": "VISA",
"EntryMode": "SWIPE",
"ErrorMessage": "",
"Token": "601601601",
"TransactionDate": "3\/29\/2016 3:01:09 PM",
"TransactionType": "SALE",
"ResponseType": "SINGLE",
"ValidationKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"AdditionalParameters": {
"SignatureData": "",
"AmountDetails": {
"UserTip": "0.00",
"Cashback": "0.00",
"Donation": "0.00",
"Surcharge": "0.00",
"Discount": {
"Total": "0.00"
}
},
"EMV": {
"ApplicationInformation": {
"Aid": "A0000000032010",
"ApplicationLabel": "Visa Electron",
"ApplicationExpiryDate": "1\/1\/2017",
"ApplicationEffectiveDate": "1\/1\/2014",
"ApplicationInterchangeProfile": "1359",
"ApplicationVersionNumber": "1",
"ApplicationTransactionCounter": "826",
"ApplicationUsageControl": "1234",
"ApplicationPreferredName": "Visa Electron",
"ApplicationDisplayName": "Visa Electron"
},
"CardInformation": {
"MaskedPan": "************0026",
"PanSequenceNumber": "1",
"CardExpiryDate": "01\/19"
},
"ApplicationCryptogram": {
"CryptogramType": "TC",
"Cryptogram": "9F424AA68EB17A2"
},
"CvmResults": "010001",
"IssuerApplicationData": "123AB123456123",
"TerminalVerificationResults": "123AB12345",
"UnpredictableNumber": "2147483647",
"Amount": {
"AmountAuthorised": "6.01",
"AmountOther": "0.00"
},
"PosEntryMode": "05",
"TerminalInformation": {
"TerminalType": "22",
"IfdSerialNumber": "1211-121-1212",
"TerminalCountryCode": "840",
"TerminalID": "12345678",
"TerminalActionCodeDefault": "DC404F800",
"TerminalActionCodeDenial": "DC404F800",
"TerminalActionCodeOnline": "DC404F800"
},
"TransactionInformation": {
"TransactionType": "GOODS",
"TransactionCurrencyCode": "840",
"TransactionStatusInformation": "E800"
},
"CryptogramInformationData": "AB",
"PINStatement": "PIN Verified",
"CvmMethod": "ONLINE PIN",
"IssuerActionCodeDefault": "1234567890",
"IssuerActionCodeDenial": "1234567890",
"IssuerActionCodeOnline": "1234567890",
"AuthorizationResponseCode": "00",
"UnexpectedEMVField": null,
"UnexpectedEmptyField1": null,
"UnexpectedEmptyField2": null,
"UnexpectedEmptyField3": null
}
}
}V1 Initiate Transaction request has been replaced with V2 requests, and the use of V1 will prevent the activation of features such as EMV. Please only use these sections as reference for the old format response values and examples
| Name | Type | Description |
|---|---|---|
| Status | String | The status of the transaction, typically 'APPROVED' or 'DECLINED'. This value may also have other definitions depending on CardType and context. For cancelled transactions, the status returned will be 'USERCANCELLED' for transactions cancelled by the user or 'POSCANCELLED' for transactions cancelled by the POS system. |
| AmountApproved | Decimal | The amount of the transaction that was approved. If partial authorizations are enabled, this will be the authorized amount and may be different than the requested amount. |
| AuthorizationCode | String | Authorization Code issued by the processor upon receipt of a transaction. |
| Cardholder | String | The Cardholder associated with the payment card used in a transaction. |
| AccountNumber | String | A string representing the truncated card number of the payment card used in a transaction. |
| PaymentType | enum | The issuer type of payment card used in a transaction.• VISA - Visa• MASTERCARD - Mastercard or Diner's Club• AMEX - American Express• DISCOVER - Discover• DEBIT - PIN Debit• GIFT - Gift card• EBT - Electronic Balance Transfer card• VOYAGER - Voyager fleet card• WEX - Wright Express fleet card• JCB - Japan Credit Bureau• CUP - China Union Pay• UNKNOWN - This value is reserved. |
| EntryMode | enum | The entry mode for this transaction• SWIPE - Magnetic stripe• PROXIMITY - Contactless / NFC• BARCODE - Barcode• MANUAL - KeyedSale (N.B. Only as result of [Initiate Keyed Entry](https://developer.globalpaymentsintegrated.com/#/landing/content/%2Fportal%2Fweb%2Fapi%2Fgenius-terminals%2FMini-Android?top=Genius%20API&amp;l1=Genius%20Terminals&amp;l2=Initiate%20Keyed%20Entry#Initiate\_Keyed\_Entry)) |
V1 Initiate Transaction request has been replaced with V2 requests, and the use of V1 will prevent the activation of features such as EMV. Please only use these sections as reference for the old format response values and examples.
<?xml version="1.0" encoding="utf-8"?>
<TransactionResult>
<Status>APPROVED</Status>
<AmountApproved>10.00</AmountApproved>
<AuthorizationCode>MC1234</AuthorizationCode>
<Cardholder>Joe Smith</Cardholder>
<AccountNumber>************1234</AccountNumber>
<PaymentType>Mastercard</PaymentType>
<EntryMode>SWIPE</EntryMode>
<ErrorMessage/>
<Token>1601601601</Token>
<TransactionDate>5/4/2015 6:27:54 PM</TransactionDate>
<TransactionType>SALE</TransactionType>
<ResponseType>SINGLE</ResponseType>
<ValidationKey>xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx</ValidationKey>
<AdditionalParameters>
<SignatureData>10,10^110,110^0,65535^10,110^110,10^0,65535^~</SignatureData>
<AmountDetails>
<UserTip>0.00</UserTip>
<Cashback>0.00</Cashback>
<Donation>0.00</Donation>
<Surcharge>0.00</Surcharge>
<RemainingCardBalance>100.00</RemainingCardBalance>
<Discount>
<Total>0.00</Total>
<DiscountsApplied>
<DiscountApplied>
<Amount>0.00</Amount>
<Type>Softcard Offer</Type>
<Message/>
</DiscountApplied>
</DiscountsApplied>
</Discount>
</AmountDetails>
</AdditionalParameters>
</TransactionResult>{
"Status": "APPROVED",
"AmountApproved": "10.00",
"AuthorizationCode": "MC1234",
"Cardholder": "Joe Smith",
"AccountNumber": "************1234",
"PaymentType": "Mastercard",
"EntryMode": "SWIPE",
"ErrorMessage": "",
"Token": "1601601601",
"TransactionDate": "5\/4\/2015 6:27:54 PM ",
"TransactionType": "SALE",
"ResponseType": "SINGLE",
"ValidationKey": "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx",
"AdditionalParameters": {
"SignatureData": "10,10^110,110^0,65535^10,110^110,10^0,65535^~",
"AmountDetails": {
"UserTip": "0.00",
"Cashback": "0.00",
"Donation": "0.00",
"Surcharge": "0.00",
"RemainingCardBalance": "100.00",
"Discount": {
"Total": "0.00",
"DiscountsApplied": {
"DiscountApplied": {
"Amount": "0.00",
"Type": "Softcard Offer",
"Message": ""
}
}
}
}
}
}When using Android Intents, you can use the following sample to initiate a transaction.
String URI = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("saleVer", getString(R.string.version2)) + "/pos";
Intent intent = new Intent(MainActivity.REQUEST_ACTION);
intent.putExtra("ResultReceiverID",MainActivity.RECEIVERID);
intent.putExtra("TransportKey", params.get("TransportKey"));
intent.putExtra("Format",PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("format", getString(R.string.XML)));
intent.putExtra("URI", URI);
getActivity().sendBroadcast(intent);You can bring the application to the foreground using either HTTP, HTTPS, or Android Intents.
ActivityManager result = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> rt = activityManager.getRunningTasks(Integer.MAX_VALUE);
activityManager.moveTaskToFront(getTaskId(), 0);When using Android Intents, you must specify a result activity ID. You should use your POS name when specifying a result activity ID.
public static final String RECEIVERID = "android.intent.action.genius.pos.result";
Specify a callback in your main application activity:
@Override
public void onReceive(Context context, Intent intent) {
String result = intent.getStringExtra("result");
String description = intent.getStringExtra("description");
Log.d("LogEng", result);
showResultDialog(result);
if (Defines.POSAction.valueOf(description) != Defines.POSAction.InitiateKeyedEntry) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
activityManager.moveTaskToFront(getTaskId(), 0);
}
}The DetailsByTransportKey web service method allows the Point of Sale developers to send in the original TransportKey and request additional payment information at a later time.
Content-Type: text/xml; charset=utf-8
SOAPAction: http://schemas.merchantwarehouse.com/genius/10/Reporting/DetailsByTransportKey
| Column 1 | Column 2 |
|---|---|
| Reporting Endpoint | https://genius.merchantware.net/v1/Reporting.asmx |
| Name | Type | Size | Description |
|---|---|---|---|
| Name | String | 1-160 | The name of the business or organization owning the Merchantware account. |
| SiteID | String | 8-160 | The site identifier of a location or storefront owned by the Merchantware account owner. |
| Key | String | 1-160 | The software key or password for the site accessing a Merchantware account. |
| TransportKey | String | 1-160 | The unique key generated using the createTransaction method. |
| Name | Type | Description |
|---|---|---|
| Status | String | The Status of the transaction, whether approved or declined. This value may also have other definitions depending on CardType and context. |
| ErrorMessage | String | A message indicating why the transaction could not be processed. |
| TotalAmountApproved | String | The amount of the transaction that was approved. If partial authorizations are enabled, this will be the authorized amount and may be different than the requested amount. |
| RequestedAmount | String | The requested amount of the transaction. |
| ResponseType | String | SINGLE, MULTI or COMPOUND. Typical credit, debit and EBT payment types will return SINGLE as the ResponseType. MULTI or COMPOUND response types are returned for additional payment types such as gift and loyalty. |
| Payment Details | PaymentDetail | Collection of detail objects for the transaction processed. If more than one payment type was processed to complete the transaction, each sub-transaction will be in the collection. For example, if a $100 transaction is processed using a $30 gift card and $70 credit card transaction, there will be a payment detail for each one within the payment details object. |
| ReportingInvoice | Object | An optional field that specifies various data for level three processing-rates. |
| AdditionalResponseParameters | Object | • FsaCard – Can be True if customer uses FSA Card or False if the customer does not use an FSA Card.• <EbtDetails><EbtType>SNAP</EbtType><FnsId>222222222</FnsId><Balances><CashAvailableBalance>12.00</CashAvailableBalance><SnapAvailableBalance>30.00</SnapAvailableBalance></Balances></EbtDetails>. <EbtType> can be CASH or SNAP. <FnsId> is shown only when <EbtType> is SNAP. |
<?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>
<DetailsByTransportKey xmlns="http://schemas.merchantwarehouse.com/genius/10/Reporting">
<Name>ZERO INC</Name>
<SiteID>00000000</SiteID>
<Key>00000-00000-00000-00000-00000</Key>
<TransportKey>xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx</TransportKey>
</DetailsByTransportKey>
</soap12:Body>
</soap12:Envelope><?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>
<DetailsByTransportKeyResponse xmlns="http://tempuri.org/">
<DetailsByTransportKeyResult>
<Status>UNKNOWN or APPROVED or FAILED or DECLINED or DECLINED_DUPLICATE or REFERRAL</Status>
<ErrorMessage>string</ErrorMessage>
<TotalAmountApproved>decimal</TotalAmountApproved>
<RequestedAmount>decimal</RequestedAmount>
<ResponseType>UNKNOWN or SINGLE or MULTI or COMPOUND</ResponseType>
<PaymentDetails>
<PaymentDetail>
<PaymentType>UNKNOWN or AMEX or DISCOVER or MASTERCARD or VISA or DEBIT or EBT or EGC or WEX or VOYAGER or JCB or CUP or LU</PaymentType>
<Status>UNKNOWN or APPROVED or FAILED or DECLINED or DECLINED_DUPLICATE or REFERRAL</Status>
<ErrorMessage>string</ErrorMessage>
<TransactionType>UNKNOWN or SALE or REFUND or AUTHORIZATION</TransactionType>
<Token>string</Token>
<AuthorizationCode>string</AuthorizationCode>
<Customer>string</Customer>
<Email>string</Email>
<PhoneNumber>string</PhoneNumber>
<AccountNumber>string</AccountNumber>
<ExpirationDate>string</ExpirationDate>
<EntryMode>UNKNOWN or MANUAL or SWIPE or AUTHORIZATION or PROXIMITY or BARCODE</EntryMode>
<TransactionDate>dateTime</TransactionDate>
<AmountDetail>
<AmountApproved>30.00</AmountApproved>
<AmountCharged>0</AmountCharged>
<TaxAmount>1.88</TaxAmount>
<TipAmount>2.50</TipAmount>
<UserTipAmount>2.50</UserTipAmount>
<DiscountAmount>4.00</DiscountAmount>
<VoucherAmount>1.00</VoucherAmount>
<RemainingCardBalance>100.00</RemainingCardBalance>
</AmountDetail>
<SignatureDetail>
<SignatureType>VECTOR</SignatureType>
<Signature>10,10^110,110^0,65535^10,110^110,10^0,65535^~</Signature>
</SignatureDetail>
<GiftDetail>
<Balance>25.35</Balance>
</GiftDetail>
<LoyaltyDetail>
<Visits>25</Visits>
<LastVisit>2011-07-02T00:00:00</LastVisit>
<LifetimeSpend>560.33</LifetimeSpend>
<Balance>144</Balance>
</LoyaltyDetail>
<AdditionalResponseParameters>
<FsaCard>false</FsaCard>
<EbtDetails>
<EbtType>SNAP</EbtType>
<FnsId>222222222</FnsId>
<Balances>
<CashAvailableBalance>12.00</CashAvailableBalance>
<SnapAvailableBalance>30.00</SnapAvailableBalance>
</Balances>
</EbtDetails>
</AdditionalResponseParameters>
</PaymentDetail>
</PaymentDetails>
<Invoice>
<TaxIndicator>Provided</TaxIndicator>
<ProductDescription>Misc Goods</ProductDescription>
<DiscountAmount>1.01</DiscountAmount>
<ShippingAmount>1.02</ShippingAmount>
<DutyAmount>1.03</DutyAmount>
<DestinationPostalCode>06033</DestinationPostalCode>
<DestinationCountryCode>840</DestinationCountryCode>
<ShipFromPostalCode>01887</ShipFromPostalCode>
<LineItems>
<LineItem>
<CommodityCode>030</CommodityCode>
<Description>Misc Good</Description>
<Upc>012345678901</Upc>
<Quantity>5.1</Quantity>
<UnitOfMeasure>lbs</UnitOfMeasure>
<UnitCost>0.60</UnitCost>
<DiscountAmount>0.61</DiscountAmount>
<TotalAmount>0.62</TotalAmount>
<TaxAmount>0.63</TaxAmount>
<ExtendedAmount>0.64</ExtendedAmount>
<DebitOrCreditIndicator>Credit</DebitOrCreditIndicator>
<NetOrGrossIndicator>Gross</NetOrGrossIndicator>
</LineItem>
<LineItem>
<CommodityCode>031</CommodityCode>
<Description>Misc Good 2</Description>
<Upc>012345678901</Upc>
<Quantity>5.1</Quantity>
<UnitOfMeasure>lbs</UnitOfMeasure>
<UnitCost>0.60</UnitCost>
<DiscountAmount>0.61</DiscountAmount>
<TotalAmount>0.62</TotalAmount>
<TaxAmount>0.63</TaxAmount>
<ExtendedAmount>0.64</ExtendedAmount>
<DebitOrCreditIndicator>Credit</DebitOrCreditIndicator>
<NetOrGrossIndicator>Gross</NetOrGrossIndicator>
</LineItem>
</LineItems>
</Invoice>
<AdditionalResponseParameters />
</DetailsByTransportKeyResult>
</DetailsByTransportKeyResponse>
</soap:Body>
</soap:Envelope>The following methods provide the ability to perform non-transaction based functions like canceling a sale or checking on the status of the Genius CED device.
| Column 1 | Column 2 |
|---|---|
| Cancel Transaction | Sends a request to the CED to cancel the current transaction. |
| Status Check | Check CED to determine which screen the device is on. |
| Initiate Keyed Entry | Sends a request to the CED to process manual entry of PAN, Expiration Date, CVV and Zip. |
Action=Cancel Sends a request to the CED to cancel the current transaction.
| Column 1 | Column 2 |
|---|---|
| Sample request string | http://127.0.0.1:8080/v1/pos?Action=Cancel&Format=XMLAdditional Connection Methods |
Note: If the original transaction request is still pending, sending in a cancel request will force the CED to return a result to the original request with a status of 'POS Cancelled'. Please note that if the payment authorization has already occurred, the response to the original request will contain transaction data which will need to be used to 'Void' or 'Refund' the transaction.
| Name | Type | Description |
|---|---|---|
| Status | String | The status of the cancel request. Possible values are Cancelled, TransactionApproved_NoSignatureCollected, Denied, Error. |
| ResponseMessage | String | Message for Denied or Error transactions. (ie. Can’t connect, can’t cancel while processing, terminal at idle screen). |
| AdditionalParameters | Object | Placeholder for any necessary future fields. |
<?xml version="1.0" encoding="utf-8"?>
<CancelResult>
<Status>Cancelled</Status>
<ResponseMessage/>
<AdditionalParameters/>
</CancelResult>{
"Status": "Cancelled",
"ResponseMessage": "",
"AdditionalParameters": {}
}For more information on using the Status call, take a look at our Best Practices Article on Genius Status Call Use.
| Column 1 | Column 2 |
|---|---|
| v2 Sample request string | http://127.0.0.1:8080/v2/pos?Action=Status&Format=XMLAdditional Connection Methods |
v2 Response Parameters
| Name | Type | Description |
|---|---|---|
| Status | String | The status of the Genius CED. Possible values:• Online• DOWNLOAD_NEEDED |
| CurrentScreen | int | Enum that lists the current screen that the CED is on. View List |
| ResponseMessage | String | Message for Denied or Error transactions. (ie. No internet access). |
| SerialNumber | String | The CED's serial number. |
| ApplicationVersion | String | The application version that is currently installed on the CED. |
| OSVersion | String | The operating system version that is currently installed on the CED. |
| AdditionalParameters | Object | Contains extra status information when applicable. Possible fields:• <PaymentDataCaptured>false</PaymentDataCaptured> - contains true if payment data has been captured.• <RemoveEMVCard>false</RemoveEMVCard> - contains true if the transaction is complete and the card is ready to be removed.Warning New fields may be added to AdditionalParameters at any time. It is important to ensure you parse all fields and discard those which are not required. |
<?xml version="1.0" encoding="utf-8"?>
<StatusResult>
<Status>Online</Status>
<CurrentScreen>00</CurrentScreen>
<ResponseMessage>NoInternetAccess</ResponseMessage>
<SerialNumber>123-123-123</SerialNumber>
<ApplicationVersion>1.0.0.0</ApplicationVersion>
<OSVersion>18.0.0.0</OSVersion>
<AdditionalParameters>
<PaymentDataCaptured>false</PaymentDataCaptured>
<RemoveEMVCard>false</RemoveEMVCard>
</AdditionalParameters>
</StatusResult>{
"Status":"Online",
"CurrentScreen":"00",
"ResponseMessage":"NoInternetAccess",
"SerialNumber":"123-123-123",
"ApplicationVersion":"1.0.0.0",
"OSVersion":"18.0.0.0",
"AdditionalParameters":{
"PaymentDataCaptured":"false",
"RemoveEMVCard":"false"
}
}| Name | Type | Description |
|---|---|---|
| Status | String | The status of the Genius CED. Possible values:• Online• DOWNLOAD_NEEDED |
| CurrentScreen | int | Enum that lists the current screen that the CED is on. View List |
| ResponseMessage | String | Message for Denied or Error transactions. (ie. No internet access). |
| SerialNumber | String | The CED's serial number. |
| ApplicationVersion | String | The application version that is currently installed on the CED. |
| OSVersion | String | The operating system version that is currently installed on the CED. |
| AdditionalParameters | Object | This field is not used. |
<?xml version="1.0" encoding="utf-8"?>
<StatusResult>
<Status>Online</Status>
<CurrentScreen>00</CurrentScreen>
<ResponseMessage>NoInternetAccess</ResponseMessage>
<SerialNumber>123-123-123</SerialNumber>
<ApplicationVersion>1.0.0.0</ApplicationVersion>
<OSVersion>18.0.0.0</OSVersion>
<AdditionalParameters/>
</StatusResult>{
"Status": "Online",
"CurrentScreen": "00",
"ResponseMessage": "NoInternetAccess",
"SerialNumber": "123-123-123",
"ApplicationVersion": "1.0.0.0",
"OSVersion": "18.0.0.0",
"AdditionalParameters": {}
}String URI = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("cancelVer", getString(R.string.version1)) + "/pos";
Intent intent = new Intent(MainActivity.REQUEST_ACTION);
intent.putExtra("ResultReceiverID",MainActivity.RECEIVERID);
intent.putExtra("Action", "Status");
intent.putExtra("Format", PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("format", getString(R.string.XML)));
intent.putExtra("URI", URI);
getActivity().sendBroadcast(intent);Action=InitiateKeyedEntry Sends a request to the CED to process manual entry of payment data, which may include PAN, Expiration Date, CVV, and/or Zip. This function can be used only when a transaction has been staged and the Genius device displays the selection screen, swipe screen, or gift card capture screen. Using this function without an existing transaction on the device will result in a failed response. If you intend to use this feature, you must contact the Certification team.
Additionally, you can select the payment method by supplying the PaymentType parameter. Currently, we support only the GIFT PaymentType.
Note: InitiateKeyedEntry cannot be used with Refunds.
| Column 1 | Column 2 |
|---|---|
| Credit request string | http://127.0.0.1:8080/v2/pos?Action=InitiateKeyedEntry&Format=XMLAdditional Connection Methods |
| Gift request string | http://127.0.0.1:8080/v2/pos?Action=InitiateKeyedEntry&PaymentType=GIFT&Format=XMLAdditional Connection Methods |
| Name | Type | Size | Description |
|---|---|---|---|
| PaymentType | String | 1-5 | (Optional) The payment type that will be used for the keyed entry. This has the same result as pressing the payment method button. Currently, we support only the GIFT PaymentType. |
| Name | Type | Description |
|---|---|---|
| Status | String | The status of the transaction. Values can be Success, Failure or Declined. |
<?xml version="1.0" encoding="utf-8"?>
<InitiateKeyedEntryResult>
<Status>Success</Status>
</InitiateKeyedEntryResult>{
"Status": "Success"
}String URI = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("keyedEntryVer", getString(R.string.version1)) + "/pos";
Intent intent = new Intent(MainActivity.REQUEST_ACTION);
intent.putExtra("ResultReceiverID",MainActivity.RECEIVERID);
intent.putExtra("Action", "InitiateKeyedEntry");
if (paymentType.ordinal()== keyedEntryPaymentType.GIFT.ordinal())
intent.putExtra("PaymentType", paymentType.name());
intent.putExtra("Format", PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()).getString("format", getString(R.string.XML)));
intent.putExtra("URI", URI);
getActivity().sendBroadcast(intent);There are two methods you can use to send requests from your POS to the Genius device:
We recommend using the HTTPS communication method as it is a secure and reliable connection. You need to modify the request depending on the communication method you want to use. The remainder of the integration, including Endpoints and URLs, is the same for both communication methods.
| Column 1 | Column 2 |
|---|---|
| HTTPS | https://[CED-IP-Address]:8443/v2/pos?TransportKey=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx&Format=xxx |
| IP Address | http://[CED-IP-Address]:8080/v1/pos?TransportKey=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx&Format=xxx |
The HTTPS communication method lets you connect your web-based POS to the Genius device using its host name. This method is a secure and reliable connection that is not affected by a change to the IP address of the Genius device. To use the HTTPS communication method, you must install a Cayan certificate on any device that connects to a Genius device. For more information about how to install this certificate, refer to How to install a Cayan certificate.
Important: You must use the HTTPS communication method when using any web-based POS that uses CORS within the Genius application.
| Column 1 | Column 2 |
|---|---|
| HTTPS Cancel Example | https://[CED-IP-Address]:8443/v1/pos?Action=Cancel&Format=xxx |
The IP-address communication method lets you connect to the Genius device using its current IP address. We no longer recommend this method as the connection to the POS is lost if the IP address of the Genius device changes. For more information on how to locate and configure an IP address on a Genius device, refer to How can I Locate and Configure the IP Address on a Genius Device.
| Column 1 | Column 2 |
|---|---|
| IP Address | http://[CED-IP-Address]:8080/v1/pos?TransportKey=xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx&Format=xxx |
The following methods provide the ability to implement post-sale functions such as Voids, Refunds etc. These functions use the transaction result token (no card number needed). The Genius CED device does not get used for these transactions and they are sent directly to the MerchantWARE gateway.
For full documentation on the extendend functionality check our MerchantWARE 4.6 API
| Column 1 | Column 2 |
|---|---|
| CREDIT ENDPOINT | https://ps1.merchantware.net/Merchantware/ws/RetailTransaction/v46/Credit.asmx |
| GIFT ENDPOINT | https://ps1.merchantware.net/Merchantware/ws/ExtensionServices/v46/Giftcard.asmx |
| Column 1 | Column 2 |
|---|---|
| Void | Cancels a prior credit transaction, such as a sale or refund. |
| Refund | The Refund web method issues a credit card refund to a customer from a prior transaction reference. |
| Capture | The capture method captures a previously authorized card (using preauth) and marks it ready for settlement using the token. |
| Settle Batch (Close Day) | Batches out a merchant's outstanding transactions for settlement. |
| Stored Value- Add Value | Adds additional value to an existing card. |
| Stored Value - Balance Inquiry | Checks the balance on a card. |
The Void Cancels a prior credit transaction, such as a sale or refund. Once the transaction is voided and settled, the authorization falls off the cardholder's card and does not appear on their monthly statement. Once settled, depending on the issuing back of the card, the authorization should disappear within 24-48 hours. The CREDIT ENDPOINT should be used.
For more guidance, see our Best Practices guide on Void Failure Handling.
Content-Type: text/xml; charset=utf-8
SOAPAction: http://schemas.merchantwarehouse.com/merchantware/v46/Void
| Name | Type | Description |
|---|---|---|
| Credentials | MerchantCredentials | A MerchantCredentials object used to authenticate against Merchantware. |
| Request | VoidRequest | A VoidRequest object containing the transactional data used to void a previous transaction. |
| Name | Type | Size | Description |
|---|---|---|---|
| Token | String | 0-100 | The token identifier returned from a previous transaction. Note: Either Token or MerchantTransactionId is required. |
| RegisterNumber | String | 0-100 | The identifier for the register or point of sale device submitting the transaction. |
| MerchantTransactionId | String | 0-100 | The merchant-defined identifier for the transaction. Note: Either Token or MerchantTransactionId is required. |
| CardAcceptorTerminalId | String (Numeric) | 0-16 | The Mastercard Card Acceptor Terminal Identifierused to uniquely identify the terminal to the processor. |
A TransactionResponse46 object is returned.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header/>
<soap:Body>
<Void xmlns="http://schemas.merchantwarehouse.com/merchantware/v46/">
<Credentials>
<MerchantName>Zero Inc</MerchantName>
<MerchantSiteId>00000000</MerchantSiteId>
<MerchantKey>00000-00000-00000-00000-00000</MerchantKey>
</Credentials>
<Request>
<Token>608973</Token>
<RegisterNumber>35</RegisterNumber>
<MerchantTransactionId>167901</MerchantTransactionId>
<CardAcceptorTerminalId>3</CardAcceptorTerminalId>
</Request>
</Void>
</soap:Body>
</soap:Envelope><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<VoidResponse xmlns="http://schemas.merchantwarehouse.com/merchantware/v46/">
<VoidResult>
<ApprovalStatus>APPROVED</ApprovalStatus>
<Token>608974</Token>
<AuthorizationCode>VOID</AuthorizationCode>
<TransactionDate>3/14/2016 8:30:18 PM</TransactionDate>
<Amount/>
<RemainingCardBalance/>
<CardNumber/>
<Cardholder/>
<CardType>0</CardType>
<FsaCard/>
<ReaderEntryMode>0</ReaderEntryMode>
<AvsResponse/>
<CvResponse/>
<ErrorMessage/>
<ExtraData/>
<DebitTraceNumber/>
</VoidResult>
</VoidResponse>
</soap:Body>
</soap:Envelope>The Refund The Refund web method issues a credit card refund to a customer from a prior transaction reference. The CREDIT ENDPOINT should be used.
Content-Type: text/xml; charset=utf-8
SOAPAction: http://schemas.merchantwarehouse.com/merchantware/v46/Refund
| Name | Type | Description |
|---|---|---|
| Credentials | MerchantCredentials | A MerchantCredentials object used to authenticate against Merchantware. |
| PaymentData | PaymentData | A PaymentData object containing the payment. |
| Request | RefundRequest | A RefundRequest object containing the transactional data used to perform a refund. |
| Name | Type | Size | Description |
|---|---|---|---|
| Amount | String (Double) | 0-100 | The amount to refund. |
| InvoiceNumber | String | 0-8 | The invoice or order number associated with the transaction. |
| RegisterNumber | String | 0-100 | The identifier for the register or point of sale device submitting the transaction. |
| MerchantTransactionId | String | 0-100 | The merchant-defined identifier for the transaction. |
| CardAcceptorTerminalId | String (Numeric) | 0-16 | The Mastercard Card Acceptor Terminal Identifierused to uniquely identify the terminal to the processor. |
| EcommerceTransactionIndicator | String | 0-3 | This field has been deprecated. Do not use. |
See PaymentData data structure.
A TransactionResponse46 object is returned.
Reader, Keyed, Vault, PreviousTransaction
Note: Credit refunds can be partial and are specified by the amount parameter.
The lookup can be performed either by invoice number or token. They cannot both be blank. If both are presented, token is used.
This method issues a refund to a credit or debit card from a prior sale transaction. While it is possible to set a custom amount, this method is limited to the original amount of the sale transaction by default. It is possible to enable an override on a per account basis so that refunds for higher than the original amount can be made. No on-hand credit card information is required to use this method.
For example, with a prior sale for $10.00, you may reuse the token from that sale transaction to issue refunds up until the original total has been met, whether all at once ($10.00) or over several transactions ($5.00, $3.00, $2.00). Unless the account has had refunds for higher than the original amount enabled.
This method is useful in cases where you need to return money to a credit card and you have already batched the original sale. Using this method allows you to better support your customers without having to store card data.
On the other hand, if the original sale has not been batched yet, it is better to void the sale to return money or undo a transaction, as this will prevent activity at the processor and thus avoid incurring transaction fees.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<Refund xmlns="http://schemas.merchantwarehouse.com/merchantware/v46/">
<Credentials>
<MerchantName>Zero Inc</MerchantName>
<MerchantSiteId>00000000</MerchantSiteId>
<MerchantKey>00000-00000-00000-00000-00000</MerchantKey>
</Credentials>
<PaymentData>
<Source>PreviousTransaction</Source>
<Token>608957</Token>
</PaymentData>
<Request>
<InvoiceNumber>1703</InvoiceNumber>
<RegisterNumber>35</RegisterNumber>
<MerchantTransactionId>165902</MerchantTransactionId>
<CardAcceptorTerminalId>3</CardAcceptorTerminalId>
</Request>
</Refund>
</soap:Body>
</soap:Envelope><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<RefundResponse xmlns="http://schemas.merchantwarehouse.com/merchantware/v46/">
<RefundResult>
<ApprovalStatus>APPROVED</ApprovalStatus>
<Token>608964</Token>
<AuthorizationCode>OK775C</AuthorizationCode>
<TransactionDate>3/14/2016 8:13:13 PM</TransactionDate>
<Amount/>
<RemainingCardBalance/>
<CardNumber/>
<Cardholder/>
<CardType>4</CardType>
<FsaCard>False</FsaCard>
<ReaderEntryMode>1</ReaderEntryMode>
<AvsResponse/>
<CvResponse/>
<ErrorMessage/>
<ExtraData/>
<Rfmiq>10000ABCDE</Rfmiq>
<DebitTraceNumber/>
</RefundResult>
</RefundResponse>
</soap:Body>
</soap:Envelope>The Capture The capture web method captures a previously authorized card (using preauth) and marks it ready for settlement using the token. The CREDIT ENDPOINT should be used.
Content-Type: text/xml; charset=utf-8
SOAPAction: http://schemas.merchantwarehouse.com/merchantware/45/Capture
| Name | Type | Description |
|---|---|---|
| Credentials | MerchantCredentials | A MerchantCredentials object used to authenticate against Merchantware. |
| Request | CaptureRequest | A CaptureRequest object containing the transactional data used capture a previous authorization and place it into the batch. |
| Name | Type | Size | Description |
|---|---|---|---|
| Token | String | 1-100 | The token identifier returned from a previous pre-authorization transaction. |
| Amount | String (Double) | 1-100 | The final transaction amount. |
| InvoiceNumber | String | 0-8 | The invoice or order number associated with the transaction. |
| RegisterNumber | String | 0-100 | The identifier for the register or point of sale device submitting the transaction. |
| MerchantTransactionId | String | 0-100 | The merchant-defined identifier for the transaction. |
| CardAcceptorTerminalId | String (Numeric) | 0-16 | The Mastercard Card Acceptor Terminal Identifierused to uniquely identify the terminal to the processor. |
A TransactionResponse46 object is returned.
Note: Performing multiple Post-authorization transactions will result in multiple charges on the customer's card. If a Post-authorization transaction is accidentally processed for an incorrect amount, it will need to be voided before another one is processed.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<Capture xmlns="http://schemas.merchantwarehouse.com/merchantware/v46/">
<Credentials>
<MerchantName>Zero Inc</MerchantName>
<MerchantSiteId>00000000</MerchantSiteId>
<MerchantKey>00000-00000-00000-00000-00000</MerchantKey>
</Credentials>
<Request>
<Token>608939</Token>
<Amount>1.50</Amount>
<InvoiceNumber>1556</InvoiceNumber>
<RegisterNumber>35</RegisterNumber>
<MerchantTransactionId>167902</MerchantTransactionId>
<CardAcceptorTerminalId>3</CardAcceptorTerminalId>
</Request>
</Capture>
</soap:Body>
</soap:Envelope><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CaptureResponse xmlns="http://schemas.merchantwarehouse.com/merchantware/v46/">
<CaptureResult>
<ApprovalStatus>APPROVED</ApprovalStatus>
<Token>608961</Token>
<AuthorizationCode>OK036C</AuthorizationCode>
<TransactionDate>3/14/2016 8:09:31 PM</TransactionDate>
<Amount>1.50</Amount>
<RemainingCardBalance/>
<CardNumber/>
<Cardholder/>
<CardType>0</CardType>
<FsaCard/>
<ReaderEntryMode>3</ReaderEntryMode>
<AvsResponse/>
<CvResponse/>
<ErrorMessage/>
<ExtraData/>
<Rfmiq>10000ABCDE</Rfmiq>
</CaptureResult>
</CaptureResponse>
</soap:Body>
</soap:Envelope>The SettleBatch Batches out a merchant's outstanding transactions for settlement. This should be done every 24 hours to avoid downgraded transactions. Most merchants that do not accept tips can be set up for auto settlement on the gateway which would not require this call. Please contact support for more information about auto settlement options. The CREDIT ENDPOINT should be used.
Content-Type: text/xml; charset=utf-8
SOAPAction: http://schemas.merchantwarehouse.com/merchantware/45/SettleBatch
| Name | Type | Description |
|---|---|---|
| Credentials | MerchantCredentials | A MerchantCredentials object used to authenticate against Merchantware. |
A BatchResponse46 object is returned.
Note: Please note that it is possible for a batch to return a negative settlement amount.
Avoid batching more than once a day unless the merchant's account or business rules require it. Almost all merchant accounts incur a fee when an account batch is settled, and merchant accounts typically require only one batch per 24 hours.
Conversely, some merchant accounts may already be setup to automatically batch. However, you should not explicitly avoid writing code to batch out an account. Most merchant accounts are not setup this way, and there may be times when your merchant needs to settle before a typical end-of-day.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<SettleBatch xmlns="http://schemas.merchantwarehouse.com/merchantware/v46/">
<Credentials>
<MerchantName>Zero Inc</MerchantName>
<MerchantSiteId>00000000</MerchantSiteId>
<MerchantKey>00000-00000-00000-00000-00000</MerchantKey>
</Credentials>
</SettleBatch>
</soap:Body>
</soap:Envelope><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<SettleBatchResponse xmlns="http://schemas.merchantwarehouse.com/merchantware/v46/">
<SettleBatchResult>
<BatchStatus>SUCCESS</BatchStatus>
<AuthorizationCode>0314160001</AuthorizationCode>
<BatchAmount>2.19</BatchAmount>
<TransactionCount>8</TransactionCount>
<TransactionDate>3/14/2016 8:28:30 PM</TransactionDate>
<ErrorMessage/>
<ExtraData/>
</SettleBatchResult>
</SettleBatchResponse>
</soap:Body>
</soap:Envelope>The AddValue Adds additional value to a card. The GIFT ENDPOINT should be used.
Content-Type: text/xml; charset=utf-8
SOAPAction: http://schemas.merchantwarehouse.com/merchantware/45/Giftcard/AddValue
| Name | Type | Description |
|---|---|---|
| Credentials | MerchantCredentials | A MerchantCredentials object used to authenticate against MerchantWARE. |
| PaymentData | GiftPaymentData | A PaymentData object containing the payment details of the card used to process the transaction |
| Request | AddValueRequest | An Add Value object containing the data used to add value to a stored value card. |
| Name | Type | Size | Required? | Description |
|---|---|---|---|---|
| Amount | String (decimal) | 1-20 | Yes | The amount to be added to the card. |
| InvoiceNumber | String | 0-100 | No | The invoice or order number associated with the transaction. |
| MerchantTransactionId | String | 0-100 | No | The merchant-defined identifier for the transaction. |
See GiftPaymentData data structure.
Reader, Keyed
) is returned.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<AddValue xmlns="http://schemas.merchantwarehouse.com/merchantware/45/Giftcard">
<Credentials>
<MerchantName>Zero Inc</MerchantName>
<MerchantSiteId>00000000</MerchantSiteId>
<MerchantKey>00000-00000-00000-00000-00000</MerchantKey>
</Credentials>
<PaymentData>
<Source>KEYED</Source>
<CardNumber>1234567890123456</CardNumber>
</PaymentData>
<Request>
<Amount>1.29</Amount>
<InvoiceNumber>Transaction1000</InvoiceNumber>
<MerchantTransactionId>a1234</MerchantTransactionId>
</Request>
</AddValue>
</soap:Body>
</soap:Envelope><?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<AddValueResponse xmlns="http://schemas.merchantwarehouse.com/merchantware/45/Giftcard">
<AddValueResult>
<ApprovalStatus>APPROVED</ApprovalStatus>
<ResponseMessage>928061</ResponseMessage>
<Token>MC0110</Token>
<InvoiceNumber>Transaction1000</InvoiceNumber>
<TransactionDate>10/10/2008 1:13:55 PM</TransactionDate>
<ExpirationDate>080729</ExpirationDate>
<CardNumber>***********3456</CardNumber>
<ReaderEntryMode>2</ReaderEntryMode>
<Gift>
<ApprovedAmount>1.29</ApprovedAmount>
<RequestedAmount>1.29</RequestedAmount>
<RedeemableBalance>100.00</RedeemableBalance>
</Gift>
</AddValueResult>
</AddValueResponse>
</soap:Body>
</soap:Envelope>The BalanceInquiry Checks the balance on a card. The GIFT ENDPOINT should be used.
Content-Type: text/xml; charset=utf-8
SOAPAction: http://schemas.merchantwarehouse.com/merchantware/45/Giftcard/BalanceInquiry
| Name | Type | Description |
|---|---|---|
| Credentials | MerchantCredentials | A MerchantCredentials object used to authenticate against MerchantWARE. |
| PaymentData | GiftPaymentData | A PaymentData object containing the payment details of the card used to process the transaction |
| Request | BalanceInquiryRequest | A BalanceInquiry object containing the data used to inquire about balances on a stored value card. |
| Name | Type | Size | Required? | Description |
|---|---|---|---|---|
| InvoiceNumber | String | 0-100 | No | The invoice or order number associated with the transaction. |
See GiftPaymentData data structure.
Reader, Keyed
) is returned.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<BalanceInquiry xmlns="http://schemas.merchantwarehouse.com/merchantware/45/Giftcard">
<Credentials>
<MerchantName>Zero Inc</MerchantName>
<MerchantSiteId>00000000</MerchantSiteId>
<MerchantKey>00000-00000-00000-00000-00000</MerchantKey>
</Credentials>
<PaymentData>
<Source>KEYED</Source>
<CardNumber>1234567890123456</CardNumber>
</PaymentData>
<Request>
<InvoiceNumber>Transaction1000</InvoiceNumber>
</Request>
</BalanceInquiry>
</soap:Body>
</soap:Envelope><?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<BalanceInquiryResponse xmlns="http://schemas.merchantwarehouse.com/merchantware/45/Giftcard">
<BalanceInquiryResult>
<ApprovalStatus>APPROVED</ApprovalStatus>
<ResponseMessage>928061</ResponseMessage>
<Token>MC0110</Token>
<InvoiceNumber>Transaction1000</InvoiceNumber>
<TransactionDate>10/10/2008 1:13:55 PM</TransactionDate>
<ExpirationDate>080729</ExpirationDate>
<CardNumber>***********3456</CardNumber>
<ReaderEntryMode>2</ReaderEntryMode>
<Gift>
<GiftBalance>90.00</GiftBalance>
<RewardsBalance>10.00</RewardsBalance>
<RedeemableBalance>100.00</RedeemableBalance>
</Gift>
<Loyalty>
<PointsBalance>62346</PointsBalance>
</Loyalty>
</BalanceInquiryResult>
</BalanceInquiryResponse>
</soap:Body>
</soap:Envelope>| Name | Type | Size | Description |
|---|---|---|---|
| HealthCareTotalAmount | Decimal | 0-99,999 | The total amount of the transaction that represents eligible healthcare charges. |
| ClinicalAmount | Decimal | 0-99,999 | The portion of the healthcare total that represents clinical charges. |
| CopayAmount | Decimal | 0-99,999 | The portion of the healthcare total that represents a copayment. |
| DentalAmount | Decimal | 0-99,999 | The portion of the healthcare total that represents dental charges. |
| PrescriptionAmount | Decimal | 0-99,999 | The portion of the healthcare total that represents prescription charges. |
| VisionAmount | Decimal | 0-99,999 | The portion of the healthcare total that represents vision charges. |
| Name | Type | Size | Description |
|---|---|---|---|
| TaxIndicator | - | - | An indicator that specifies whether the transaction's primary amount includes or omits tax. Values are:• NotProvided • Provided • Exempt |
| ProductDescription | String | 0-100 | Describes the item being purchased by the consumer. |
| DiscountAmount | Decimal | 0-100 | The amount that the merchant deducts as a discount from the cost of the item. |
| ShippingAmount | Decimal | 0-100 | If the merchant needs to ship the item, this is the amount of the transaction that the customer pays for shipping. |
| DutyAmount | Decimal | 0-100 | If the merchant needs to ship the item, this is the amount of the transaction that the customer pays as duty when the shipment enters the destination country. |
| DestinationPostalCode | String | 0-9 | If the merchant needs to ship the item, this is the postal code of the customer’s delivery address. |
| DestinationCountryCode | String | 0-3 | If the merchant needs to ship the item, this is the country code of the customer’s delivery address. |
| ShipFromPostalCode | String | 0-9 | If the merchant needs to ship the item, this is the postal code of the location the merchant ships the item from. |
| LineItems | Object | - | The list of item level details for the transaction. |
| Code | Description |
|---|---|
| X | Exact: Address and nine-digit Zip match. |
| Y | Yes: Address and five-digit Zip match. |
| A | Address: Address matches, Zip does not. |
| Z | 5-digit Zip: 5-digit Zip matches, address doesn’t. |
| W | Whole Zip: 9-digit Zip matches, address doesn’t. |
| N | No: Neither address nor Zip matches. |
| U | Unavailable: Address information not available. |
| G | Unavailable: Address information not available for international transaction. |
| R | Retry: System unavailable or time-out. |
| E | Error: Transaction unintelligible for AVS or edit error found in the message that prevents AVS from being performed. |
| S | Not Supported: Issuer doesn’t support AVS service. |
| B | Street Match: Street addresses match for international transaction, but postal code doesn’t. (Visa only) |
| C | Street Address: Street addresses and postal code not verified for international transaction. (Visa only) |
| D | Match: Street addresses and postal codes match for international transaction. (Visa only) |
| I | Not Verified: Address Information not verified for International transaction. (Visa only) |
| M | Match: Street addresses and postal codes match for international transaction. (Visa only) |
| P | Postal Match: Postal codes match for international transaction, but street address doesn’t. (Visa only) |
| O | No response sent. |
| 5 | Invalid AVS response. |
| Code | Description |
|---|---|
| M | CVV2/CVC2/CID Match |
| Y | CVV2/CVC2/CID Match |
| N | CVV2/CVC2/CID No Match |
| P | Not Processed |
| S | Issuer indicates that the CV data should be present on the card, but the merchant has indicated that the CV data is not present on the card. |
| U | Unknown / Issuer has not certified for CV or issuer has not provided Visa/MasterCard with the CV encryption keys. |
| X | Server Provider did not respond. |
The following section provides information for testing the interaction with the Genius device during the integration process. Testing terminals and accounts can be configured to point to the Genius Test Processor that will allow for certification testing as well as some additional test scenarios. For a detailed list of test cases as well as test QR codes please follow the links below.
Please download the test script and email it to developer@cayan.com for review. Once the certification team receives the completed form we will review your application within 24 business hours and notify you of any complications with the test transactions.
| AuthorizationCode | String | 1-6 | An optional field used to specify the authorization code supplied by the processor. Use only when TransactionType is FORCESALE. |
| HealthCareAmountDetails | Object | -- | An optional field used to specify various healthcare amounts for healthcare based cards, such as Flexible Spending Accounts. |
| TipDetails | Object | -- | An optional field used to specify the amount of the staged transaction that is eligible for a tip. The Genius device displays this value to the customer as well as the total value of the transaction. The EligibleAmount value is used to calculate the tip when the customer taps the Percentage Tip button. |
| EbtAmountDetails | Object | - | An optional field used to specify the amount of the staged transaction that is eligible for EBT SNAP. The Object contains the SnapAmount and the SnapTaxAmount. Note: The SnapAmount excludes the SnapTaxAmount. The customer does not have to pay tax on SNAP items. |
| Invoice | Object | -- | An optional field that you use to specify various data for Level 3 processing-rates. |
| CardOnFileDetails | Object | - | An optional object that you use to specify if the merchant wants to store the card in the vault for future transactions. The object contains the following parameters:• StoreCardInVault - Use a String value of size 0-5. The value is one of the following:truefalse • true • false • StoredCardReason - Use a String value of size 0-14. The value is one of the following:UNSCHEDULEDMITUNSCHEDULEDCIT • UNSCHEDULEDMIT • UNSCHEDULEDCIT |
| ErrorMessage | String | A message indicating why the transaction could not be processed. |
| Token | String | The identifier received by the Merchantware client when a transaction has been issued. This value may be used to lookup a specific transaction in the history log. |
| TransactionDate | dateTime | The date and time when a transaction is issued, in UTC time. |
| TransactionType | enum | The type of transaction, and this value matches up with the TransactionType enumeration.• SALE• AUTHORIZATION• REFUND• ADDVALUE• BALANCEINQUIRY |
| ResponseType | enum | Possible values:• SINGLE• MULTI• COMPOUND |
| ValidationKey | String | This ValidationKey should be used to match up with the ValidationKey received in the CreateTransaction call to validate that the response from the CED is authentic and matches the response from the gateway. |
| AdditionalParameters | Object | Contains extra transaction information when applicable. Possible fields:• <SignatureData>string</SignatureData> - Contains the vector signature data if it's collected by the CED.• <AmountDetails><UserTip/><Cashback/><Donation/><Surcharge/><RemainingCardBalance/><Discount/></AmountDetails> . **Note: **For EBT transactions RemainingCardBalance displays the balance remaining on the customer's EBT card for CASH or SNAP.• <Discount> object - There may be more than one discount object inside the response. Take a look at the sample responses for details.• <EbtDetails><EbtType/><FnsId/><Balances><CashAvailableBalance/><SnapAvailableBalance/></Balances></EbtDetails> . <EbtType> can be CASH or SNAP. <FnsId> is shown only when <EbtType> is SNAP.• <KeyedDetails><ExpirationDate>string</ExpirationDate><AvsStreetZipCode>string</AvsStreetZipCode><AvsResponse>char</AvsResponse><CvResponse>char</CvResponse></KeyedDetails>• <FsaCard>bool</FsaCard> - Was an FSA card tendered? Will be present only in the response if FSA Healthcare amounts were specified in the create transaction call.• <Loyalty><AccountNumber>string</AccountNumber><Balances><PointsBalance>int</PointsBalance><AmountBalance>decimal</AmountBalance></Balances></Loyalty> - Will be present only if the gift/loyalty function is active.• <Survey><MerchantMessage>string</MerchantMessage><CustomerMessage>string</CustomerMessage></Survey> - Will be present only for merchants who integrate with TruRating.• <DebitTraceNumber>string</DebitTraceNumber> - Will be present only with Debit transaction responses.Possible AvsResponse values: View List Possible CvResponse values: View List Warning New fields may be added to Additional Parameters at any time. It is important to ensure you parse all fields and discard those which are not required. |
| EMV | Object | Contains EMV transaction information when applicable. |
| ErrorMessage |
| String |
| A message indicating why the transaction could not be processed. |
| Token | String | The identifier received by the Merchantware client when a transaction has been issued. This value may be used to lookup a specific transaction in the history log. |
| TransactionDate | dateTime | The date and time when a transaction is issued, in UTC time. |
| TransactionType | enum | The type of transaction, and this value matches up with the TransactionType enumeration.• SALE• REFUND• ADDVALUE• BALANCEINQUIRY |
| ResponseType | enum | Possible values:• SINGLE• MULTI• COMPOUND |
| ValidationKey | String | This ValidationKey should be used to match up with the ValidationKey received in the CreateTransaction call to validate that the response from the CED is authentic and matches the response from the gateway. |
| AdditionalParameters | Object | Contains extra transaction information when applicable. Possible fields:• <SignatureData>string</SignatureData> - contains the vector signature data if it's collected by the CED.• <AmountDetails><UserTip/><Cashback/><Donation/><Surcharge/><RemainingCardBalance/><Discount/></AmountDetails>. **Note: **For EBT transactions RemainingCardBalance displays the balance remaining on the customer's EBT card for CASH or SNAP.• <Discount> object - there may be more than one discount object inside the response. Take a look at the sample responses for details.• <EbtDetails><EbtType/><FnsId/><Balances><CashAvailableBalance/><SnapAvailableBalance/></Balances></EbtDetails>. <EbtType> can be CASH or SNAP. <FnsId> is shown only when <EbtType> is SNAP.• <Loyalty><AccountNumber>string</AccountNumber><Balances><PointsBalance>int</PointsBalance><AmountBalance>decimal</AmountBalance></Balances></Loyalty> - Will be present only if the gift/loyalty function is active.• <Survey><MerchantMessage>string</MerchantMessage><CustomerMessage>string</CustomerMessage></Survey> - Will be present only for merchants who integrate with TruRating.• <DebitTraceNumber>string</DebitTraceNumber> - Will be present only with Debit transaction responses. |