Skipjack Integration Guide
Transcription
Skipjack Integration Guide
Skipjack Integration Guide 2009 Skipjack Financial Services Skipjack Integration Guide Table of Contents About this Document ............................................................................................................................. 9 Copyright Notice ................................................................................................................................................................. 9 Trademark Notice ............................................................................................................................................................... 9 Interchange Qualifications and Transaction Rates ............................................................................................................. 9 Publication History ............................................................................................................................................................ 10 Documentation Conventions............................................................................................................................................. 12 Definitions of Variable Types ........................................................................................................................................ 13 Permitted Syntax for Variable Fields ............................................................................................................................ 13 Obtaining Additional Information....................................................................................................................................... 13 Obtaining Referenced Documents ............................................................................................................................... 14 Contacting Skipjack Financial Services ............................................................................................................................ 14 Obtaining a Developer Account with Skipjack Financial Services.................................................................................... 14 Obtaining a Merchant Account from a Financial Institution .............................................................................................. 14 Getting Started: Application Development Lifecycle ........................................................................... 15 Overview: Recommended Development Process ............................................................................................................ 15 Payment Processors Supported by Skipjack Financial Services ..................................................................................... 16 Payment Processor Information for Canadian Merchant Accounts and Payment Processors ........................................ 17 Connection Types ............................................................................................................................... 18 Direct Skipjack API Posts ................................................................................................................................................. 18 Installed API Posts ............................................................................................................................................................ 18 Batch Posts ....................................................................................................................................................................... 18 Level I, II, III Card Data Transaction Overview.................................................................................... 19 Level I Transactions .......................................................................................................................................................... 19 Level II Transactions ......................................................................................................................................................... 19 Example of Level II Data Request String ..................................................................................................................... 20 Level III Transactions ........................................................................................................................................................ 20 Example of Level III Data Request String .................................................................................................................... 21 Core & Supplementary Transaction Methods ..................................................................................... 22 Core Methods ................................................................................................................................................................... 22 Supplementary Methods ................................................................................................................................................... 22 Authorize and AuthorizeAPI Methods ................................................................................................. 23 Authorize ........................................................................................................................................................................... 23 Post-Back Locations for Authorize Method .................................................................................................................. 23 AuthorizeAPI ..................................................................................................................................................................... 23 Transaction Requests for Authorize and AuthorizeAPI .................................................................................................... 23 Details for Submitting Transaction Requests for Authorize and AuthorizeAPI ............................................................ 23 Request Variables for Authorize and AuthorizeAPI Methods....................................................................................... 24 Transaction Examples for Authorize and Authorize API Methods.................................................................................... 38 Request Example 1: Authorize ..................................................................................................................................... 38 Response Example 1: Authorize .................................................................................................................................. 39 Request Example 2: AuthorizeAPI ............................................................................................................................... 39 Response Example 2: AuthorizeAPI ............................................................................................................................ 39 Request Example 3: TSYS Credit Card Balance Inquiry ............................................................................................. 40 Response Example 3: TSYS Credit Card Balance Inquiry .......................................................................................... 40 Response Variables for Authorize and AuthorizeAPI Methods ........................................................................................ 41 Response Variables for Authorize and AuthorizeAPI Methods .................................................................................... 41 Response Variables Returned when ResponseFlags Variable Sent in Transaction Request..................................... 48 szPOSEntryMode Return Variable Values by Position ................................................................................................ 53 Example Using ResponseFlags Request Variables ......................................................................................................... 54 Example 1 ..................................................................................................................................................................... 54 Example 2 ..................................................................................................................................................................... 54 Development Notes for AuthorizeAPI Response Handling .............................................................................................. 55 Page 2 2009 Skipjack Financial Services Skipjack Integration Guide Annotated Examples for Authorize and AuthorizeAPI ......................................................................... 56 Assumptions ..................................................................................................................................................................... 56 Example 1: Authorization Successful for a Basic Credit Card Transaction ...................................................................... 56 Interpretation ..................................................................................................................................................................... 56 Example 2: Authorization Decline for a Basic Transaction ............................................................................................... 58 Interpretation ..................................................................................................................................................................... 58 Example 3: Authorization Failure for a Basic Transaction ................................................................................................ 59 Interpretation ..................................................................................................................................................................... 59 Example 4: Authorization Successful with AVS Filtering Off ............................................................................................ 60 Interpretation ..................................................................................................................................................................... 60 Example 5: Authorization Successful with AVS Filtering On ............................................................................................ 61 Interpretation ..................................................................................................................................................................... 61 Example 6: Authorization Failed with AVS Filtering On.................................................................................................... 62 Interpretation ..................................................................................................................................................................... 62 Example 7: Authorization Successful with CVV matching for Visa and MasterCard ....................................................... 63 Interpretation ..................................................................................................................................................................... 63 Example 8: Authorization Failure with CVV not matching for Visa and MasterCard ........................................................ 64 Interpretation ..................................................................................................................................................................... 64 Example 9: Authorization Success with CVV matching for Amex or Discover ................................................................. 65 Interpretation ..................................................................................................................................................................... 65 Example 10: Authorization Failure because of CVV not matching for Amex or Discover ................................................ 66 Interpretation ..................................................................................................................................................................... 66 Get Transaction Status Method .......................................................................................................... 67 Description.................................................................................................................................................................... 67 When Used ................................................................................................................................................................... 67 See Also ....................................................................................................................................................................... 67 Transaction Variables for the Get Transaction Status Method ......................................................................................... 67 Details for Submitting Get Transaction Status Method Requests ................................................................................ 67 Request Variables for Get Transaction Status ................................................................................................................. 68 Response Variables for Get Transaction Status .............................................................................................................. 69 Interpreting the Get Transaction Status Response Messages .................................................................................... 69 Examples for Get Transaction Status Method .................................................................................................................. 72 Request Example 1: Get Transaction Status Method specifying szDate..................................................................... 72 Response Example 1: Get Transaction Status specifying szDate ............................................................................... 72 Request Example 2: Get Transaction Status Method specifying szOrderNumber ...................................................... 73 Response Example 2: Get Transaction Status specifying szOrderNumber ................................................................ 73 Change Transaction Status Method.................................................................................................... 74 Description.................................................................................................................................................................... 74 When Used ................................................................................................................................................................... 74 Change Status Functionality Matrix.............................................................................................................................. 75 See Also ....................................................................................................................................................................... 76 Details for Submitting Change Transaction Status Method Requests ......................................................................... 76 Transaction Requests for Change Transaction Status Method........................................................................................ 77 Development Notes for Change Transaction Status Method ....................................................................................... 97 Response Variables for the Change Transaction Status Method .................................................................................... 98 Interpreting the Change Transaction Status Response Records ................................................................................. 98 Examples for Change Transaction Status Method ......................................................................................................... 102 Request Example 1: Change Transaction Status: Credit – Specifying szOrderNumber (Error)................................ 102 Response Example 1: No Records Found for Order Number (Error) ........................................................................ 102 Request Example 2: Change Transaction Status (Error - Incorrect Amount for Credit) ............................................ 102 Response Example 2: Change Transaction Status (Error- Incorrect Amount for Credit) .......................................... 103 Request Example 3: Change Transaction Status – SplitSettle specifying szOrderNumber ...................................... 103 Response Example 3: Change Transaction Status – SplitSettle ............................................................................... 103 Request Example 4: Change Transaction Status – Credit specifying szOrderNumber ............................................. 103 Response Example 4: Change Transaction Status Credit – Error: Status Mismatch ................................................ 103 Page 3 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 5: Change Transaction Status – Split Settle specifying szOrderNumber ..................................... 104 Response Example 5: Change Transaction Status – Successful: Split Settle........................................................... 104 Request Example 6a and 6b: Change Transaction Status: Authorize ....................................................................... 104 Request Example 7: ChangeStatus:CreditEx ............................................................................................................ 105 Response Example 7: ChangeStatus:CreditEx ......................................................................................................... 105 Request Example 8: Change Transaction Status: AuthorizeAdditionalEx ................................................................. 105 Response Example 8: ChangeStatus: AuthorizeAdditionalEx ................................................................................... 105 Supplemental Transaction Methods.................................................................................................. 106 Recurring Payments Overview.......................................................................................................... 107 Description .................................................................................................................................................................. 107 Development Notes about Recurring Payments Transactions .................................................................................. 107 Recurring Payment Methods; ..................................................................................................................................... 108 See Also: .................................................................................................................................................................... 108 Add Recurring Payment Method ....................................................................................................... 109 When Used ................................................................................................................................................................. 109 Submitting Requests for Add Recurring Payments .................................................................................................... 109 See Also ..................................................................................................................................................................... 109 Transaction Requests for the Add Recurring Payments Method ................................................................................... 109 Transaction Responses for Add Recurring Payments Method ...................................................................................... 114 Interpreting the Response Records for Add Recurring Payments Method ................................................................ 114 Response Records Variables for Add Recurring Payments Method ......................................................................... 114 Examples for Add Recurring Payments Method............................................................................................................. 115 Request Example 1: Add Recurring Payments Request ........................................................................................... 115 Response Example 1: Add Recurring Payments Records – Successful ................................................................... 115 Request Example 2: Add Recurring Payments Request ........................................................................................... 116 Response Example 2: Add Recurring Payments Records – Error: Starting Date ..................................................... 116 Edit Recurring Payments Method ..................................................................................................... 117 When Used ................................................................................................................................................................. 117 Submitting Requests for Edit Recurring Payments .................................................................................................... 117 See Also ..................................................................................................................................................................... 117 Transaction Requests for Edit Recurring Payments Method ......................................................................................... 117 Transaction Responses for Edit Recurring Payments Method ....................................................................................... 121 Interpreting the Response Records for Edit Recurring Payments Method ................................................................ 121 Response Records (Header Record) Variables for Edit Recurring Payments Method ............................................. 121 Examples for Edit Recurring Payments Method ............................................................................................................. 122 Request Example 1: Edit Recurring Payments Request............................................................................................ 122 Response Example 1: Edit Recurring Payments – Success...................................................................................... 122 Request Example 2: Edit Recurring Payments .......................................................................................................... 123 Response Example 2: Edit Recurring Payments – Error: Missing szPaymentId ....................................................... 123 Delete Recurring Payment Method ................................................................................................... 124 Submitting Requests for Delete Recurring Payment Method..................................................................................... 124 See Also ..................................................................................................................................................................... 124 Transaction Requests for Delete Recurring Payment Method ....................................................................................... 124 Transaction Responses for Delete Recurring Payments Method .................................................................................. 125 Interpreting the Response Records for Delete Recurring Payments Method ............................................................ 125 Response Records (Header Record) Variables for Delete Recurring Payments ...................................................... 126 Examples for Delete Recurring Payment Method .......................................................................................................... 126 Request Example 1: Delete Recurring Payments Request specifying szPaymentId ................................................ 126 Response Example 1: Delete Recurring Payment specifying szPaymentId – Successful ........................................ 126 Request Example 2: Delete Recurring Payments Request specifying szTransactionDate ....................................... 127 Response Example 2: Delete Recurring Payment specifying szTransactionDate – ................................................. 127 Successful .................................................................................................................................................................. 127 Request Example 3: Delete Recurring Payments Request specifying szTransactionDate ....................................... 127 Response Example 3: Delete a Recurring Payment – Error: Failed Deleting............................................................ 127 Page 4 2009 Skipjack Financial Services Skipjack Integration Guide Get Recurring Payment Information Method ..................................................................................... 128 Description.................................................................................................................................................................. 128 When Used ................................................................................................................................................................. 128 See Also ..................................................................................................................................................................... 128 Transaction Requests for Get Recurring Payment Information ...................................................................................... 128 Submitting Requests for Get Recurring Payment Information ................................................................................... 128 Transaction Requests for Get Recurring Payments Method .......................................................................................... 128 Transaction Response for Get Recurring Payment Information ..................................................................................... 129 Interpreting the Response Records for Get Recurring Payment Information Method ............................................... 129 Status Records (Header Record) Variables for Get Recurring Payment Information Method................................... 130 Interpreting the Response Records (Data Records) for Get Recurring Payment Information Method ...................... 131 Response Records (Data Records) returned for Get Recurring Payment Method Information Method ................... 131 Examples for Get Recurring Payment Information Method ............................................................................................ 134 Request Example 1: Get Recurring Payments Request specifying szTransactionDate............................................ 134 Response Example 1: Get Recurring Payment Information specifying szTransactionDate ...................................... 134 Request Example 2: Get Recurring Payments Request specifying szPaymentId ..................................................... 135 Response Example 2: Get Recurring Payment Information specifying szPaymentId – Success.............................. 135 Request Example 3: Get Recurring Payments Request specifying szPaymentId ..................................................... 135 Response Example 3: Get Recurring Payment Information – Error: No Records Found .......................................... 135 Transaction Settlement Methods ...................................................................................................... 136 Available Only Though Merchant Services ................................................................................................................ 136 Performed using Batch Settlement API Methods ....................................................................................................... 136 Close Current Open Batch Method ................................................................................................... 137 Description.................................................................................................................................................................. 137 When Used ................................................................................................................................................................. 137 See Also ..................................................................................................................................................................... 137 Submitting Requests for the Close Current Open Batch Method .............................................................................. 137 Transaction Request Variables for Close Current Open Batch Method .................................................................... 138 Interpreting the Transaction Responses for the Close Current Open Batch Method ................................................ 138 Request Example 1: Close Current Open Batch Method........................................................................................... 139 Response Example 1: Close Current Open Batch Method – Success ...................................................................... 139 Request Example 2: Close Current Open Batch Method........................................................................................... 139 Response Example 2: Close Current Open Batch Method – Error (Parameter Missing) .......................................... 140 Get Batch Settlement Status Method ................................................................................................ 141 Description.................................................................................................................................................................. 141 When Used ................................................................................................................................................................. 141 Submitting Requests for the Get Batch Settlement Status Method ........................................................................... 141 Transaction Request Variables for the Get Batch Settlement Status Method ............................................................... 142 Transaction Responses for the Get Batch Settlement Status Method ........................................................................... 143 Transaction Responses for the Get Batch Settlement Status Method ....................................................................... 143 Request Example 1: Get Batch Settlement Status Method ....................................................................................... 146 Response Example 1 : Get Batch Settlement Status Method – Success .................................................................. 146 Request Example 2: Get Batch Settlement Status Method ....................................................................................... 146 Response Example 2: Get Batch Settlement Status Method – Failure ..................................................................... 146 Batch File Methods for Transaction Processing ................................................................................ 147 When Used ................................................................................................................................................................. 147 Mechanisms Supported for Batch File Uploads ......................................................................................................... 147 How Batch Upload Files are Processed and Queued ................................................................................................ 147 Enabling Batch File Processing Privileges on a Merchant Account........................................................................... 148 Development and Usage Notes for Batch Uploading Methods .................................................................................. 148 Workflow for Processing Batch Upload Files ............................................................................................................. 148 Transaction Requests for Batch File Uploads ................................................................................................................ 149 Formatting Requirements of Name-Value Pairs by Batch Method Type........................................................................ 150 Formatting Examples by Method Types ......................................................................................................................... 150 Formatting for Batch Authorization Method Request ................................................................................................. 150 Page 5 2009 Skipjack Financial Services Skipjack Integration Guide Formatting for Get Transaction Status Method Request............................................................................................ 151 Formatting for Change Transaction Status Request .................................................................................................. 151 Formatting for Add Recurring Payments Request ..................................................................................................... 151 Formatting for Edit Recurring Payments .................................................................................................................... 152 Formatting for Delete Recurring Payments ................................................................................................................ 152 Transaction Responses for Batch Upload Methods ....................................................................................................... 152 Check Batch File Status Method ....................................................................................................... 153 Description.................................................................................................................................................................. 153 When Used ................................................................................................................................................................. 153 See Also ..................................................................................................................................................................... 153 Details for Submitting Transaction Requests for Check Batch File Status Method ................................................... 153 Transaction Requests for Check Batch File Status Method ........................................................................................... 153 Transaction Response for Check Batch File Status Method .......................................................................................... 155 Request Example 1: Check Batch File Status Specifying Date Range ..................................................................... 157 Response Example 1: Check Batch File Status ......................................................................................................... 157 Modify Batch File Status Method ...................................................................................................... 158 Description.................................................................................................................................................................. 158 When Used ................................................................................................................................................................. 158 Transaction Requests for Modify Batch File Status Method .......................................................................................... 158 Request Variables for Modify Batch File Status Method ............................................................................................ 158 Transaction Response for Modify Batch File Status Method ......................................................................................... 159 Request Example 1: Modify Batch File Status ........................................................................................................... 160 Response Example 1: Modify Batch File Status – Success....................................................................................... 160 Request Example 2: Modify Batch File Status ........................................................................................................... 160 Response Example 2 Modify Batch File Status – Error ............................................................................................. 160 Get Batch File Response Method ..................................................................................................... 161 Description.................................................................................................................................................................. 161 Request Variables for Get Batch File Response Method ............................................................................................... 161 Transaction Responses for Get Batch File Response – Batch Authorize Transactions ................................................ 162 Get Batch File Transaction Response for Batch Authorize Transactions ...................................................................... 162 Response Example 1: Get Batch File Response for Batch Authorization – No Errors .............................................. 162 Example 2: Batch Authorization Response String – Error ......................................................................................... 162 Echo Utility ........................................................................................................................................ 163 When Used ................................................................................................................................................................. 163 Details for Submitting an Echo Utility Request ........................................................................................................... 163 Transaction Requests for the Echo Utility ...................................................................................................................... 163 Transaction Responses for the Echo Utility .................................................................................................................... 164 Response Example: Authorize using the Debugging Utility ....................................................................................... 164 Debugging Utility ............................................................................................................................... 165 When Used ................................................................................................................................................................. 165 Details for Submitting a Debugging Utility Request ................................................................................................... 165 Transaction Requests for Debugging Utility ................................................................................................................... 165 Transaction Responses for Debugging Utility ................................................................................................................ 165 Response Example: Authorize using the Debugging Utility ....................................................................................... 165 Authorization Logic and Appropriate Failsafe Mechanisms .............................................................. 166 See Also ..................................................................................................................................................................... 168 Scenarios .......................................................................................................................................... 169 Scenario 1: Split Authorization Scenario ........................................................................................................................ 169 Scenario 2: Refunds and Voids Scenario ....................................................................................................................... 174 Scenario 3: Recurring Payments Scenario ..................................................................................................................... 176 Scenario 4: Batch Settlement Scenario .......................................................................................................................... 179 Scenario 5: Batch File Upload Scenario ......................................................................................................................... 180 Re-Authorization Scenarios ............................................................................................................................................ 182 Usage Notes Regarding the Following Scenarios:..................................................................................................... 182 Page 6 2009 Skipjack Financial Services Skipjack Integration Guide Scenario 6A – Authorize Original Amount, Settle Different Amount............................................................................... 183 Advantages ................................................................................................................................................................. 183 Disadvantages ............................................................................................................................................................ 183 Scenario 6B – Authorize Original Amount, Change Status Authorize Additional ........................................................... 185 Advantages ................................................................................................................................................................. 185 Disadvantages ............................................................................................................................................................ 185 Scenario 6C – Authorize Original Amount, Change Status: Authorize........................................................................... 188 Advantages ................................................................................................................................................................. 188 Disadvantages ............................................................................................................................................................ 188 Appendix A: Permitted Country Code Values ................................................................................... 190 Appendix B: Address Verification System (AVS) Checking............................................................... 198 AVS Filtering within the Skipjack Transaction Network .................................................................................................. 198 Development Notes for AVS and AVS Filtering.............................................................................................................. 199 AVS Codes by Card Type............................................................................................................................................... 200 AVS Response Codes for International and Domestic Credit Cards ............................................................................. 201 AVS Code Handling for International and Domestic Transactions ................................................................................. 201 Use of Canadian Postal Codes in AVS Checks ............................................................................................................. 201 Appendix C: CVV and Interpreting CVV Return Codes ..................................................................... 202 How CVV Code Checking is Used in Transactions ........................................................................................................ 202 CVV Code Locations by Card Type ................................................................................................................................ 203 CVV Response Codes for Visa and MasterCard/Eurocard ............................................................................................ 203 Appendix D: Avoiding Duplicate Transactions .................................................................................. 204 Development Notes on Avoiding Duplicate Transactions............................................................................................... 204 Appendix E: Configuring Level II Transaction Data........................................................................... 205 Development Notes for Level II Data .............................................................................................................................. 205 Appendix F: TSYS PIN-based Debit Transactions Information ......................................................... 206 Example Code Snippets ................................................................................................................................................. 207 Request Variables ...................................................................................................................................................... 207 Example Response String .......................................................................................................................................... 208 Response Example: Authorize ................................................................................................................................... 208 Development Notes for the TSYS PIN-based Debit Service .......................................................................................... 208 Appendix G: Blind Credits ................................................................................................................. 209 Prerequisites and Requirements for Performing Blind Credits ....................................................................................... 209 szReturnCode Error Messages Associated with Blind Credits ....................................................................................... 210 Blind Credits versus Change Status: Credit ................................................................................................................... 210 Configuring the Skipjack Merchant Account to Permit Blind Credits .............................................................................. 211 Appendix H: Using Trackdata Details in Transactions ...................................................................... 212 Recommended Trackdata Hardware .............................................................................................................................. 212 Trackdata Information and Examples ............................................................................................................................. 212 Trackdata Capture, Formatting and Usage Notes .......................................................................................................... 213 Appendix I: Unique Order Numbers .................................................................................................. 214 How to Identify Transactions When Duplicate Order Numbers Exist ............................................................................. 214 Other Transaction Methods Using Order Number as a Required Variable................................................................ 215 Configuring the Reject Duplicate Order Numbers Option for a Merchant Account .................................................... 215 Appendix J: Using Soft Indicators with Paymentech and TSYS ........................................................ 217 Soft Indicator Implementation Guidelines ....................................................................................................................... 217 Setting Merchant Services Vendor Preferences to Support Soft Indicators ................................................................... 217 Appendix K: Orderstring Variables .................................................................................................... 219 Example: OrderString Variable Formatting ................................................................................................................ 220 OrderString and lvl3orderstring variable Developer Notes......................................................................................... 220 Appendix L: Naming Conventions for “Dummy Values” in Required Variables ................................. 221 Suggested Values for “Dummy Values” for Required Variables ................................................................................ 221 Methods Using the Dummy Variables ........................................................................................................................ 221 Page 7 2009 Skipjack Financial Services Skipjack Integration Guide Appendix M: Transaction IDs, Audit IDs and the Transaction Lifecycle ............................................ 222 Development Notes on Audit IDs and Transaction IDs .................................................................................................. 222 Appendix N: Test Cards Used with Development Accounts ............................................................. 223 Test Cards for TSYS and Global as Payment Processor .......................................................................................... 223 Test Cards for Fifth Third Processing Solutions (FTPS) as Payment Processor....................................................... 224 Appendix O: Notes for Processing Level II and Level III Data........................................................... 225 Appendix P: Usage Notes for the Enhanced TSYS Credit Card Processing Features ..................... 226 Setting Skipjack Merchant Account Settings .................................................................................................................. 226 Changing the Merchant Account Setup Options to Use TYSY Enhanced Functions .................................................... 227 Developer Notes about the TSYS Platform Enhanced Features ................................................................................... 228 Appendix Q: Usage Guidelines for Using Paymentech as Payment Processor ................................ 229 Setting the Batch Settlement Preferences for Paymentech Salem ................................................................................ 230 Appendix R: Skipjack Variable Mapping ........................................................................................... 231 Selectable Variables ....................................................................................................................................................... 231 Variables Generated During Transaction Processing .................................................................................................... 232 Appendix S: Master Error Code Table .............................................................................................. 234 Skipjack_Integration_Guide_Version1.0_RevM8.docx Page 8 2009 Skipjack Financial Services Skipjack Integration Guide About this Document This guide contains information about all Skipjack Financial Services transaction methods except the reporting methods and is intended for experienced application developers. The information includes specific integration and application development details for each method. A companion guide, the Skipjack Reporting API Integration Guide contains all details for using Reporting APIs. This documentation does not attempt to describe language-specific programming details. Instead, the purpose of this guide is to provide details about the various API methods, variables, values, parameters, usage notes, examples, and sample scenarios to aid you in your application development and integration. Although many of the operations can be performed using the Web-based Merchant Services interface, the information in this guide concentrates on the direct post and API-based transaction methods. The Merchant Services interface, however, must be used in some instances to configure the Skipjack Merchant Account for the API request to work. These details are included whenever relevant. For a detailed description about the Merchant Services User Interface and other online Skipjack applications, see the “Obtaining Additional Information” section for details. NOTE: This guide has been restructured. See the “Obtaining Referenced Documents” section for details about the new guides created as part of this content reorganization. Copyright Notice © 2009 Skipjack Financial Services. All rights reserved. The information contained herein is for information purposes only. Skipjack makes no warranty, expressed or implied, in this document. No part of this information may be reproduced in any form or by any means or transferred to any third party without the prior written consent of Skipjack Financial Services. Trademark Notice All trademarks, registered trademarks, and service marks mentioned or used within this document are owned wholly by their respective owners. Interchange Qualifications and Transaction Rates As your Payment Solution Skipjack Financial Services cannot guarantee interchange qualification for any specific transaction. It is the responsibility of each Merchant to confirm that their transactions qualify for the correct interchange rates in consultation with their Merchant Account Provider and Payment Processor. If you experience issues with interchange qualification, please contact the Skipjack Financial Services Support Group so that we can work with your Payment Processor to identify and correct any issues. Your Payment Processor must provide the necessary information to direct you and/or Skipjack in the resolution process. Page 9 2009 Skipjack Financial Services Skipjack Integration Guide Publication History Date Version Comments May 2006 Version 0.9 (Draft) Issued for internal review and limited circulation only. August 2006 Version 1.0_RevA Released for distribution and publication on Website. September 2006 Version 1.0_RevD Added information about support for Soft Indicators using Paymentech Salem and assorted editorial changes September 2006 Version 1.0_RevE Added “Appendix A: Permitted Country Code Values” section and additional information about the use of rtCountry variables for Add and Edit recurring Payment methods to support Paymentech Soft Indicator Functionality September 2006 Version 1.0_RevG Minor changes to e-mail variable descriptions. Minor changes to Response Code descriptions for all non Authorize/AuthorizeAPI methods. Added new (virtual) test credit card number for Global Payment Systems November 2006 Version 1.0_RevK Editorial changes to reflect inputs from users. Enhancements made to the Soft Indicator details. April 2007 Version 1.0_RevL Minor editorial changes and corrections. Removed erroneous Soft Indicator information regarding support for 3 digit and 3 letter Country codes. April 2007 Version 1.0_RevL1 Added changes to reflect support for ApprovalCode variable in Authorize/AuthorizeAPI method. Added details for Ignore AVS settings in Orderstring variables plus minor editorial updates. June 2007 Version 1.0_RevL2 Updated Payment Processors tables and info, changed some details in Change Transaction Status and Get Transaction Status sections, added 3 new Reauthorization Scenarios, and assorted editorial updates. August 2007 Version 1.0_RevL3 Added new details about usage of optional ResponseFlags variable, added Advanced Processor information and URLs, and minor editorial updates. September 2007 Version 1.0_RevL4 Added additional information regarding supported processors, and minor editorial updates. October 2007 Version 1.0_RevL5 Corrected batch authorization method request example December 2007 Version 1.0_RevL6 Clarified use of Special Characters for ItemDescription and rtItemDescription. Changed URL for Echo utility, changed Verified by Visa entry for COMDATA in processor table. Minor editorial updates. January 2008 Version 1.0_RevL7 Modified the Track data examples to correct error May 2008 Version 1.0_RevL8 Modified Approval Code information to reflect new code syntax. August 2008 Version 1.0_RevM1 Restructured Skipjack Integration Guide and created separate guides: Skipjack Reporting API Guide and Skipjack Integration Overview Guide. Updated technical details and minor editorial changes throughout. Added details about new TSYS PIN-based Debit Service for debit processing. Clarified information about Level I, II, and III data usage details and background information. September 2008 Version 1.0_RevM2 Minor editorial updates. Page 10 2009 Skipjack Financial Services Skipjack Integration Guide September 2008 Version 1.0_RevM3 Added note to the “Trackdata Capture, Formatting and Usage Notes” section of Appendix H: Using Trackdata Details in Transactions” regarding potential for Declines with swiped transactions in special circumstances. Minor editorial updates. December 2008 Version 1.0_RevM4 Added details about the TSYS enhancements for credit card processing. Added details about enhanced Change Status functionality. Clarified details about use of Split Settlement. Added information about AVS code G. Clarified details about TrackData usage. Updated Soft Indicator information. Clarified usage details for County Code usage. Added new Appendix R: Variable Mapping information. Assorted minor technical and editorial changes. NOTE: This version of the guide was released for internal Skipjack use only. January 2009 Version 1.0_RevM5 Added details regarding new Change Status feature enhancements. Updated the szReturnCode table. Assorted minor technical and editorial changes. February 2009 Version 1.0_RevM6 Minor editorial changes to Authorization Logic and Appropriate Failsafe Mechanisms section. April 2007 Version 1.0_RevM7 Assorted minor technical and editorial changes.. Changes to clarify ChangeStatus response formatting and related details. Improved descriptions for OrderString and lvl3_orderstring variables. Added table for new Test Cards for use with Fifth Third Processing Solutions. April 2007 Version 1.0_RevM8 Added new Skipjack Master Error Code section (Appendix to replace previous szResponseCode Error table and to provide additional troubleshooting and error information. Minor technical changes added as part of internal technical review. Page 11 2009 Skipjack Financial Services Skipjack Integration Guide Documentation Conventions The material presented in this guide uses the following text conventions throughout, where applicable. Convention Usage Example Courier text Code Snippets, HTML Code, Skipjack Transaction Network Request Response Examples text <form name="Button" action="https://vpos.skipjack.com/ezPay/order. asp" method="post"> Bold text Browser Elements, Fields Names, and Menu Items, Emphasis Notes …click on a Submit button…. …make sure you enter your HTML Serial Number.... NOTE: You must consider the following when… Blue Underline Hyperlinks (links) to external resources on the Web. Click on these to go to the document or web site identified by the link. Visit http://www.skipjack.com to learn more about Skipjack Financial Services. “Quoted text” Primary use is to denote crossreferences (clickable hotlinks in the PDF version) to a location within this document. “See the “About this Document” section for details.” This field can also include the “.” (period) character. Also used within tables in this document to enclose characters that might otherwise be overlooked. Italics Document Title See the Skipjack Integration Guide for details. Page 12 2009 Skipjack Financial Services Skipjack Integration Guide Definitions of Variable Types There are three types of variables for all methods: Required, Optional, and Conditional variables. 1. Required Variables are mandatory variables which must be included in all transaction data requests sent. If required variables are missing in transaction data sent to the Skipjack Transaction Network, an error code will be returned to your application. 2. Optional Variables are not required and may be omitted. 3. Conditional Variables are variables that are required if another condition applies, for instance variable A is required if variable B is not included or in cases of a variable applying to specific Payment Processors or services. There are relatively few conditional variables. Permitted Syntax for Variable Fields The permitted characters for variables used in the transaction variable tables throughout are defined below. Please ensure you follow these conventions when entering data into the applicable variable fields. Formatting Type Description of Permitted Characters Usage Notes Numeric All number characters only. Includes all integers. Alphabetic (Alpha) Only All letters of the alphabet only. All letters of the alphabet excluding special characters "~`!@#$%^&*()_-+=. Alpha-Numeric All numeric characters and alphabetic characters but excluding restricted characters. All numeric and alphabetic characters excluding special characters "~`!@#$%^&*()_-+=. All Characters All numeric characters, all letters of the alphabet, and most symbols but excluding restricted characters. All characters, including alpha-numeric characters but excluding restricted characters &,%,*. Restricted Characters Characters that are reserved for special uses by internal system use and cannot be included in variable names or field values. Restricted for special (system) uses: &,%.* Special Characters Special characters only. "~`!@#%^&*()_-+= only Obtaining Additional Information A complete listing of resources including User Guides, Integration Guides, Developer and Merchant resources, support links, and other resources is available from the Skipjack Financial Services Web site at the links listed below: • • http://www.skipjack.com/developers.aspx http://www.skipjack.com/support.aspx Page 13 2009 Skipjack Financial Services Skipjack Integration Guide Obtaining Referenced Documents This document references other Skipjack documentation available from the Skipjack Financial Services Web site by clicking on the links below. • • • • • • • • Skipjack Integration Guide (Latest version of this Guide) Skipjack Integration Troubleshooting Guide Skipjack Integration Overview Guide Skipjack TSYS PIN-based Debit Services Guide Skipjack Level II and III Transaction Overview Guide Skipjack Merchant Reporting Guide Skipjack Merchant Services Guide Skipjack Reporting API Integration Guide Contacting Skipjack Financial Services If you have problems using the Skipjack Transaction Network or have questions about its use that are not covered in this documentation, please contact Skipjack Financial Services. • • • On the Web: http://www.skipjack.com Toll-Free Telephone Support Line: 1-888-368-8507 Email: [email protected] Obtaining a Developer Account with Skipjack Financial Services You can find out more information and request your Skipjack Development Account(s) online at http://www.skipjack.com/developers.aspx or by calling 1-888-368-8507 and speaking with a Skipjack Customer Support representative. Obtaining a Merchant Account from a Financial Institution Merchant Accounts are provided by financial institutions and must be in place before the live application can activated within Skipjack Financial Services. There is some lead time required for the setup of the Merchant Account. Developers must ensure that the Merchant you are working with is aware of this and begins the process of obtaining their Merchant Account to ensure that live testing and rollout of your application can be completed on time. Page 14 2009 Skipjack Financial Services Skipjack Integration Guide Getting Started: Application Development Lifecycle Overview: Recommended Development Process We suggest that you complete the steps in the order listed below: 1. Read all applicable development information including this document to understand the development process and options. 2. Familiarize yourself with the available integration tools and methods from Skipjack Financial Services. 3. Choose your integration methods keeping in mind the requirements of the Merchant and any other third-party systems requirements. 4. Write the code for your application. 5. Obtain and configure your Skipjack Development Account(s) by contacting Skipjack Financial Services by calling 1-888-368-8507 or on the Web: http://www.skipjack.com/developers.aspx. 6. Test your integration in the Skipjack Test Environment using your Skipjack Development Account(s). For further information about testing, see the testing details described in the Skipjack Developers Overview Guide. 7. Deploy your application Live in the Skipjack Financial Services Production Environment. 8. Test the integration and Skipjack Account settings in the Skipjack Production Environment. 9. Certify your application as Skipjack Certified. This will help reinforce and communicate the message to your users of your commitment to security, reliability, and dependability. Registration also ensures you are eligible for other programs offered by Skipjack Financial Services that are exclusively offered Certified Partners. Find out more about being Skipjack Certified by going to www.skipjack.com/certification. 10. Register your application online with Skipjack’s Solution Finder to maximize your business opportunities. Registration in Solution Finder is free and provides Skipjack’s sales partners with a link from their customers to your Web site. For more about registering, go to https://secure.skipjack.com/partners/search.aspx or email [email protected]. Page 15 2009 Skipjack Financial Services Skipjack Integration Guide Payment Processors Supported by Skipjack Financial Services The Skipjack Transaction Network supports the Payment Processors (also called Processors in this document) listed below. Advanced Processors are noted by red* and transactions posted to these Payment Processors use a specific URL, as noted for each applicable transaction method. Skipjack has links to all Merchant Banks through the Processors listed below. 1 TSYS (VITAL) NOVA First Data Nashville Global Payments East First Tennessee Bank Fifth Third (St. Pete) Concord EFS Net RBS LYNK Paymentech Salem* Paymentech Tampa* COMDATA* Ecommerce YES YES YES YES YES YES YES YES YES YES YES Mail Order YES YES YES YES YES YES NO YES YES YES YES Retail YES YES YES YES YES YES YES YES YES YES YES Verified By Visa YES NO YES YES YES YES NO NO YES YES NO Master Card Secure Code YES NO YES YES YES YES NO NO YES YES NO Level I YES YES YES YES YES YES YES YES YES YES YES Level II YES NO YES YES YES YES NO NO YES YES YES Level III YES NO YES NO NO NO NO NO YES NO NO Soft Indicators /Descriptors YES NO NO NO NO NO NO NO YES NO NO Track 1 Data NO YES YES YES YES YES YES YES YES YES YES Track 2 Data YES NO NO YES NO YES NO NO YES YES YES PIN-based Debit YES NO NO YES NO YES NO NO NO NO NO 1 Settled on First Data Omaha Page 16 2009 Skipjack Financial Services Skipjack Integration Guide Payment Processor Information for Canadian Merchant Accounts and Payment Processors • Canadian Merchant Accounts are supported by Global Payments East and Paymentech only. • All Merchant Account Providers in Canada (including Paymentech) can be processed through Global Payments East. • To use Paymentech as your Payment Processor in Canada you must use Paymentech as your Merchant Account Provider. • Canadian Merchant Accounts using Global Payments East must submit their Merchant Account information to Global Payments Systems for registration at least two weeks before it can be used for transaction processing. The registration process takes approximately 2 weeks to complete. Page 17 2009 Skipjack Financial Services Skipjack Integration Guide Connection Types The Skipjack Transaction Network uses three main connection types for all transaction processing. Direct Skipjack API Posts Direct posts are used to send data as name-value pairs directly to the Skipjack Transaction Network via a secure HTTPS using an HTTPS form POST request. A response is sent back from the Skipjack Transaction Network to the originating application as a comma-delimited test string with carriagereturn and Line Feed (CR/LF) record delimiters. Skipjack will also be providing a web service interface shortly, please contact your Relationship Manager for more information. Web services-based transaction processing will be supported for Authorize, Change Status and Recurring Payments methods. Exact WSDL locations will be provided in a separate Web Services document upon request. Installed API Posts Skipjack provides the .NET Retail API for installation on client hardware. For more information please visit the Skipjack web site at http://www.skipjack.com/developers.aspx and use the Integration Toolkits link to access information about the Skipjack RetailAPI. Skipjack previously supported an installable COM API but not longer supports it for new integrations. (Skipjack Financial Services will continue to support existing applications that use COM-based posts.) Batch Posts Batch posting is a mechanism for processing transactions as grouped batches in an offline mode. Batch posting may be more efficient for processing large volumes of transactions and situations where it is not practical to process each transaction separately. Page 18 2009 Skipjack Financial Services Skipjack Integration Guide Level I, II, III Card Data Transaction Overview The Skipjack Transaction Network supports processing of all card types including Level I, Level II, and Level III card data. Level II and Level III transaction processing are sometimes collectively referred to as Enhanced Data transactions and are normally used in a business-to-business or business-to-government transactions rather than a consumer-level purchases. Level I Transactions Level I card credit transaction data are submitted for all standard consumer credit card transactions and primarily used in credit card purchases made by most consumers. Level I data normally include all the required name-value pairs as described in the main section of this guide. For Level I card transactions the information returned and reported on the Customer’s card statement regarding the transaction is limited to basic transaction details, such as the Merchant Name, City, Date, Amount, and so on. Basic transaction processing rates are applied in accordance with the details provided by the Merchant Account Provider for Level I transactions. Level II Transactions Level II credit cards are typically issued to individuals employed by large enterprises or organizations and governments for making corporate purchases, often for larger transaction amounts than typical Level I transactions. Level II transactions can qualify for a discounted transaction rates resulting in significant savings to the enterprise if all requirements of the Merchant Account Provider are met and the properly formatted transaction data is sent in the transaction request. Level II card data includes all the required Level I data plus three additional parameters. All must be sent to qualify for Level II rates. These parameters are: Purchase Order Number, Customer Code, and Customer Tax. The additional data collected in the transaction data may be used for back-office functions such as program administration (such as monitoring employee spending), accounting and reconciliation functions (for example, general ledger allocations), tax reporting and auditing (providing a breakdown of Local, State, Federal taxes) and supplier monitoring. Level II cardholders typically receive detailed card statements with enhanced details describing the sales tax breakdown, customer reference number (PO Number), and Merchant Order Number on their card statements. Page 19 2009 Skipjack Financial Services Skipjack Integration Guide Example of Level II Data Request String NOTE: Level II transaction name-value pairs shown in red. serialnumber=000289255730&ordernumber=FS4RRM8YHV4DFB2FNA5DWX&transactionamount=1.00&accou ntnumber=4445999922225&month=08&year=2009&cvv2=999&sjname=TestName&[email protected] m&streetaddress=8320 TestDrive&city=Houston&state=TX&zipcode=85284&phone=0000000000& shiptophone=0000000000&orderstring=001~Test Payment~1.00~1~N~||&comment=TEST PAYMENT&customercode=A10&purchaseordernumber=5553424234234234&customertax=0.10 NOTE 1: Skipjack Financial Services only supports Level II transaction processing for the Payment Processors listed in the “Payment Processors Supported by Skipjack Financial Services” section. Level III Transactions Level III credit card transactions are sometimes called Purchase Cards or Corporate Card purchases. Level III transaction data include additional name-value request variables not used for Level I and Level II transactions. Level III transactions are important in the large business-to-business or business-to-government environments as considerably more data is collected for each transaction and can qualify for the lowest discount rates. The Level III transaction data includes all the required Level I and Level II transaction data (Level II data must be sent in a Level III request) as well as additional Level III transaction data. Level III transaction data can be used in an enterprise to support back-end processing and data exchange tasks typically used in accounting and reconciliation tasks. Obtaining the best discount rate depends on several requirements specified by the Merchant Account Provider and that the required Level III transaction parameters are sent for each transaction. At present, the Skipjack Transaction Network is one of the relative few Payment Gateways that fully support Level II and III transactions. As an integrator you must be aware that to be able to process Level II and Level III transaction data and obtain the expected (best) Level III transaction rates requires that all required Level III name-value pairs be properly formatted and sent in each Level III transaction request. NOTE 1: Skipjack Financial Services only supports Level III transaction processing for the Payment Processors listed in the “Payment Processors Supported by Skipjack Financial Services” section. NOTE 2: For Level III transactions all required Level I, Level II, and Level III name-value pairs must be submitted in each transaction request with valid values to qualify for the Level III discount rates. Omitting even a single required name-value pair or assigning an incorrect value for a variable (such as Purchase Order) may result in the transaction being downgraded from the fully-qualified rate to a less qualified rate resulting in unexpected (higher) per transaction rates for the Merchant. Page 20 2009 Skipjack Financial Services Skipjack Integration Guide Example of Level III Data Request String sjname=Vendor Name&[email protected]&Streetaddress=123 Test Road&City=Cincinnati&State=OH&Zipcode=40511&Ordernumber=9727TEST&Accountnumber=4445999922 225&Month=07&Year=08&Transactionamount=51.40&&Shiptostreetaddress=123 TestRoad&Shiptocity=Cincinnati&Shiptostate=OH&Shiptozipcode=40511&Shiptophone=5135882100& Customertax=2.64&Customercode=123456&Purchaseordernumber=PONUMBER&Shiptocountry=840&Shipp ingamount=4.76&Shippinghandling=0.01&Restockingfee=0.02&Uniquevatinvoicenumber=1010&Vatta xamount=0.03&Vattaxrate=0.04&Customervatnumber=1234&Dutyamount=0.05&Summarycommoditycode= 2500&Nationaltax=0.06&Discountamount=0.07&Orderstring_lvl3=31711~PCARDTRANS~44.00~1.000~N ~EA~0.08~44.00~2500~0.09~0.10~0.11~0.12~30~0.13~||33910~PCARDTRANS~0.00~5.000~N~EA~0.00~0 .00~2500~0.00~0.00~0.00~0.00~0~0.00~|| NOTE: This string is sent as a single line of text. See Also • See the “Transaction Requests for Authorize and AuthorizeAPI” section for a complete list of Level I, II, and III transaction data used in transaction Authorizations. Page 21 2009 Skipjack Financial Services Skipjack Integration Guide Core & Supplementary Transaction Methods The methods described in this guide can be functionally classified as either Core or Supplementary methods. A detailed description of all Core and Supplementary transaction methods is provided. Core Methods The Core transaction methods are fundamental methods that perform the most widely-used transaction functions. The Core methods include the following: 1. Authorize and AuthorizeAPI 2. Get Transaction Status 3. Change Transaction Status Supplementary Methods The Supplementary methods are those that are used in conjunction with the Core methods to perform more specialized or tertiary operations on transactions. The available Supplementary Methods for transaction processing: 1. Recurring Payments a) Add Recurring Payment b) Get Recurring Payments Status c) Delete Recurring Payment d) Edit Recurring Payment 2. Batch Upload a) Batch Authorization b) Check Batch File Status c) Modify (Edit) Batch File Status d) Get Batch File Response 3. Reports API a) Transaction Detail Report b) Daily Deposit Summary c) Batch Summary Report d) Customized Report NOTE: For integration details about the Reporting API methods, see the companion guide Skipjack Reporting API Integration Guide. 4. Batch Settlement a) Close Current Open Batch b) Get Batch Settlement Status Page 22 2009 Skipjack Financial Services Skipjack Integration Guide Authorize and AuthorizeAPI Methods The Authorize and AuthorizeAPI methods are used to submit transaction data to the Skipjack Transaction Network for Authorization. Both methods, Authorize and AuthorizeAPI, use the same variables, field names, and values in their requests and responses. The usage of each method is described in this section. Authorize The Authorize method sends an HTTPS POST request to the Skipjack transaction server and receives the responses as a postback with the responses as name-value pairs in the header of the response post. Post-Back Locations for Authorize Method There are three locations for the response types (Approval, Decline, Failure) generated by an Authorize transaction method. Additional information about setting post-back locations can be found in the Skipjack Merchant Services Guide. AuthorizeAPI The AuthorizeAPI method sends a request to the transaction server via a HTTPS connection using a request POST and receives a comma-delimited response string with carriage return/ line feed (CR/LF) line breaks. Transaction Requests for Authorize and AuthorizeAPI This section describes the variables sent in transaction data requests for Authorize and AuthorizeAPI methods. Details for Submitting Transaction Requests for Authorize and AuthorizeAPI Development Server: Authorize https://developer.skipjackic.com/scripts/evolvcc.dll?Authorize Development Server Authorize *Advanced Processors Only See “Payment Processors Supported by Skipjack Financial Services” for a list of Advanced Processors. https://developer.skipjackic.com/evolvcc/evolvcc.aspx?Authorize Development Server: AuthorizeAPI https://developer.skipjackic.com/scripts/evolvcc.dll?AuthorizeAPI Development Server Authorize API *Advanced Processors Only See “Payment Processors Supported by Skipjack Financial Services” for a list of Advanced Processors. https://developer.skipjackic.com/evolvcc/evolvcc.aspx?AuthorizeAPI Production Server: Authorize https://www.skipjackic.com/scripts/evolvcc.dll?Authorize Page 23 2009 Skipjack Financial Services Skipjack Integration Guide Production Server Authorize *Advanced Processors Only See “Payment Processors Supported by Skipjack Financial Services” for a list of Advanced Processors. https://www.skipjackic.com/evolvcc/evolvcc.aspx?AuthorizeAPI Production Server: AuthorizeAPI https://www.skipjackic.com/scripts/evolvcc.dll?AuthorizeAPI Production Server AuthorizeAPI *Advanced Processors Only See “Payment Processors Supported by Skipjack Financial Services” for a list of Advanced Processors. https://www.skipjackic.com/evolvcc/evolvcc.aspx?AuthorizeAPI Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused. NOTE 1: The submitted variables and values and response string values are identical for both the Authorize and AuthorizeAPI methods. NOTE 2: Information highlighted in the following tables with yellow background fill indicates information applicable to those using Paymentech as their Payment Processor and implementing Soft Indicators. NOTE 3: Information highlighted with blue background fill in the following tables indicates information applicable to those using TSYS as their Payment Processor and processing TSYS PIN-based debit transactions. NOTE 4: Information highlighted with orange background fill in the following tables indicates information applicable to those using TSYS or GLOBAL as their Payment Processor and using POSEntryMode Settlement Flags options. Request Variables for Authorize and AuthorizeAPI Methods Variable Name Variable Description Required / Optional Variable Type Min / Max Length SerialNumber HTML Serial Number. Required Numeric 12/12 1 000111222333 Conditional AlphaNumeric 12/12 1 ABC123456789 Data Level Example Skipjack-assigned unique HTML serial number. DeveloperSerialNumber Developer Serial Number Page 24 2009 Skipjack Financial Services Skipjack Integration Guide Developer Serial Number Assigned to the Skipjack Account. This variable is conditional as determined by whether or not this option is set as mandatory in the Merchant Services Interface. SJName Customer's Name Required All Characters 1/40 1 John Doe Cardholder’s Billing Name. NOTE: You should not use the AND symbol (&) in this variable, or else this will truncate the name at this symbol and may cause problems with Skipjack Reports. Email Customer's Billing Email Address Required Valid email Characters 1/40 1 [email protected] StreetAddress Customer's Billing Street Address Required AlphaNumeric and comma (',') and period ('.') 1/40 1 1 Skipjack Way StreetAddress2 Additional Billing Address Information Optional AlphaNumeric comma (',') and period ('.') 0/40 1 Apartment 1 StreetAddress3 Additional Billing Address Information Optional AlphaNumeric and comma (',') and period ('.') 0/40 1 Lower Level StreetAddress4 Additional Billing Address Information Optional AlphaNumeric and comma (',') and period ('.') 0/40 1 Side Door Page 25 2009 Skipjack Financial Services City Customer's Billing City Skipjack Integration Guide Required AlphaNumeric 1/40 1 Cincinnati All Spaces within a City will be removed State Customer's Billing State or Province Required AlphaNumeric 1/40 1 OH ZipCode Customer's Billing Zip or Postal Code Required AlphaNumeric and '-' 1/10 1 12345 or 123456789 Country Customer's Billing Country. Optional* AlphaNumeric *0/3 OR 0/40 1 *For Paymentech Salem: UK *NOTE: Required variable when using Paymentech (Salem or Tampa) as your Payment Processor. OR For other Processors: USA Canada 840 See “Appendix A: Permitted Country Code” section for specific Country Codes used for this variable and any usage restrictions required by specific Payment Processors. Phone Customer's Phone Number Optional Numeric and dash ('-') 1/12 1 8005551212 or 800-555-1212 Fax Customer's Fax Number Optional Numeric and dash ('-') 1/12 1 8005551212 or 800-555-1212 ShipToName The Ship To Name Optional AlphaNumeric 1/40 1 Jane Doe ShipToStreetAddress Customer's Billing Street Address Optional AlphaNumeric and comma (',') and period ('.') 1/40 1 1 Skipjack Way ShipToStreetAddress2 Additional Billing Address Information Optional AlphaNumeric and comma (',') and period ('.') 0/40 1 Apartment 1 ShipToStreetAddress3 Additional Billing Address Information Optional AlphaNumeric and 0/40 1 Lower Level Page 26 2009 Skipjack Financial Services Skipjack Integration Guide comma (',') and period ('.') ShipToStreetAddress4 Additional Billing Address Information Optional AlphaNumeric and comma (',') and period ('.') 0/40 1 Side Door ShipToCity Customer's Billing City Optional AlphaNumeric 1/40 1 Cincinnati ShipToState Customer's Billing State or Province Optional Level 1 AlphaNumeric 1/40 3 OH AlphaNumeric and dash ('-') 1/10 3 12345 or 123456789 AlphaNumeric 0/40 3 USA, Canada, UK, 840 Required Level 3 ShipToZipCode Customer's Billing Zip or Postal Code Optional Level 1 Required Level 3 Customer's Billing Country Optional Level 1 See the “Appendix A: Permitted Country Code” section for specific Country Codes used for this variable and any usage restrictions required by specific Payment Processors. Required Level 3 ShipToPhone Phone Number for Customer at Shipping Destination Required Numeric and dash ('-') 1/12 1 8005551212 or 800-555-1212 ShipToFax Customer’s Fax Number Optional Numeric and dash ('-') 1/12 1 8005551212 or 800-555-1212 OrderNumber Order Number Required AlphaNumeric 1/20* 1 ABC123 or 123 ShipToCountry The order identifier (ID) assigned by the Merchant’s application when the order is placed to identify the transaction Page 27 2009 Skipjack Financial Services Skipjack Integration Guide uniquely. OrderNumber should be uniquely generated by the application to prevent duplicates. (Duplicates order numbers are repeated Order Numbers that occur within a 24 hour period) NOTE: For those using Paymentech Salem as the Payment Processor the Order Number can be a maximum of 22 alphanumeric characters and must be unique per Settlement Batch, otherwise a Decline will be returned. See also “Appendix I: Unique Order Numbers: section. OrderDescription Soft Indicator Descriptor Optional Applies only to Paymentech Salem and TSYS for processing credit card only. This variable must be in the format of X*Y where X is the Company Identifier and Y is the Item Identifier. Three formatting options are permitted: 3 characters*18 characters Page 28 Alphanumeric and a single asterisk “*” 4/22 1 DDS*123456789 012345678 2009 Skipjack Financial Services Skipjack Integration Guide 7 characters*14 characters 12 characters*9 characters. X+Y= 21 characters plus an asterisk (*) for a total of 22 characters. AccountNumber Customer’s Credit Card Number Required Numeric 13/18 1 41111111111111 1 NOTE: Spaces are not permitted. Month Customer’s Credit Card Expiration Month Required Numeric 1/2 1 9 or 09 Year Customer’s Credit Card Expiration Year Required Numeric 2/4 1 09 or 2009 CVV2 Card Verification Value Optional Numeric 3/4 1 123 or 1234 Required Numeric and period (".") 3/10 (does not include Decimal ) 1 1.00 or 1000.00 NOTE: CVV validation may not be supported by the credit card issuing bank. See also “Appendix C: CVV and Interpreting CVV Return Codes” section. TransactionAmount The purchase amount to be authorized on the Customer's credit card. Use XX.XX or XXXX format for this value. All amounts must contain only two digits to the right of the decimal. Page 29 2009 Skipjack Financial Services Skipjack Integration Guide A negative TransactionAmount can be used to perform a Blind Credit if the Blind Credit feature is enabled in the Merchant Services Interface. Comment Any comment about the transaction. Optional AlphaNumeric 0/255 1 This is a comment Optional See Notes See descript -ion 1 See “Appendix H: Using Trackdata Details in Transactions” for examples. Optional AlphaNumeric 0/255 1 color = blue Customer Sales Tax Amount Optional Level 1 Numeric and period (".") 4/12 2 10.10 Sales tax amount in percentage, in XX.XX formatting. Required Level 2 NOTE: All characters in excess of the maximum length of 255 characters will be truncated. TrackData TrackData Track 1, Track 1 and 2, or Track 2 Magstripe data on back of credit card. See also “Appendix H: Using Trackdata Details in Transactions”. userdefined Any defined variable name Up to 30 userdefined fields are permitted per transaction. The name of the user defined fields can only be 40 characters long. CustomerTax *NOTE 1: For VISA, to qualify for Level II and III discount rates this variable must contain a value of 0.1 to 22.00 Required Level 3 Page 30 2009 Skipjack Financial Services Skipjack Integration Guide otherwise the transaction will be downgraded. *NOTE 2: For MasterCard, to qualify for Level II and III discount rates this variable must contain a value of 0.10 to 30.00, otherwise the transaction will be downgraded. See also “Appendix E: Configuring Level II Transaction Data ”. CustomerCode Customer Code *For VISA this value can be Numeric only. PurchaseOrderNumber Optional Level 1 *AlphaNumeric 0/17 2 12345678901234 567 AlphaNumeric* 1/25 2 A123456777 AlphaNumeric 0/40 1 A123456100200 Required Level 2 See also “Appendix E: Configuring Level II Transaction Data” section. Required Level 3 Purchase Order Number Optional Level 1 NOTE 1: To qualify for Level II discount rates this variable must contain a value otherwise the transaction will be downgraded to Level I rates. Required Level 2 Required Level 3 *NOTE 2: When TSYS is the Payment Processor the underscore “_” character is permitted. See also “Appendix E: Configuring Level II Transaction Data”. InvoiceNumber Invoice Number Optional Page 31 2009 Skipjack Financial Services ShippingAmount Skipjack Integration Guide Shipping Charges (Amount.) Optional Level 1 All amounts must contain two digits to the right of the decimal. Required Level 3 Numeric and period (".") 3/12 3 3.25 AlphaNumeric 0/15 3 000000000 Numeric and period (".") 0/12 3 0.00 Numeric 0/4 3 0.0 AlphaNumeric 0/13 3 Numeric 0/12 3 1.23 Alphanumeric 0/4 3 5085 If 1.0 is passed, 10 cents ($ 0.10) will be charged. UniqueVatInvoiceNumber VAT Invoice Reference Number Optional Level 1 Required Level 3 VatTaxAmount VAT Tax Amount or Alternate Tax Amount Optional Level 1 Required Level 3 VatTaxRate VAT Tax Rate Optional Level 1 Required Level 3 CustomerVatNumber Customer VAT Registration ID Optional Level 1 Required Level 3 DutyAmount Duty Amount Optional Level 1 Required Level 3 SummaryCommodityCode Summary Commodity Code Optional Level 1 NOTE: If the Payment Processor is Global then all Alpha Characters should be passed as uppercase. Required Level 3 See https://vpos.skipjack .com/ps/l3/Summary CommodityCode.asp for a list of Commodity Codes. Page 32 2009 Skipjack Financial Services NationalTax National Tax Amount Skipjack Integration Guide Optional Level 1 Numeric and period (".") 0/12 3 1.05 Numeric and period (".") 0/12 3 1.04 Required AlphaNumeric, '||' and '~' 15/2000 1 ItemNumber~ite mDescription~ite mCost~Quantity~ Taxable~|| Optional Level 1 AlphaNumeric, '||' and '~' 53/2000 3 ItemNumber~ite mDescription~ite mCost~Quantity~ Taxable~UnitofM easure~itemdisco unt~extendedam ount~commodityc ode~vattaxamou nt~vattaxrate~alt ernatetaxamount ~taxrate~taxtype ~taxamount~|| Optional AlphaNumeric 0/6 1 012345 01234D Conditional Numeric 0/1 1 2 Required Level 3 DiscountAmount Discount Amount Optional Level 1 Required Level 3 OrderString Level 1 Line Item Details. See also “Appendix K: Orderstring Variables” section. orderstring_lvl3 Level 3 Data Line Item Detail for Purchase Cards. See also “Appendix K: Orderstring Variables” section. ApprovalCode Approval/ Authorization Code Required Level 3 The Approval /Authorization Code must be obtained from a voice authorization and submitted with request. ResponseFlags Response Flags (Used only with Global Payments East and TSYS) Optional request variable to be used by Skipjack Accounts using Global Payments East Host or TSYS as the Payment Processors. Use this request variable to the enable the viewing Page 33 2009 Skipjack Financial Services Skipjack Integration Guide of the optional response variables returned in the transaction data used for proprietary transaction Settlement. NOTE: Usage depends on Skipjack Account settings. 1 = Return optional Settlement data excluding the POSEntryMode variable. 2 = Return optional Settlement data including the POSEntryMode variable. 3 = Return optional Settlement data including the szProductID variable. PINBlock (*Used only with TSYS as your Payment Processor for PIN-based debit processing) Personal ID Number Block *Conditional *Required for TSYS PIN-based Debit Service, otherwise is Optional. The PINBlock is an encrypted string generated by the supported DUK/PT compliant PINpads and used only in a PIN-based debit card transactions and when using TSYS as your Payment Processor. PINBlock is a Required variable for a Debit Page 34 Alphanumeric 0/32 1 AAAAAAAAAAA AAAAAKKKKKK KSSSSSSSSSS 2009 Skipjack Financial Services Skipjack Integration Guide (purchase) transaction, for a Credit transaction but cannot be submitted with a Reversal request for TSYS PIN-based debit transactions. See also “Appendix F: TSYS PIN-based Debit Transactions Information” and the Skipjack TSYS PINbased Debit Guide. Unqtransactionid (*Used only with TSYS as your Payment Processor for PIN-based debit processing) Unique Transaction ID *Conditional *Required for TSYS PIN-based Debit Service. *Optional, is used for TSYS credit card Reversal processing. The inclusion of this variable containing the value of any unsettled authentication’s szTransactionFile Name will result in the Reversal of that transaction. The cardholder’s credit limit is adjusted to reflect the updated credit limit. NOTE: The Approval Code will be the same as the original transaction for successful Reversals and will be different for unsuccessful Reversals. For Debit card Reversals use the TransactionID that uniquely identifies the transaction you Page 35 Numeric and period (“.”) 10/18 1 A1234567890 2009 Skipjack Financial Services Skipjack Integration Guide wish to Reverse. NOTE: All Reversals depend on having the Reversals option enabled in the Skipjack Merchant Register. See also “Appendix F: TSYS PIN-based Debit Transactions Information” or “Appendix Q: Usage Guidelines for Using Paymentech as Payment Processor” and the Skipjack TSYS PINbased Debit Guide for more information. CashbackAmount Cash Back Amount (*Used only with TSYS as your Payment Processor for PIN-based debit processing) *Optional for TSYS PIN-based debit Service transactions. *Conditional This is the amount of cash requested by cardholder and disbursed as cash for pin-based Debit transactions. Use XX.XX format for this value. NOTE: For Reversals of transactions where the original transaction included a CashbackAmount, the Customer must return the Cashback money and the CashbackAmount and Transaction Amount values from the original transactions must be applied to the Reversal otherwise a szReturnCode=-57 Page 36 Numeric and period (".") 3/10 (does not include Decimal ) 1 1.00 2009 Skipjack Financial Services Skipjack Integration Guide will be returned. See also “Appendix F: TSYS PIN-based Debit Transactions Information” and the Skipjack TSYS PINbased Debit Guide. BalanceInquiry Balance Inquiry Optional Numeric 0/1 1 Optional Numeric 1/1 1 Applies only to credit card transactions processed by TSYS as the Payment Processor. Transactions must be posted using AuthorizeAPI otherwise an error is returned. This variable facilitates the return of the balance information for up to 4 additional amounts. The balance of up to 4 accounts associated with the credit card will be returned when this variable is set to 1. NOTE: The Skipjack Merchant Account must have this feature enabled in the Merchant Register in order to function. CardAuthentication Card Authentication Applies only to credit card transactions processed by TSYS as the Payment Processor. Page 37 0 or 1 2009 Skipjack Financial Services Skipjack Integration Guide This variable permits a zero dollar authorization (also known as a Preauthorization or Preauth) to check that the credit card valid. NOTE: The Skipjack Merchant Account must have this feature enabled in the Merchant Register in order to function. Transaction Examples for Authorize and Authorize API Methods Request Example 1: Authorize <!--Fixed Values--> <FORM NAME="sampleauthorization" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?Authorize" METHOD=POST> <INPUT NAME="serialnumber" VALUE="111222333444"> <!--Card Holder Data--> <INPUT NAME="sjname” VALUE="John Doe"> <INPUT NAME="streetaddress" VALUE="123 Demo Street"> <INPUT NAME="city" VALUE="Cincinnati"> <INPUT NAME="state" VALUE="OH"> <INPUT NAME="zipcode" VALUE="12345"> <INPUT NAME="shiptophone" VALUE="9024319977"> <INPUT NAME="email" VALUE="[email protected]"> <!--Purchase Data--> <INPUT NAME="ordernumber" VALUE="ABC123"> <INPUT NAME="orderstring" VALUE="1~Sample Order~1.00~1~N~||"> <INPUT NAME="transactionamount" VALUE="1.00"> <!--Credit Card Data--> <INPUT NAME="accountnumber" VALUE="4111111111111111"> <INPUT NAME="month" VALUE="08"> <INPUT NAME="year" VALUE="09"> Page 38 2009 Skipjack Financial Services Skipjack Integration Guide Response Example 1: Authorize "<!--AUTHCODE=VITAL5--><!--szSerialNumber=111222333444--><!--szTransactionAmount=1900-><!--szAuthorizationDeclinedMessage=--><!--szAVSResponseCode=N--><!-szAVSResponseMessage=Card authorized, no address or zip code match.--><!-szOrderNumber=1--><!--szAuthorizationResponseCode=000067--><!--szReturnCode=1--><!-szCVV2ResponseCode=--><!--szCVV2ResponseMessage=--><!--szIsApproved=1--><!-szTransactionFileName=9802850951761.009--><!--szCAVVResponseCode=--> NOTE: Response string is returned as a single text line. Request Example 2: AuthorizeAPI <!--Fixed Values--> <FORM NAME="sampleauthorization" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?AuthorizeAPI" METHOD=POST> <INPUT NAME="serialnumber" VALUE="999888777666"> <!--Card Holder Data--> <INPUT NAME="sjname" VALUE=”John Doe"> <INPUT NAME="streetaddress" VALUE="123 Demo Street"> <INPUT NAME="city" VALUE="Cincinnati"> <INPUT NAME="state" VALUE="OH"> <INPUT NAME="zipcode" VALUE="12345"> <INPUT NAME="shiptophone" VALUE="9024319977"> <INPUT NAME="email" VALUE="[email protected]"> <!--Purchase Data--> <INPUT NAME="ordernumber" VALUE="ABC123"> <INPUT NAME="orderstring" VALUE="1~Sample Order~1.00~1~N~||"> <INPUT NAME="transactionamount" VALUE="1.00"> <!--Credit Card Data--> <INPUT NAME="accountnumber" VALUE="4111111111111111"> <INPUT NAME="month" VALUE="08"> <INPUT NAME="year" VALUE="09"> Response Example 2: AuthorizeAPI """AUTHCODE"",""szSerialNumber"",""szTransactionAmount"",""szAuthorizationDeclinedMessage "",""szAVSResponseCode"",""szAVSResponseMessage"",""szOrderNumber"",""szAuthorizationResp onseCode"",""szIsApproved"",""szCVV2ResponseCode"",""szCVV2ResponseMessage"",""szReturnCo de"",""szTransactionFileName"",""szCAVVResponseCode"", ""000067"",""999888777666"",""1900"","""",""N"",""Card authorized, exact address match with 5 digit zipcode."",""1"",""000067"",""1"","""","""",""1"", ""10138083786558.009"",""""" NOTE: Response string is returned as two lines with a carriage return after the Header Row. Page 39 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 3: TSYS Credit Card Balance Inquiry <INPUT NAME="serialnumber" VALUE="000123456789"> <INPUT NAME="ordernumber" VALUE="12345"> <INPUT NAME="sjname" VALUE="Name_Test"> <INPUT NAME="streetaddress" VALUE="Address_Test"> <INPUT NAME="city" VALUE="Cincinnati"> <INPUT NAME="state" VALUE="OH"> <INPUT NAME="zipcode" VALUE="45206"> <INPUT NAME="country" VALUE="US"> <INPUT NAME="email" VALUE="[email protected]"> <INPUT NAME="shiptophone" VALUE="8883688507"> <INPUT NAME="orderstring" size="40" VALUE="001~TestName_1~1.00~1~N~||"> <INPUT NAME="transactionamount" VALUE="1.00"> <INPUT NAME="trackdata" size="130" VALUE="B4445222299990007^TESTCARD/TEST^0912101000000520000000052000000?;4445222299990007= 09121010000005200000?"> <INPUT NAME="accountnumber" VALUE="4445222299990007"> <INPUT NAME="month" VALUE="08"> <INPUT NAME="year" VALUE="09"> <INPUT NAME="cvv2"VALUE="999"> <INPUT NAME="cardauthentication" size="1" VALUE="0"> <INPUT NAME="balanceinquiry" size="1" VALUE="0"> <INPUT NAME="unqtransactionid" VALUE=""> <INPUT NAME="orderdescription" size="25" VALUE=""> Response Example 3: TSYS Credit Card Balance Inquiry "AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVSResponseCo de","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsApproved","szCVV2Resp onseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileName","szAccountType1","szAmount Type1","szCurrencyCode1","szSign1","szAmount1","szAccountType2","szAmountType2","szCurrencyCode2"," szSign2","szAmount2","szAccountType3","szAmountType3","szCurrencyCode3","szSign3","szAmount3","szAc countType4","szAmountType4","szCurrencyCode4","szSign4","szAmount4","szCAVVResponseCode" "BALINQ","000123456789","0","","0","Card authorized, address verification result unknown.","12345","BALINQ","1","M","Match","1","10000000000355.111","00","01","840","C","0000007766 55","","","","","","","","","","","","","","","","" NOTE: Response string is returned as two lines with a carriage return after the Header Row. Page 40 2009 Skipjack Financial Services Skipjack Integration Guide Response Variables for Authorize and AuthorizeAPI Methods This section lists and describes the response variables returned for the Authorize and AuthorizeAPI methods. There is a slight variation in the return format for Authorize and Authorize API transaction records. The return records are formatted as follows: 1. The AuthorizeAPI method returns a Header Record whereas the Authorize does not. Authorize only returns a single record as a comma-delimited name-value return string without a header record. For Authorize the variables are listed in the table below. 2. For the AuthorizeAPI method the second record returned is the Response Record (Data Record), containing the transaction return variables and values listed below. Response Variables for Authorize and AuthorizeAPI Methods Return Order Variable Name Variable Description Variable Type Min / Max Length Example 1 AUTHCODE Authorization Code AlphaNumeric 0 (empty) or 6 012345 05738D Numeric 12/12 000111222333 Numeric 3/12 500 (Five dollars) A zero (empty field) or six-digit code identifying whether Authorization was Successful (Approved) or Unsuccessful (Declined/Not Approved) for a transaction returned from cardholder's bank (Issuer). 2 szSerialNumber HTML Serial Number. Assigned unique HTML serial number. 3 szTransactionAmount The purchase amount to be authorized on the Customer's credit card. The return of the TransactionAmount variable. Page 41 2009 Skipjack Financial Services 4 szAuthorizationDeclinedMessage Skipjack Integration Guide Decline message as returned from the Issuing Bank. AlphaNumeric 0/60 Authorization Failed or Card Declined See also the “Appendix B: Address Verification System (AVS) Checking” section for more information. 5 szAVSResponseCode AVS Response Code returned from the Issuing Bank. Alpha 1/1 See also the “Appendix B: Address Verification System ” section for more information. 6 szAVSResponseMessage Text message describing the results of the AVS Response Code from the Issuing Bank. Alpha 0/60 Exact 5 digit Zip Code Match Only 7 szOrderNumber Unique Order Identifier created by the ordering application at the time the order was generated. AlphaNumeric 1/20 ABC123 or 123 AlphaNumeric 6/6 T12345 Fifth Third Processing Solutions highly recommends that that OrderNumber created by your application be unique to prevent confusion and complications. 8 szAuthorizationResponseCode A six-digit Authorization (Approval) code returned from the cardholder's bank (Issuer). If the transaction is Approved this field will contain a six-digit string. If the transaction is Declined this field will contain NULL, empty or be empty. Page 42 2009 Skipjack Financial Services 9 szIsApproved Skipjack Integration Guide Single Character indicating the transaction results returned by the Merchant Gateway. Numeric 1/1 1, 0, or blank (empty) szIsApproved = 1 for Approved transactions szIsApproved = 0 for Declined transactions NOTE: This field does not carry the AVS filtering value. Transactions that show an Approval value here may still be Declined because of AVS filtering. 10 szCVV2ResponseCode The CVV response code returned from the cardholder’s bank. Alpha 1/1 See also CVV Response Codes for Visa and MasterCard/Eurocard 11 szCVV2ResponseMessage Text description of the CVV Response Code. Alpha 0/60 No Match See also CVV Response Codes for Visa and MasterCard/Eurocard 12 szReturnCode Return Code generated by the Merchant Gateway denoting whether or not the transaction data is valid and was sent to Processor. Returns the results of the Validation Phase of the Approval Process. See also ”Appendix S: Master Error Code Table”. Page 43 Numeric and dash ("-") 1/4 See the ”Appendix S: Master Error Code Table” section for more information. 2009 Skipjack Financial Services 13 szTransactionFileName Skipjack Integration Guide Unique Transaction File Name (Transaction ID) generated by the Merchant Gateway for each transaction. Numeric and period (“.”) 10/18 9802850951761.009 Numeric 0/4 1225 NOTE: In all other transaction methods this is Transaction ID. 14 szCAVVResponseCode Cardholder Authentication Verification Value Response Code (CAVV) from the card issuer. Page 44 2009 Skipjack Financial Services Skipjack Integration Guide If optional BalanceInquiry =1 is sent in request, the following variables are returned for up to 4 accounts associated with the credit card. See the “Response Example 3: TSYS Credit Card Balance Inquiry” for an example. 15 szAccount TypeX where X is a value of 1 to 4 Account Type field denotes the type of account(s) associated with the credit card, for up to 4 accounts. NOTE 1: This variable name is appended with numerals 1 to 4 to denote return values for each of the 4 accounts. Empty values are returned for account(s) that do not apply. NOTE 2: The return of these values will depend on configuration settings set by your Payment Processor and/or credit card issuer. 00 = Not specified 10 = Savings 20 = Checking 30 = Credit Card 40 = Universal 60 = Stored Value Account 96 = Cash Benefits Account (for use by Electronic Benefits Transfer transactions only) 98 = Food Stamps Account (for use by Electronic Benefits Transfer transactions only) Page 45 Numeric 0/2 10 2009 Skipjack Financial Services 16 szAmount Type Skipjack Integration Guide Amount Type denotes the type of account(s) associated with the credit card, for up to 4 accounts. NOTE: This variable name is appended with numerals 1 to 4 to denote return values for each of the 4 accounts. Empty values are returned for account(s) that do not apply. 01 = Deposit account: Ledger balance Credit card account: Open to buy 02 = Deposit account: Available balance Credit card account: Credit limit 4S = Amount Healthcare (Visa authorization request only) 4T = Amount Transit (Visa authorization request only) 3S = Amount Co-payment 57 = Original Amount 10 = Partial authorized amount 4U = Amount Prescription/Rx (Visa and MC authorization requests) 4V = Amount Vision/Optical (Visa authorization request only) 4W = Amount clinic/other qualified medical (Visa authorization request only) 4X = Amount Dental (Visa authorization request only) 80 = Amount cash overDiscover only 81 = Original Amount Cash Over- Discover Only Page 46 Numeric 0/2 01 2009 Skipjack Financial Services 17 szCurrencyCode Skipjack Integration Guide The Currency Code field contains a three-character numeric CurrencyCode (ISO 4217 standard) identifying the currency type associated with each account balance, for up to 4 accounts associated with the card. Numeric 0/3 840 Alpha 0/1 C Numeric 0/12 000000001299 NOTE: This variable name is appended with numerals 1 to 4 to denote return values for each of the 4 accounts. Empty values are returned for account(s) that do not apply. For a list of valid currency codes see http://www.iso.org/iso/support /faqs/faqs_widely_used_stan dards/widely_used_standards _other/currency_codes/curren cy_codes_list-1.htm 18 szSign Value Sign Indicates whether the balance amount returned is a positive amount or a negative amount. NOTE: This variable name is appended with numerals 1 to 4 to denote return values for each of the 4 accounts. Empty values are returned for account(s) that do not apply. C = Positive balance D = Negative balance 19 szAmount This variable denotes the 12-character numeric account balance, left-justified and zero-filled (the decimal is implied) for up to 4 accounts. NOTE: This variable name is appended with numerals 1 to 4 to denote return values for each of the 4 accounts. Empty values are returned for account(s) that do not apply. Page 47 2009 Skipjack Financial Services Skipjack Integration Guide Response Variables Returned when ResponseFlags Variable Sent in Transaction Request The following variables are returned in the transaction data only when the ResponseFlags variable is sent in an Authorization request and Global Payments East or TSYS are used as the Payment Processor. The purpose of the ResponseFlags variable is to return Settlement data for those Merchants that wish to use this information and/or submit transactions for Settlement directly without using the Skipjack Transaction Network for Settlement. The return of these values may depend on your Skipjack Merchant Account settings. NOTE: For comprehensive details about each of these variables and related information received from Global Payments East contact Global Payments East directly to obtain required specification documentation to ensure the application development of your Settlement implementation complies with their specifications and requirements. Return Order Variable Name Variable Description Variable Type Min / Max Length Example 15 szACI Authorization Characteristic Indicator Alphanumeric 1/1 W Visa Valid values are listed below. A = Card Present C = Card Present, Merchant name and location sent in Request, Cardholderactivated or self service terminal E = Card Present, Merchant name and location sent in Request F = Card Not Present, Merchant name and location sent in Request I = Incremental Authorization K = Card Present, Keyed Entry N= Not a CPS (Custom Payment Services) Qualified Transaction or Merchant not a CPS participant P = Card Not Present, Preferred Customer Program participation S = Electronic Commerce 3D Secure attempt T = Transaction cannot participate in CPS U = Electronic Commerce 3D Secure V = Card Not Present, AVS Request or Bill Payment transaction W = Electronic Commerce non-3D Secure, AVS requested Y = Full contents of Track 1 and Track 2 or Page 48 2009 Skipjack Financial Services Skipjack Integration Guide card not present with AVS present or keyed retail transaction. Electronic Commerce non 3D secure. Electronic Commerce 3D secure MasterCard P = Premier Service Indicator, Card Not Present, Preferred Customer Program participant R = Card Not Present, Recurring Payment Y = Full contents of Track 1 and Track 2 or card not present with AVS present or keyed retail transaction. Electronic Commerce non -3D secure. Electronic Commerce 3D secure Other Credit Card Types Not Used 16 szTransId Transaction ID Alphanumeric 0/15 Alphanumeric 2/2 Visa Assigned by Visa in the original authorization response. Must be present in all subsequent incremental Authorizations, partial Credits, and Settlement. MasterCard Assigned by MasterCard in the original authorization response. Positions 1-9 = Banknet Reference Number Positions 10-13 = Banknet Date Positions 14-15 = Reserved for Future Use NOTE: Because MasterCard plans to use all 15 characters in the future Point of Sale (POS) devices should be coded to capture the entire field whenever data is present. Stored Value Systems 6 digit STAN (System Trace Audit Number) Other Credit Card Types Not Used. 17 szValidationCode Validation Code Visa Value assigned by Visa in the Authorization response message for qualifying transactions. If the authorization is Declined, Visa will Page 49 123456789012 345 2009 Skipjack Financial Services Skipjack Integration Guide assign the first 2 characters as the downgrade reason according to the valid values listed below. 01= Approved 02 = Primary account number missing 18 = Merchant type missing 22 = Point of Sale entry mode not equal to 90 42 = Card acceptor ID code is missing 59 = Merchant’s zip code is missing AN = Account number missing in track data AV = AVS not requested CK = Does not meet CPS key entry criteria CN = cash not qualified CPS CV = Not monitored or participating in CVV CX = Acquirer temporarily excluded from CVV ED = Expiration date missing in track data EM = Enriched card acceptor name/location IC = Invalid Country Code IM = Invalid Merchant Code IP = Invalid Purchase identifier IS = Invalid Sate Code MC = Not participating in multi-currency NA = Not approved in response NP = Not participating in PS/2000 NS = Not secure electronic commerce transaction NT = Not participating in CPS/ATM NV = Not a Visa transaction TA = Account number does not match track data TD = Expiration date does not match track data TI = Transaction Identifier invalid Other Credit Cards Not used. 18 szAuthSourceCode Authorization Source Code Visa For Visa transactions only, this field is a single digit denoting the source of the transaction authorization. Valid values returned: 0 = Source Unknown 1 = STIP, Timeout Response Page 50 Alphanumeric 1/1 5 2009 Skipjack Financial Services Skipjack Integration Guide 2 = LCS Response 3 = STIP, Issuer in Suppression –inq Mode 4 = STIP Response, Issuer Unavailable 5 = Issuer Approval 7 = Acquirer Approval, Base 1 Down 8 = Acquirer Approval of Referral Other Card Types Not used 19 szResponseCode Alphanumeric Response Code Visa Two-character value assigned in the authorization response for transactions submitted for special interchange qualifications. MasterCard For MasterCard used to convey the downgrade reason on transactions that failed the magnetic stripe data edits. A list of valid values for a downgrade reason for MasterCard is listed below. Formatted as left justified, space filled. First Character (Error Indicator) A = Track 1 or Track 2 not present in message B = Track 1 or Track 2 present in message C = Primary account number not equal in track data D = Expiration date not equal in track data E = Card type invalid in track data F = Field separators invalid in track data G = A field within the track data exceeds the maximum length H = Transaction category code is T for telephone order I = Point of Sale customer presence indicator is 1 for customer not present J = Point of Sale card presence indicator is 1 for card not present Second Character (Status Indicator) Y = Authorization system replaced Point of Sale entry mode 90 with a value Stored Value Systems Authorization Server Return Code Page 51 0/2 2009 Skipjack Financial Services Skipjack Integration Guide American Express Reserved for Future Use For Other Cards Not Used 19 szPOSEntryMode Point of Sale Entry Mode Point of Sale Entry mode indicates the way in which the transaction was entered in the Point of Sale device. The response field for ResponseFlags variable returned when using Global as the Payment Processor and the ResponseFlags=2 variable is sent in the Request. For a complete interpretation of the 12-digit code returned for this variable, see “szPOSEntryMode Return Variable Values by Position”, below. Page 52 Alphanumeric 12/12 600550670000 2009 Skipjack Financial Services Skipjack Integration Guide szPOSEntryMode Return Variable Values by Position The table below denotes the mapping and valid return values for the szPOSEntryMode variable introduced previously. Position Description Values 1 Data Input Capability 0 = Not Known 1 = Manual, No terminal (Voice/ARU/IVR) 2 = Magnetic Stripe 4 = Contactless Magnetic Stripe 6 = Key Entered 2 Authentication Capability 0 = No Electronic Authentication 1 = PIN 2 = UCAF Enabled 3 Card Capture Capability 0 = Not Used 4 Operating Environment 0 = No Terminal 1 = On Premises, Attended 2 = On Premises, Not Attended 3 = Off Premises, Attended 4 = On Premises, Attended (Home PC) 5 Cardholder Present 0 = Present 2 = Not Present (Mail Order) 3 = Not Present (Phone Order) 4 = Not Present (Standing Authorization) 5 = Electronic Order (Home PC/Internet) 6 Language Code 0 = English 1 = French 2 = Reserved 7 Card Input Mode 0 = Not Specified 2 = Complete Magnetic Stripe Read, Track 1 or 2 6 = Manually Key Entered 7 = Key-Entered because of magnetic stripe or terminal failure 8 = Key Entered and UCAF (Universal Cardholder Authentication Field) Data included 9 = Track data via contactless entry 8 MOTO/EC Indicator 0 = Not Applicable 1 = Single Transaction 2 = Recurring Transaction 3 = Installment Payment (Not Supported) 4 = Unknown Classification/other Mail Order 5 = Secure Electronic Commerce Transaction 6 = Non-Authenticated Security Transaction (Merchant is capable of doing 3D Secure transactions) 7 = Non-Authenticated Security Transaction, such as encrypted or SSL 8 = Non-Secure Electronic Commerce Transaction Page 53 2009 Skipjack Financial Services Skipjack Integration Guide 9 Prepaid Card Capability 0 = Point of Sale cannot support partial authorization responses or receipt of balance information 1 = Point of Sale can support partial authorization responses and receipt of balance information 2= Point of Sale can support receipt of balance information only 10 Not Used Not Used 11 Not Used Not Used 12 Not Used Not Used Example Using ResponseFlags Request Variables Example 1 NOTE: The optional variables for ResponseFlags are highlighted in red for emphasis. responseflags=1, Market Type set to Ecommerce on Skipjack Account "AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVS ResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsA pproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileNa me","szACI","szTransId","szValidationCode","szAuthSourceCode","szResponseCode","szCAVVRes ponseCode" "000037","000262265864","100","","N","Card authorized, no address or zip code match.","Test2","000037","1","P","NotProcessed","1","11402014096716.102", "W","006205567810100","0100","5","00","" Example 2 NOTE: The optional variables for ResponseFlags are highlighted in red for emphasis. responseflags=2, Market Type set to Ecommerce on Skipjack Account "AUTHCODE","szSerialNumber","szTransactionAmount","szAuthorizationDeclinedMessage","szAVS ResponseCode","szAVSResponseMessage","szOrderNumber","szAuthorizationResponseCode","szIsA pproved","szCVV2ResponseCode","szCVV2ResponseMessage","szReturnCode","szTransactionFileNa me","szACI","szTransId","szValidationCode","szAuthSourceCode","szResponseCode", "szPOSEntryMode","szCAVVResponseCode" "000037","000262265864","100","","N","Card authorized, no address or zip code match.","Test3A","000037","1","P","Not Processed","1","11402014096972.102", "W", "006205567810100","0100","5","00","600550670000","" Page 54 2009 Skipjack Financial Services Skipjack Integration Guide Development Notes for AuthorizeAPI Response Handling The following should be considered when applying logic in your application to handle Approvals and Declines during the Authorization process. Understanding the logic of the request and response variable handling in the Skipjack Transaction Network will eliminate unnecessary complications. 1. Parse by location not by position. The Skipjack Transaction Network retains the right to add variables to the authorization responses. Every effort will be made to add variables only to the end of the return string. However you should base your application logic to parse by location such as “next to”, “preceding”, “after”, '”before”, and so on rather than parsing on position, such as by referring to “x” number of characters “away”. 2. Do not parse on commas. There may be commas in the szAuthorizationDeclinedMessage and perhaps other responses and messages. For this reason, do not parse on commas. Skipjack does not control the content of messages sent from your Payment Processor. 3. Approvals or Declines should be determined based on the variable szIsApproved return values (1 = Approved; 0 = Declined). 4. Skipjack does not return a decimal in the szTransactionAmount variable. The Skipjack Transaction Network requires two decimal-place accuracy or Skipjack will insert a decimal place. 5. Skipjack does not control the szAuthorizationResponseCode. This code is typically 6 characters but it can be less. The Skipjack Transaction Network does not pad approval codes with characters if it is less than 6 characters. 6. Do not base your Approval logic on the presence or format of an Approval Code. Issuers may change the Approval code syntax at any time. Page 55 2009 Skipjack Financial Services Skipjack Integration Guide Annotated Examples for Authorize and AuthorizeAPI This section illustrates and explains common Authorization examples. Assumptions • The request and response variables and values used in these examples are condensed to include key variables only in order to simplify and best illustrate each example. • It is assumed that all required fields have been properly formed and passed for each transaction. Each example includes a brief contextual statement describing the assumed conditions for each example, as well as a brief explanation of the return results. Example 1: Authorization Successful for a Basic Credit Card Transaction In this example the Merchant is sending an authorization request with an Ordernumber=000123. (No CVV and AVS data are sent or required and AVS filtering is set to OFF in the Skipjack Merchant Account.) Interpretation • This is a basic transaction Approval. All key return fields contain valid return codes and values associated with an Approved transaction. • Transaction passed validation by the Skipjack Transaction Network as indicated by szReturnCode = 1, meaning transaction data is complete and valid. Page 56 2009 Skipjack Financial Services Skipjack Integration Guide • Transaction was Approved by the Processor/Issuer as indicated by the szIsApproved = 1. szAuthorizationresponseCode = 6 digit code. A valid AUTHCODE = six digit code, also indicates an Approved transaction. • No AVS or CVV response codes or messages were returned because they were not passed in the transaction data and were not required in this example. Page 57 2009 Skipjack Financial Services Skipjack Integration Guide Example 2: Authorization Decline for a Basic Transaction In this example the Merchant is sending an authorization request with an Ordernumber=000123. (No CVV and AVS data not sent or required and AVS filtering is set to OFF in the Skipjack Merchant Account.) Interpretation • Transaction passed Validation as indicated by szReturnCode = 1. • szIsApproved = 0, Issuing bank declined the transaction. • szAuthorizationResponseCode = <empty> indicates that the card Issuer has not processed the transaction. • Authcode = <empty> means that the Authorization was Declined. Page 58 2009 Skipjack Financial Services Skipjack Integration Guide Example 3: Authorization Failure for a Basic Transaction In this example the Merchant is sending an order with an Order Number=000123. In this example the Merchant has not entered the credit card number correctly (only 4 digits entered). AVS and CVV data is not sent and not required by the configuration set in the Skipjack Merchant Account. Interpretation • Transaction failed Validation as indicated by szReturnCode = -35, which is the code returned for an incomplete or incorrect credit card number. • Transaction was not further processed and the transaction data was not submitted to the Processor/Issuer as indicated by the szIsApproved = <empty>. • szAuthorizationresponseCode = <empty> indicates that the card Issuer has not processed the transaction. • Authcode = <empty> means that no Authorization was obtained. Page 59 2009 Skipjack Financial Services Skipjack Integration Guide Example 4: Authorization Successful with AVS Filtering Off In this example the Merchant is sending an authorization request with an Ordernumber=000123 with AVS filters disabled on the Skipjack Merchant Account. Interpretation • All fields contain valid return data compatible with an Authorization Approval as indicated by: AUTHCODE = 6 digit code, szIsApproved = 1, szReturnCode = 1, and szAuthorizationresponseCode = valid 6 digit code. • AVS filtering is OFF, however Issuer/Processor returned full AVS match as indicated by szAVSResponseCode = X. Page 60 2009 Skipjack Financial Services Skipjack Integration Guide Example 5: Authorization Successful with AVS Filtering On In this example, the Merchant is sending an authorization request with an Ordernumber 000123 and AVS filters are enabled on the Skipjack Merchant Account. Interpretation • All fields contain valid return data compatible with an Approval as indicated by: AUTHCODE = 6 digit code, szIsApproved = 1, szReturnCode=1, and szAuthorizationresponseCode = 6 digit code. • Partial match of AVS match as denoted by the szAVSResponseCode = P compared with authorization and approval codes means that the AVS filtering threshold was not breached and Transaction therefore is Approved. Page 61 2009 Skipjack Financial Services Skipjack Integration Guide Example 6: Authorization Failed with AVS Filtering On In this example, the Merchant is sending an authorization request with an Ordernumber=000123 and AVS filters are enabled on the Skipjack Merchant Account. Interpretation • Similar to previous example, all fields contain valid return data compatible with an Approval as indicated by: AUTHCODE = 6 digit code, szIsApproved = 0, szReturnCode = 1, and szAuthorizationresponseCode = 6 digit code. • The distinction between this and the previous example is that this transaction returned a szIsApproved = 0 and a partial match for AVS (szAVSResponseCode = P). This is interpreted as the Skipjack Transaction Network’s AVS filter requiring a higher (better) match than was returned with the transaction and therefore the transaction was Declined. Page 62 2009 Skipjack Financial Services Skipjack Integration Guide Example 7: Authorization Successful with CVV matching for Visa and MasterCard In this example, the Merchant is sending an authorization request with for Ordernumber=000123 and AVS filters are enabled on the Merchant Skipjack account. CVV checking is required and is enabled. This is a Visa or MasterCard Transaction. Interpretation • All return values indicate approval: AUTHCODE, szIsApproved, szReturnCode, and szAuthorizationReponseCode are valid Approval values. • CVV matched as indicated szCVV2ResponseCode=M. Page 63 2009 Skipjack Financial Services Skipjack Integration Guide Example 8: Authorization Failure with CVV not matching for Visa and MasterCard In this example, the Merchant is sending an authorization request with an Ordernumber=000123 and AVS filters are enabled on the Skipjack Merchant Account. CVV checking is set as required and CVV code has been sent with the authorization request data. This is a Visa or MasterCard Transaction. Interpretation • Authcode = EMPTY, szIsApproved=0 and szAuthorizationresponseCode = <empty> all indicate a Declined transaction. • szReturnCode = 1 denotes that this transaction was successfully Validated. • szCVV2ResponseCode = N indicates that CVV code did not match, and may be the reason for the Decline. Page 64 2009 Skipjack Financial Services Skipjack Integration Guide Example 9: Authorization Success with CVV matching for Amex or Discover In this example, the Merchant is sending an authorization request with an Ordernumber=000123 and AVS filters are enabled on the Skipjack Merchant Account. CVV checking is required and CVV code was sent in the transaction data. This is an American Express or Discover credit card purchase. Interpretation • American Express and Discover check but do not return CVV response codes, therefore the szCVV2ResponseCode = EMPTY. • All other return variables denote Approval by Skipjack Transaction Network, Processor, and Issuer: AUTHCODE = 6 digit code, szIsApproved = 1, szReturnCode = 1, szAuthorizationresponseCode = 6 digit code. Page 65 2009 Skipjack Financial Services Skipjack Integration Guide Example 10: Authorization Failure because of CVV not matching for Amex or Discover In this example, the Merchant is sending an Authorization request for Ordernumber=000123 and AVS filters are enabled on the Skipjack Merchant Account. CVV checking is required and enabled. CVV code was sent in the transaction data. This is an American Express or Discover Transaction. Interpretation • American Express and Discover check but do not return CVV response codes therefore szCVV2ResponseCode = EMPTY. • All other return variables indicate Decline by Skipjack Transaction Network, Processor, and Issuer: AUTHCODE = EMPTY, szIsApproved = 0, szAuthorizationresponseCode = valid 6 digit code. szReturnCode = 1, indicates a successful Validation. • Page 66 2009 Skipjack Financial Services Skipjack Integration Guide Get Transaction Status Method Description The Get Transaction Status method allows users to determine the current status of transactions previously Authorized using the Authorize method or AuthorizeAPI method. The Get Transaction Status method sends an HTTP name-value pair request POST to the Skipjack Transaction Server over a secure HTTPS connection. The Skipjack Transaction Server returns a comma-delimited response string with line feed/carriage return (LF/CR) record breaks between records. When Used The Get Transaction Status method can be used to determine the status of a transaction or as a failsafe method for transactions. Additionally this method can be used to validate the status of a transaction prior to the Change Transaction Status method being applied. See Also • • • To see the Get Transaction Status method in use for failsafe checking, see the “Authorization Logic and Appropriate Failsafe Mechanisms” section. To see examples of the Get Transaction Status method in use see the “Scenario 1: Split Authorization Scenario ” and “Scenario 3: Recurring Payments Scenario” sections. Transaction Variables for the Get Transaction Status Method This section describes the variables used in transaction requests for Get Transaction Status. Details for Submitting Get Transaction Status Method Requests Development Server https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_TransactionStatusRequest Production Server https://www.skipjackic.com/scripts/evolvcc.dll?SJAPI_TransactionStatusRequest Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant NOTE: Requests submitted without a secure connection will be refused. Page 67 2009 Skipjack Financial Services Skipjack Integration Guide Request Variables for Get Transaction Status Variable Name Variable Description Required / Not Required Variable Type Min / Max Length Example szSerialNumber HTML Serial Number. Required Numeric 12/12 000111222333 Required AlphaNumeric 12/12 123412341234 Conditional AlphaNumeric 1/20 ABC123 Conditional Numeric and back slash "/" 10/10 05/30/2008 Skipjack-assigned unique HTML serial number. szDeveloperSerialNumb er Developer Serial Number Developer Serial Number Assigned to the Skipjack Account. szOrderNumber Order Number The unique identifier (ID) generated by the Merchant’s Application when the order is placed. See also “Appendix I: Unique Order Numbers” section. If this variable is omitted szDate is Required. szDate The transaction date requested. If this variable is omitted szOrderNumber is Required. MM/DD/YYYY formatting. Page 68 2009 Skipjack Financial Services Skipjack Integration Guide Response Variables for Get Transaction Status This section describes the variables and parameters returned by the Skipjack Transaction Network for the Get Transaction Status method. Interpreting the Get Transaction Status Response Messages Response strings are returned as a text string in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. Two types of records are returned for the Get Transaction Status method: 1. Status Record (Header Record) is the first record returned contains information about the subsequent records: szSerialNumber, szErrorCode, szNumberRecords and Reserved (empty) fields. If an error occurs, the second record is a text description of the error. 2. Response Record (Data Record) is the second and subsequent record returned for successful transactions (when szErrorCode=0). The Response Record(s) contains specifics about transactions as listed in the table below. Status Record (Header Record) for Get Transaction Status The first record returned, the Status Record, contains information about the API call and the number of Response Records that follow. Details of the Status Record are listed in the table below. Return Order Variable Name Variable Description Variable Type Min / Max Length Example 1 szSerialNumber HTML Serial Number. Numeric 12/12 000111222333 Numeric and dash "-" 1/2 -8 Skipjack-assigned unique HTML serial number. 2 szErrorCode Error Code (Response Code) 0 = Success -1 = Invalid Command -2 = Parameter Missing -3 = Failed retrieving response -4 = Invalid Status -5 = Failed reading security flags -6 = Developer serial number not found -7 = Invalid Serial Number See also ”Appendix S: Master Error Code Table”. Page 69 2009 Skipjack Financial Services 3 szNumberRecords Skipjack Integration Guide Number of Response Records Numeric 1/4 This will be total number of records returned Reserved Reserved Not Applicable The number of response records returned. 4-13 Reserved Reserved Variables NOTE: Second record is a text description of any error if the API call failed, see szErrorCode description above. Response Records for Get Transaction Status The Response Record (Data Record) is the second and subsequent record returned for successful transactions (when szErrorCode=0). The Response Record(s) contains specifics about transactions as listed in the table below. Return Order Variable Name Variable Description Variable Type Min / Max Length Example 1 HTML Serial Number HTML Serial Number is a Skipjack-assigned unique HTML Serial Number Numeric 12/12 000111222333 Numeric and period (".") 6/12 5.1500 This is the return of the szSerialNumber variable. 2 Transaction Amount Transaction Amount is the purchase amount to be Authorized on the Customer's credit card. The return of the TransactionAmount variable. Page 70 2009 Skipjack Financial Services 3 Transaction Status Code Skipjack Integration Guide Transaction Status Code is a two-digit response code denoting the transaction’s current status and pending status. Numeric 2/2 12 The first digit denotes the Current Status: 0 = Idle 1 = Authorized 2 = Denied 3 = Settled 4 = Credited 5 = Deleted 6 = Archived 7 = Pre-Authorized 8 = Split Settled The second digit denotes the Pending Status: 0 = Idle 1 = Pending Credit 2 = Pending Settlement 3 = Pending Delete 4 = Pending Authorization 5 = Pending Manual Settlement (Manual Settlement accounts) 6 = Pending Recurring 7 = Submitted for Settlement 4 Transaction Status Message Text message describing the Transaction Status Code returned above. AlphaNumeric 0/60 5 Order Number Unique Order Identifier generated during the original Authorization. AlphaNumeric 1/20 Return of the szOrderNumber variable. Page 71 ABC123 or 123 2009 Skipjack Financial Services Skipjack Integration Guide 6 Transaction Date and Time Date and time of the original transaction Authorization returned in MM/DD/YYYY HH:MM:SS format. Numeric and "/" 1/1 11/29/2009 13:15:59 7 Transaction ID Unique Transaction File Name / Transaction ID generated by the Skipjack Transaction Network for each transaction. Numeric and period (".") 10/18 9802850951761.009 This is also known as the TransactionFileName in an Authorization return string. 8 Approval Code 6 digit Authorization (Approval) code returned from the cardholder's bank (Issuer). AlphaNumeric 6/6 000067 or T12345 9 Batch Number The batch number code assigned by the Skipjack Transaction Network to the batch that would be assigned if the transaction were Settled. Numeric 12/12 000000262514 Examples for Get Transaction Status Method Request Example 1: Get Transaction Status Method specifying szDate <!--Fixed Values--> <FORM NAME="samplegettransactionstatus" ACTION="https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_TransactionStatusReque st" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="123456789102"> <INPUT NAME="szDeveloperSerialNumber" VALUE="123456789102"> <!--Purchase Data--> <INPUT NAME="szDate" VALUE="04/11/06"> Response Example 1: Get Transaction Status specifying szDate "123456789102","0","4","","","","","","","","","" "123456789102","1.2200","15","Approved","XX45645645","04/11/06 11:23:58","10796218819934.015","000059","000003828521" "123456789102","1.2200","15","Approved","XX45645645","04/11/06 11:25:55","10796218819939.015","000059","000003828521" "123456789102","1.2200","15","Approved","XX45645645","04/11/06 11:30:48","10018377568212.022","000059","000003828521" "123456789102","1.2200","15","Approved","XX45645645","04/11/06 11:31:52","10018377568218.022","000059","000003828521" Page 72 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 2: Get Transaction Status Method specifying szOrderNumber <!--Fixed Values--> <FORM NAME="samplegettransactionstatus" ACTION="https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_TransactionStatusReque st" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="123456789102"> <INPUT NAME="szDeveloperSerialNumber" VALUE="987654321000"> <!--Purchase Data--> <INPUT NAME="szOrderNumber" VALUE="XX45645645"> Response Example 2: Get Transaction Status specifying szOrderNumber "123456789102","0","4","","","","","","","","","" "123456789102","1.2200","15","Approved","XX45645645","03/09/06 16:21:28", "10796218797935.015","000057","000003741330" "123456789102","1.2200","15","Approved","XX45645645","03/09/06 16:21:43", "9725745399281.011","000057","000003741330" "123456789102","1.2200","15","Approved","XX45645645","03/06/06 16:56:27", "9715746816459.012","000057","000003741330" "123456789102","1.2200","15","Settled","XX45645645","04/04/06 13:36:06", "10018377562143.022","000097","000003820688" Page 73 2009 Skipjack Financial Services Skipjack Integration Guide Change Transaction Status Method Description The Change Transaction Status method allows the changing of the status of any existing transaction from its current status to a new (desired) status. Change Status feature enhancements permit additional processing functions and the ability to submit and change most of the AuthorizeAuthorizeAPI name-value pairs, except for the credit card data in each transaction request. The enhanced Change Status functions are listed below and are denoted with the Ex in their respective function names (for example AuthorizeAdditionalEx). When Used The Change Transaction Status method can are used for changing previously processed transactions held within the Skipjack Transaction Network from one status to another (desired) status. The Change Status functions include the following transaction functions: • • • • • • • • • • • • • Authorize AuthorizeEx Authorize Additional (Re-Bill) Authorize AdditionalEx (Re-Bill) Credit (Refund) CreditEx Delete (Void) Freeze Settle SettleEx SplitSettle (Partial Settle) SplitSettleEx Thaw Page 74 2009 Skipjack Financial Services Skipjack Integration Guide Change Status Functionality Matrix The following table lists all Change Status functions and all possible states that apply to each. Change Status Function Possible Applicable States Authorize Authorized: Pending Manual Settle Authorized: Pending Settle Declined AuthorizeEx Authorized: Pending Manual Settle Authorized: Pending Settle Declined AuthorizeAdditional Authorized: Pending Manual Settle Authorized: Pending Settle Settled Credited Declined Archived AuthorizeAdditionalEx Authorized: Pending Manual Settle Authorized: Pending Settle Settled Credited Declined Archived Credit Settled Credited CreditEx Settled Credited Settle Authorized: Pending Manual Settle Authorized: Pending Settle SettleEx Authorized: Pending Manual Settle Authorized: Pending Settle SplitSettle Authorized: Pending Manual Settle Authorized: Pending Settle SplitSettle SplitSettleEx Authorized: Pending Manual Settle Authorized: Pending Settle SplitSettle Delete Authorized: Pending Manual Settle Authorized: Pending Settle Settled Settled: Pending Credit Credited Pending Credit Pending Authorize Freeze Authorized: Pending Manual Settle Authorized: Pending Settle Settled: Pending Credit Page 75 2009 Skipjack Financial Services Skipjack Integration Guide Pending Credit Pending Authorize Thaw Frozen See Also • • To see examples of the Change Transaction Status method in use, see the “Scenario 1: Split Authorization Scenario and “Re-Authorization Scenarios”. Details for Submitting Change Transaction Status Method Requests Development Server https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_TransactionChangeStatusRequest Production Server https://www.skipjackic.com/scripts/evolvcc.dll?SJAPI_TransactionChangeStatusRequest Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused Page 76 2009 Skipjack Financial Services Skipjack Integration Guide Transaction Requests for Change Transaction Status Method NOTE: When any of the optional variables listed below are not submitted the values from the original transaction will apply (if applicable) except where specifically noted in the table below. Variable Name Variable Description Required / Not Required Variable Type Data Level Min / Max Length Example szSerialNumber HTML Serial Number. Required Numeric 1 12/12 000111222333 Required AlphaNumeric 1 12/12 123412341234 Conditional AlphaNumeric 1 0/40 ABC123 Conditional AlphaNumeric 1 0/40 ABC1234 Conditional Numeric and period (".") 1 10/18 12345678910 Skipjack-assigned unique HTML serial number. szDeveloperSerialNu mber Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. szOrderNumber Order Number The unique Order Number generated by the ordering application (Merchant’s Application) when the transaction is originated. The Order Number should be unique to each transaction. If the Order Number matches multiple transactions, regardless of their Status, an error will be generated if the Reject Duplicate Order Numbers option is configured in the Merchant Account. See also “Appendix I: Unique Order Numbers” section. If this variable is omitted the variable szTransactionId is required. szNewOrderNumber New Order Number If this value is not specified then the original OrderNumber is applied to the transaction. szTransactionId Transaction ID Unique Transaction ID Page 77 2009 Skipjack Financial Services Skipjack Integration Guide assigned by Skipjack to each transaction. If this variable is omitted the variable szOrderNumber is required. szDesiredStatus Desired Status Required The status to which the transaction should be changed. Valid parameters and usage guidelines for each function are provided below. Authorize Re-authorizes in real-time the original transaction without creating an additional (second) transaction so that only a single transaction need be Settled. Cannot submit any Optional name-value fields supported by the Ex functions. Retains same Audit ID as original transaction. If szReturnCode= -37 is returned for the authorization, the transaction will be placed in Pending Authorization status. Standard response string is returned. This function can be applied to transactions in the following states: • Authorized: Pending Manual Settle • Authorized: Pending Settle • Declined If szAmount is sent in the request a new Pending Authorization transaction with Page 78 Alpha 1 DELETE 2009 Skipjack Financial Services Skipjack Integration Guide this specified amount is processed and the original transaction is marked as Archived. If szAmount is not sent in the request the original transaction is marked as Pending Authorization and the amount from the original transaction is applied. AuthorizeEx Re-authorizes in real-time the original transaction without creating an additional (second) transaction with the ability to apply enhanced functions to the transaction. All Optional request variables described later in this table can be submitted. Retains same Audit ID as original transaction. An enhanced response string is returned. If szReturnCode= -37 is returned for the authorization, the transaction will be placed in Pending Authorization status. This function can be applied to transactions in the following states: • Authorized: Pending Manual Settle • Authorized: Pending Settle • Declined If szAmount is not sent in the request the original transaction is marked as Pending Authorization and the original transaction amount is applied to the transaction. AuthorizeAdditional Page 79 2009 Skipjack Financial Services Skipjack Integration Guide Creates a new (separate) transaction in real-time for a previously Authorized transaction. Creates a separate transaction that requires Settlement on its own separately from the original transaction. New AuditID is created for the transaction. Cannot submit any Optional name-value fields supported by the Ex functions. Standard response string is returned. If szReturnCode= -37 is returned for the authorization, the transaction will be placed in Pending Authorization status. szAmount must always be specified in an AuthorizeAdditional request. This function can be applied to transactions in the following states: • Authorized: Pending Manual Settle • Authorized: Pending Settle • Archived • Credited • Declined • Settled AuthorizeAdditionalEx Creates a new (separate) transaction in real-time for a previously Authorized transaction with the ability to apply enhanced functions to the transaction. All Optional request variables described later in this table Page 80 2009 Skipjack Financial Services Skipjack Integration Guide can be submitted. An enhanced response string is returned. If szReturnCode= -37 is returned for the authorization, the transaction will be placed in Pending Authorization status. szAmount must always be specified in an AuthorizeAdditional request. This function can be applied to transactions in the following states: • Authorized: Pending Manual Settle • Authorized: Pending Settle • Archived • Credited • Declined • Settled Credit Reverses a specified amount to the cardholders account. (Also commonly referred to as a Refund.) Retains same Audit ID as original transaction. Cannot submit any Optional name-value fields supported by the Ex functions. A standard response string is returned. Creates a new transaction that is in a Pending Credit status. Default value for szForceSettlement=1 is sent (settlement batch closed). If szAmount is sent this will Page 81 2009 Skipjack Financial Services Skipjack Integration Guide credit the original transaction for this new amount otherwise the original transaction amount will apply to the credit. This function can be applied to transactions in the following states: • Credited • Settled CreditEx Reverses a specified amount to the cardholders account with the ability to apply enhanced functions to the transaction. All Optional request variables described later in this table can be submitted. Retains same Audit ID as original transaction. Creates a new transaction in a Pending Credit status. An enhanced response string is returned. If szAmount is sent this will credit the original transaction for this new amount otherwise the original transaction amount will apply to the credit. Default value for szForceSettlement=0 is sent (settlement batch left open). This function can be applied to transactions in the following states: • Credited • Settled Delete Deletes a previously Authorized transaction and upon completion marks the Page 82 2009 Skipjack Financial Services Skipjack Integration Guide transaction as Deleted. Cannot submit any Optional name-value fields supported by the Ex functions. Delete can be legitimately used to delete test transactions but should not be used for Settled transactions. NOTE: DO NOT DELETE SETTLED TRANSACTIONS. For Settled transactions, use the Credit function instead, otherwise the settlement amounts displayed in the Skipjack Merchant Register will not be reconcilable. This function can be applied to transactions in the following states: • Authorized: Pending Manual Settle • Authorized: Pending Settle • Settled • Settled, Pending Credit • Credited • Pending Credit Freeze Places a previously Authorized transaction in a frozen state so that no further actions possible without Thawing the transaction. Cannot submit any Optional name-value fields supported by the Ex functions. Marks the transaction as Frozen upon successful completion of transaction. This function can be applied to transactions in the following states: • Authorized: Pending Manual Settle Page 83 2009 Skipjack Financial Services • • • • Skipjack Integration Guide Authorized: Pending Settle Settled, Pending Credit Pending Authorize Pending Credit Settle Places a previously Authorized transaction into the Settlement queue to be Settled according to the preferences set for the Merchant Account: for example Manual Settlement, Automatic, or Daily Settlement. Cannot submit any Optional name-value fields supported by the Ex functions. Retains same Audit ID as original transaction. Upon successful completion places transaction in a Pending Settle status. If the szAmount is specified in the request a new Pending Settle transaction is created with this specified amount and the original transaction is marked as Archived. If szAmount is not specified the original transaction is marked as Pending Settle and the amount from the original transaction is applied. Default value for szForceSettlement=1 is sent (settlement batch closed). This function can be applied to transactions in the following states: • Credited • Settled SettleEx Places a previously Authorized transaction into the Settlement Page 84 2009 Skipjack Financial Services Skipjack Integration Guide queue to be Settled according to the preferences set for the Merchant Account: for example Manual Settlement, Automatic, or Daily Settlement with enhanced functionality described below. Ability to apply enhanced functions to the transaction. All Optional request variables described later in this table can be submitted. An enhanced response string is returned. Retains same Audit ID as original transaction. Default value for szForceSettlement=0 is sent (settlement batch left open). If the szAmount is specified in the request a new Pending Settle transaction is created with this specified amount and the original transaction is marked as Archived. If szAmount is not specified the original transaction is marked as Pending Settle and the amount from the original transaction is applied. This function can be applied to transactions in the following states: • Authorized, Pending Manual Settle • Authorized, Pending Settled SplitSettle Allows a previously Authorized transaction to be Settled in separate Settlement amounts and batches. Use this variable option to break a single transaction into Page 85 2009 Skipjack Financial Services Skipjack Integration Guide smaller transactions for Settlement according to the preferences set in the Merchant Account. Split Settlement allows for charging the cardholder’s card separate incremental amounts in instances. NOTE: Some Payment Processors and Card Issuers may prohibit the use of SplitSettle functionality or impose additional fees for using the SplitSettle function. Review your Settlement guidelines with your Merchant Account Provider before you implement this functionality. Cannot submit any Optional name-value fields supported by the Ex functions. A standard response string is returned. Retains same Audit ID as original transaction. Upon successful completion creates a new transaction in a Pending Settle status and marks the original transaction as a Split-Settled status. If szAmount is sent in the request a new transaction will settle for this amount otherwise when if szAmount is not specified the original transaction amount is applied. This function can be applied to transactions in the following states: • Authorized, Pending Manual Settle • Authorized, Pending Settle • Split-Settle SplitSettleEx Allows a previously Authorized Page 86 2009 Skipjack Financial Services Skipjack Integration Guide transaction to be Settled in separate Settlement amounts and batches with the ability to apply enhanced functions to the transaction. NOTE: Some Payment Processors and Card Issuers may prohibit the use of SplitSettle functionality or impose additional fees for using the SplitSettle function. Review your Settlement guidelines with your Merchant Account Provider before you implement this functionality. All Optional request variables described later in this table can be submitted. Retains same Audit ID as original transaction. An enhanced response string is returned. Upon successful completion creates a new transaction in a Pending Settle status and marks the original transaction as a Split Settled status. If szAmount is sent in the request a new transaction will settle for this amount otherwise when the szAmount is not specified the original transaction amount is applied. This function can be applied to transactions in the following transaction states: • Authorized, Pending Manual Settle • Authorized, Pending Settled • Split-Settle Thaw Returns a previously frozen transaction to an active state. Cannot submit any Optional Page 87 2009 Skipjack Financial Services Skipjack Integration Guide name-value fields supported by the Ex functions. This function can be applied to transactions in the following states: • Frozen szAmount The desired Transaction Amount for the selected action that applies to the transaction. Conditional Numeric and decimal (‘.’) 1 Use XX.XX or XXXX format for this value. 3/12 (Count does not Include Decimal ) 12018 or 120.18 1/1 0 or 1 All amounts must contain only two digits to the right of the decimal. NOT 120.185 (Invalid Amount error returned.) A negative TransactionAmount can be used to perform a Blind Credit if the Blind Credit feature is enabled in the Merchant Services Interface. This variable is Required for AuthorizeAdditional and AuthorizeAdditionalEx and Optional for all other Change Status functions. If the szAmount variable is not specified the amount from the original transaction applies. szForceSettlement Force Settlement Optional This variable is used to trigger the close of a Settlement Batch. Set szForceSettlement=0 to not force Settlement. Set szForceSettlement=1 to force Settlement. This variable affects the transaction only when the desired status is the following types: Credit, CreditEx, Settle, or SettleEx. If this variable is omitted Page 88 Numeric 1 2009 Skipjack Financial Services Skipjack Integration Guide Settlement is forced by default except where otherwise noted. Therefore, consider including the szForceSettlement=0 for all transactions, even though it is an optional variable unless as otherwise recommended. For Batch Files, the szForceSettlement variable can be used to control the number of transactions that are submitted in a Settlement Batch. This is achieved by setting all but the last transaction to have a szForceSettlement=0 and the szForceSettlement=1 for the last transaction in the batch. Fields Applicable to Change Status Ex Functions (Extended Functionality) Only SJName Customer's Name Optional AlphaNumeric 1 1/40 John Doe Cardholder’s Billing Name. Email Customer's Billing Email Address Optional Valid email Charact ers 1 1/40 jdoe@skipjack. com StreetAddress Customer's Billing Street Address Optional AlphaNumeric and comma (',') and period ('.') 1 1/40 1 Skipjack Way StreetAddress2 Additional Billing Address Information Optional AlphaNumeric comma (',') and period ('.') 1 0/40 Apartment 1 StreetAddress3 Additional Billing Address Information Optional AlphaNumeric and comma (',') and period ('.') 1 0/40 Lower Level Page 89 2009 Skipjack Financial Services Skipjack Integration Guide StreetAddress4 Additional Billing Address Information Optional AlphaNumeric and comma (',') and period ('.') 1 0/40 Delivery Door City Customer's Billing City Optional AlphaNumeric 1 1/40 Cincinnati All Spaces within a City will be removed State Customer's Billing State or Province Optional AlphaNumeric 1 1/40 OH ZipCode Customer's Billing Zip or Postal Code Optional AlphaNumeric and '-' 1 1/10 12345 or 123456789 Country Customer's Billing Country. Conditional AlphaNumeric 1 *0/3 OR 0/40 *For Paymentech Salem: UK Must be the corresponding country number for Level III qualification. See “Appendix A: Permitted Country Code Values” section for specific Country Codes used for this variable and any usage restrictions required by specific Payment Processors. OR For other Processors: USA Canada 840 NOTE: Required if using Paymentech Salem or Tampa as your Payment Processor. Phone Customer's Phone Number Optional Numeric and dash ('-') 1 1/12 8005551212 or 800-555-1212 Fax Customer's Fax Number Optional Numeric and dash ('-') 1 1/12 8005551212 or 800-555-1212 ShipToName The Ship To Name Optional AlphaNumeric 1 1/40 Jane Doe ShipToStreetAddress Customer's Billing Street Address Optional AlphaNumeric and comma (',') and period ('.') 1 1/40 1 Skipjack Way Page 90 2009 Skipjack Financial Services Skipjack Integration Guide ShipToStreetAddress2 Additional Billing Address Information Optional AlphaNumeric and comma (',') and period ('.') 1 0/40 Apartment 1 ShipToStreetAddress3 Additional Billing Address Information Optional AlphaNumeric and comma (',') and period ('.') 1 0/40 Lower Level ShipToStreetAddress4 Additional Billing Address Information Optional AlphaNumeric and comma (',') and period ('.') 1 0/40 Side Door ShipToCity Customer's Billing City Optional AlphaNumeric 1 1/40 Cincinnati ShipToState Customer's Billing State or Province Optional Level 1 AlphaNumeric 1 1/40 OH AlphaNumeric and dash ('-') 1 1/10 12345 or 123456789 AlphaNumeric 1 0/40 USA, Canada, UK, 840 Required Level 3 ShipToZipCode Customer's Billing Zip or Postal Code Optional Level 1 Required Level 3 ShipToCountry Customer's Billing Country Optional Level 1 Required Level 3 ShipToPhone Phone Number for Customer at Shipping Destination Optional Numeric and dash ('-') 1 1/12 8005551212 or 800-555-1212 ShipToFax Customer’s Fax Number Optional Numeric and dash ('-') 1 1/12 8005551212 or 800-555-1212 Page 91 2009 Skipjack Financial Services OrderNumber Order Number Skipjack Integration Guide Conditional The order identifier (ID) assigned by the Merchant’s application when the order is placed to identify the transaction uniquely. OrderNumber should be uniquely generated by the application to prevent duplicates. (Duplicates order numbers are repeated Order Numbers that occur in a 24 hour period) NOTE: For those using Paymentech Salem as the Payment Processor the Order Number can be a maximum of 22 alphanumeric characters and must be unique per Settlement Batch, otherwise a Decline will be returned. See also “Appendix I: Unique Order Numbers: section. Page 92 AlphaNumeric 1 1/20* ABC123 or 123 2009 Skipjack Financial Services OrderDescription Soft Indicator Descriptor Skipjack Integration Guide Optional Alphanumeric and a single asterisk “*” 1 4/22 DDS*12345678 9012345678 Optional AlphaNumeric 1 0/255 This is a comment Optional AlphaNumeric 1 0/255 color = blue Applies only to Paymentech Salem and TSYS for processing credit card only. This variable must be in the format of X*Y where X is the Company Identifier and Y is the Item Identifier. Three formatting options are permitted: 3 characters*18 characters 7 characters*14 characters 12 characters*9 characters. X+Y= 21 characters plus an asterisk (*) for a total of 22 characters. Comment Any comment about the transaction. NOTE: All characters in excess of the maximum length of 255 characters will be truncated. userdefined Any user defined variable name. Up to 30 user-defined fields are permitted per transaction. The name of the user defined fields can only be 40 characters long. Page 93 2009 Skipjack Financial Services CustomerTax Customer Sales Tax Amount Sales tax amount in percentage, in XX.XX formatting. *NOTE: To qualify for Level II discount rates this variable must contain a value of 0.1 to 22.00 otherwise the transaction will be downgraded. Skipjack Integration Guide Optional Level 1 Required Level 2 Numeric and period (".") 2 4/12 10.10 *AlphaNumeric 2 0/17 123456789012 34567 AlphaNumeric 2 1/25 A123456777 Required Level 3 See also “Appendix E: Configuring Level II Transaction Data ” CustomerCode Customer Code *For VISA only this value can only be Numeric. See also “Appendix E: Configuring Level II Transaction Data” section PurchaseOrderNumbe r Purchase Order Number NOTE: To qualify for Level II discount rates this variable must contain a value otherwise the transaction will be downgraded to Level I rates. Optional Level 1 Required Level 2 Required Level 3 Optional Level 1 Required Level 2 Required Level 3 See also “Appendix E: Configuring Level II Transaction Data” InvoiceNumber Invoice Number Optional AlphaNumeric 1 0/40 A12345610020 ShippingAmount Shipping Charges (Amount.) Optional Level 1 Numeric and period (".") 3 3/12 3.25 AlphaNumeric 3 All amounts must contain two digits to the right of the decimal. Required Level 3 If 1.0 is passed, 10 cents ($ 0.10) will be charged. UniqueVatInvoiceNum ber VAT Invoice Reference Number Optional Level 1 Required Level 3 Page 94 0/15 000000000 2009 Skipjack Financial Services VatTaxAmount VAT Tax Amount or Alternate Tax Amount Skipjack Integration Guide Optional Level 1 Required Level 3 VatTaxRate VAT Tax Rate Optional Level 1 Numeric and period (".") 3 0/12 0.00 Numeric 3 0/4 0.0 AlphaNumeric 3 0/13 Numeric 3 0/12 1.23 Alphanumeric 3 0/4 5085 Numeric and period (".") 3 0/12 1.05 Numeric and period (".") 3 0/12 1.04 AlphaNumeric , '||' and '~' 1 15/2000 ItemNumber~it emDescription~ itemCost~Quan tity~Taxable~|| Required Level 3 CustomerVatNumber Customer VAT Registration ID Optional Level 1 Required Level 3 DutyAmount Duty Amount Optional Level 1 Required Level 3 SummaryCommodityC ode Summary Commodity Code NOTE: If the Payment Processor is Global then all Alpha Characters should be passed as uppercase. Optional Level 1 Required Level 3 See https://vpos.skipjack.com/ps/l3/ SummaryCommodityCode.asp for a list of Commodity Codes. NationalTax National Tax Amount Optional Level 1 Required Level 3 DiscountAmount Discount Amount Optional Level 1 Required Level 3 OrderString Level 1 Line Item Details. Optional See also “Appendix K: Orderstring Variables” section. Page 95 2009 Skipjack Financial Services orderstring_lvl3 ApprovalCode Skipjack Integration Guide Level 3 Data Line Item Detail for Purchase Cards. Optional Level 1 See also “Appendix K: Orderstring Variables” section. Required Level 3 Approval/ Authorization Code Optional The Approval /Authorization Code must be obtained from a voice authorization and submitted with request. Page 96 AlphaNumeric , '||' and '~' 3 53/2000 AlphaNumeric 1 0/6 ItemNumber~it emDescription~ itemCost~Quan tity~Taxable~U nitofMeasure~it emdiscount~ex tendedamount~ commoditycode ~vattaxamount ~vattaxrate~alt ernatetaxamou nt~taxrate~taxt ype~taxamount ~|| 012345 01234D 2009 Skipjack Financial Services Skipjack Integration Guide Development Notes for Change Transaction Status Method • To be able to use szDesiredStatus: Settle and specify an amount or (szAmount) above the original amount, your Skipjack Account must be configured to Allow Settlement Above Original Amount. Contact Skipjack Financial Services Support to enable this function on your Skipjack Account, if this function is required. • To be able to use szDesiredStatus: Credit and specify an amount (szAmount) above the original amount, your Skipjack Account must be configured to Allow Credits Above Original Amount. Contact Skipjack Financial Services Support to enable this function on your Skipjack Account. • When performing any Change Status functions there is a latency of approximately 1 to 5 second seconds for Production and slightly longer for Development environments. This interval is required for the transaction to transition from its current status to its final status. Please consider this latency when using Change Status functions in your integration. • When submitting amounts (szAmount) that are different than the original amount, your Payment Processor may downgrade the transaction processing rate and impose other fees. Please ensure that you are familiar with the implications of using these options and contact your Payment Processor for details about any costs associated with these payment processing options. • When a transaction is in either Pending Credit or Pending Settle states and has been submitted to the Processor, no Change Status operations can be performed on the transaction. • When Authorize, AuthorizeEx, AuthorizeAdditional, or AuthorizeAdditionalEx functions are used a real-time authorization is performed. • If a transaction was originally swiped, performing a ChangeStatus with the Authorize, AuthorizeEx, AuthorizeAdditional, or AuthorizeAdditionalEx functions will be handled as a nonswiped (keyed transaction). This may have implications on the interchange rate applied to the transaction. • For transactions in either a Pending-Credit or Pending-Settle state and has been submitted to the processor, no Change Status functions can be applied to the transaction. Page 97 2009 Skipjack Financial Services Skipjack Integration Guide Response Variables for the Change Transaction Status Method Interpreting the Change Transaction Status Response Records Response strings are returned as a text string in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. Types of records returned are listed below: 1. Status Record (Header Record) is the first record returned and contains information about the subsequent records. 2. Response Record (Data Record) is the second row returned for successful transactions (szErrorCode=0) and includes transaction information described in the table below. If an error is returned for when an error condition exists (szErrorCode• 0), the second row will contain a brief text description of the error. Status Records (Header Record – Row 1) Variables for Change Transaction Status Return Order Variable Name Variable Description Variable Type Min / Max Length Example 1 szSerialNumber HTML Serial Number Numeric 12/12 000111222333 Numeric and "-" 1/2 -1 Merchant's Skipjack-assigned unique HTML Serial Number. 2 szErrorCode Error Code Response Error Code indicating success or error conditions. 0 = Success -1 = Invalid Command -2 = Parameter Missing -3 = Failed retrieving response -4 = Invalid Status -5 = Failed reading security flags -6 = Developer Serial number not found -7 = Invalid Serial Number -8 = Authorization Result Unknown. Perform Get Status -51 = Invalid Amount See also ”Appendix S: Master Error Code Table”. 3 szNumberRecords The number of records in the response. Numeric 1/4 5 4-12 Reserved Reserved Variables for Future Use NOTE: AuthorizeEx and AuthorizeAdditionalEx will return data in this format: Reserved Reserved Reserved Page 98 2009 Skipjack Financial Services Skipjack Integration Guide Row1: 12 fields+ Authorize Response Row 2: 12 fields + Authorize Response See examples below for more details. Page 99 2009 Skipjack Financial Services Skipjack Integration Guide Response Record (Row 2) Variables for the Change Transaction Status Method Response Record (Data Record – Row2) is the second and subsequent record(s) returned for successful transactions (szErrorCode=0) and includes transaction information described in the table below. Return Order Variable Name Variable Description Variable Type Min / Max Length Example 1 Serial Number HTML Serial Number Numeric 12/12 000111222333 Numeric and period (".") 5/14 Response of 5.1500 = Five dollars fifteen cents Skipjack-assigned unique HTML serial number. 2 Transaction Amount Transaction Amount The Transaction Amount is the purchase amount to be Authorized on the Customer's credit card. (Response for this amount has 4 decimals.) The return of the TransactionAmount variable 3 Desired Status Desired status for transaction. AlphaNumeric CREDIT AlphaNumeric SUCCESSFUL UNSUCCESSFUL NOT ALLOWED The return of the szDesiredStatus variable. 4 Status Response The response text of the status change. The valid entries are: SUCCESSFUL UNSUCCESSFUL NOT ALLOWED 5 Status Response Message Detailed text message describing the reason for the response. AlphaNumeric 0/60 Valid or Status Mismatch 6 Order Number The Order Number created during the original Authorization. Numeric and ("/") 1/40 A1234567890 Numeric and period (".") 10/18 10138084223445.009 The return of the szOrderNumber variable. 7 TransactionID TransactionID Unique Audit ID assigned by Skipjack Transaction Network for each transaction returned. Page 100 2009 Skipjack Financial Services 8-12 Enhanced Function Response Skipjack Integration Guide Applies to enhanced functions only (Ex) and numbers of fields returned varies depending on function applied. NOTE: AuthorizeEx and AuthorizeAdditionalEx will return data in this format: Row1: 12 fields+ Authorize Response Row 2: 12 fields + Authorize Response See examples below for more details. Page 101 AlphaNumeric “”,””,”” 2009 Skipjack Financial Services Skipjack Integration Guide Examples for Change Transaction Status Method Request Example 1: Change Transaction Status: Credit – Specifying szOrderNumber (Error) <!--Fixed Values--> <FORM NAME="samplechangetransactionstatus" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll? SJAPI_TransactionChangeStatusRequest" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialnumber" VALUE="987654321000"> <!--Purchase Data--> <INPUT NAME="szOrderNumber" VALUE="ABC123"> <INPUT NAME="szAmount" VALUE="100.00"> <INPUT NAME="szDesiredStatus" VALUE="CREDIT"> Response Example 1: No Records Found for Order Number (Error) "000123456789","-3","","","","","","","","","","" No Records Found Request Example 2: Change Transaction Status (Error - Incorrect Amount for Credit) <!--Fixed Values--> <FORM NAME="samplechangetransactionstatus" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll? SJAPI_TransactionChangeStatusRequest" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialnumber" VALUE="987654321000"> <!--Purchase Data--> <INPUT NAME="szOrderNumber" VALUE="ABC123"> <INPUT NAME="szAmount" VALUE="100.00"> <INPUT NAME="szDesiredStatus" VALUE="CREDIT"> Page 102 2009 Skipjack Financial Services Skipjack Integration Guide Response Example 2: Change Transaction Status (Error- Incorrect Amount for Credit) "000123456789","0","1","","","","","","","","","" "000123456789","10000","CREDIT","UNSUCCESSFUL","Invalid Amount","ABC123", "10138084223445.009" Request Example 3: Change Transaction Status – SplitSettle specifying szOrderNumber <!--Fixed Values--> <FORM NAME=" samplechangetransactionstatus" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll? SJAPI_TransactionChangeStatusRequest" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialnumber" VALUE="987654321000"> <!--Purchase Data--> <INPUT NAME="szOrderNumber" VALUE="ABC123"> <INPUT NAME="szAmount" VALUE="5.00"> <INPUT NAME="szDesiredStatus" VALUE="SPLITSETTLE"> Response Example 3: Change Transaction Status – SplitSettle "000123456789","0","1","","","","","","","","","" "000123456789","100","SPLITSETTLE","SUCCESSFUL","Valid","ABC123","10138084247034.009" Request Example 4: Change Transaction Status – Credit specifying szOrderNumber <!--Fixed Values--> <FORM NAME=" samplechangetransactionstatus" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll? SJAPI_TransactionChangeStatusRequest" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialnumber" VALUE="987654321000"> <!--Purchase Data--> <INPUT NAME="szOrderNumber" VALUE="ABC123"> <INPUT NAME="szAmount" VALUE="8.00"> <INPUT NAME="szDesiredStatus" VALUE="CREDIT"> Response Example 4: Change Transaction Status Credit – Error: Status Mismatch "000123456789","0","1","","","","","","","","","" "000123456789","800","CREDIT","UNSUCCESSFUL","StatusMismatch","ABC123","10138084247034.00 9" Page 103 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 5: Change Transaction Status – Split Settle specifying szOrderNumber <!--Fixed Values--> <FORM NAME=" samplechangetransactionstatus" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll? SJAPI_TransactionChangeStatusRequest" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialnumber" VALUE="987654321000"> <!--Purchase Data--> <INPUT NAME="szOrderNumber" VALUE="ABC123"> <INPUT NAME="szAmount" VALUE="1.00"> <INPUT NAME="szDesiredStatus" VALUE="SPLITSETTLE"> Response Example 5: Change Transaction Status – Successful: Split Settle "000123456789","0","1","","","","","","","","","" "000123456789","100","SPLITSETTLE","SUCCESSFUL","Valid","ABC123","10138084247034.009" Request Example 6a and 6b: Change Transaction Status: Authorize <!--Fixed Values--> <FORM NAME=" samplechangetransactionstatus" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_Trans actionChangeStatusRequest" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialnumber" VALUE="987654321000"> <!--Purchase Data--> <INPUT NAME="szOrderNumber" VALUE="ABC123"> <INPUT NAME="szAmount" VALUE="1.00"> <INPUT NAME="szDesiredStatus" VALUE="AUTHORIZE"> Response Example 6a: Authorize Response "000123456789","0","1","","","","","","","","","" "000123456789","100","AUTHORIZE","SUCCESSFUL","Valid","ABC123","10138084247456.009" Response Example 6b: AuthorizeEx Response "000123456789","0","1","","","","","","","","","","AUTHCODE","szSerialNumber","szTransact ionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","s zOrderNumber","szAuthorizationResponseCode","szReturnCode","szIsApproved","szCVV2Response Code","szCVV2ResponseMessage","szTransactionFileName","szCAVVResponseCode" "000123456789","150","AUTHORIZEEX","SUCCESSFUL","Valid","20090422100706673","114020335690 13.102","","","","","","000017","000123456789","0","","Y","Card authorized, exact address match with 5 digit zip code.","20090422100706673","","1","1","P","Not Processed","11402033569013.102","" Page 104 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 7: ChangeStatus:CreditEx <!--Fixed Values--> <FORM NAME="samplechangetransactionstatus" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll? SJAPI_TransactionChangeStatusRequest" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="987654321000"> <INPUT NAME="szDeveloperSerialnumber" VALUE="000123456789"> <!--Purchase Data--> <INPUT NAME="szOrderNumber" VALUE="998865464"> <INPUT NAME="szAmount" VALUE="1500.00"> <INPUT NAME="ShipToPhone" VALUE="9025551212"> <INPUT NAME="szDesiredStatus" VALUE="CreditEx"> <INPUT NAME="szforcesettlement" VALUE="0"> Response Example 7: ChangeStatus:CreditEx "000123456789","0","1","","","","","","","","","" "000123456789","150000","CREDITEX","SUCCESSFUL","Valid","998865464","11402033569015.102", "","","","","" Request Example 8: Change Transaction Status: AuthorizeAdditionalEx <!--Fixed Values--> <FORM NAME="samplechangetransactionstatus" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll? SJAPI_TransactionChangeStatusRequest" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialnumber" VALUE="987654321000"> <!--Purchase Data--> <INPUT NAME="szOrderNumber" VALUE="test123"> <INPUT NAME="szAmount" VALUE="6.50"> <INPUT NAME="ShipToPhone" VALUE="9025551212"> <INPUT NAME="szDesiredStatus" VALUE="AuthorizeAdditionalEx"> <INPUT NAME="szforcesettlement" VALUE="0"> Response Example 8: ChangeStatus: AuthorizeAdditionalEx "000123456789","0","1","","","","","","","","","","AUTHCODE","szSerialNumber","szTransact ionAmount","szAuthorizationDeclinedMessage","szAVSResponseCode","szAVSResponseMessage","s zOrderNumber","szAuthorizationResponseCode","szReturnCode","szIsApproved","szCVV2Response Code","szCVV2ResponseMessage","szTransactionFileName","szCAVVResponseCode" "000123456789","650","AUTHORIZEADDITIONALEX","SUCCESSFUL","Valid","test123","114020335690 18.102","","","","","","000017","000511327200","650","","Y","Card authorized, exact address match with 5 digit zip code.","test123","","1","1","P","Not Processed","11402033569018.102","" Page 105 2009 Skipjack Financial Services Skipjack Integration Guide Supplemental Transaction Methods Supplementary methods are those methods that are used in conjunction with the Core methods to perform more specialized, or tertiary, operations on transactions. The available Supplementary Methods for transaction processing include the following: 1. Recurring Payments Methods a) Add Recurring Payment b) Get Recurring Payments Status c) Delete Recurring Payment d) Edit Recurring Payment 2. Batch Upload Methods a) Batch Authorization b) Check Batch File Status c) Modify (Edit) Batch File Status d) Get Batch File Response 3. Reports API Methods a) Transaction Detail Report b) Daily Deposit Summary c) Batch Summary Report d) Customized Report NOTE: For integration details about the Reporting API methods, see the companion guide Skipjack Reporting API Integration Guide 4. Batch Settlement Methods a) Close Current Open Batch b) Get Batch Settlement Status Page 106 2009 Skipjack Financial Services Skipjack Integration Guide Recurring Payments Overview Description The Recurring Payment methods allow a single transaction request to activate a series of automatic transactions based on a predetermined schedule. There are nine payment schedules for use with Recurring Payment transactions: 1. 2. 3. 4. 5. 6. 7. 8. 9. Weekly - Starting Date + 7 Days Monthly - Every Month Bi-Weekly - Starting Date + 14 Days Twice-Monthly - Starting Date + 15 Days Every Four Weeks - Every Fourth Week Bi-Monthly - Every Other Month Quarterly – Every Third Month Semi-Annually - Twice a Year Annually – Once a Year Development Notes about Recurring Payments Transactions • Recurring Transactions are scheduled transactions and are not Authorized until the date of the scheduled transaction arrives. Transaction responses received at the time of submission of an Add Recurring Payment method to the Skipjack Transaction Network indicates only that the Recurring Payment transaction data was or was not properly formed. • The Skipjack Transaction Network cannot check the expiration of the card against future scheduled payments. Since most credit cards are reissued every two to four years, avoid unnecessarily large numbers of recurring transactions scheduled far into the future, otherwise the recurring transactions may be Declined when the credit card is reissued. • Skipjack Transaction Network accepts Recurring Payments for days 1 to 28 in any month. Therefore, payments falling on the 29th, 30th, and 31st of any month will be returned as invalid. Move payments falling on these dates into the acceptable date range to ensure the addition of these Recurring Payments transactions will not be rejected by the Skipjack Transaction Server. • The HTTPS direct POST method of Add Recurring Payment returns a comma-delimited string. This is not a useful message for displaying in a Web browser. Additional programming techniques must be employed to convey the results of the request to the Web browser. • When a Recurring Payment transaction is entered into the Skipjack Transaction Network, it is held in the Recurring Payments area of Skipjack Merchant Services. On the recurring date for the transaction, the transaction is Authorized and moved to the Transaction (Interactive) Register for processing of the payment. If e-mail responses are enabled, all recipients will receive the appropriate e-mail message (Approval, Decline, System Failure) for the recurring transaction at that time. Page 107 2009 Skipjack Financial Services Skipjack Integration Guide • The starting and ending dates for the Recurring Payments schedule can be configured. • Recurring Payments can be controlled through the Interactive Register or through an application API. For more information on using the Interactive Register for Recurring Payments, see the Merchant User Guide. • Recurring Payments can be processed as single real-time transactions or within a batch file. For information about off-line submission of Recurring Payments in batch format, see the “Batch File Methods for Transaction Processing” section. • Do not set the number of payments in a Recurring Payment schedule to an unreasonably high value (such as 999) because when the credit card is replaced with a new card reaching the expiration date, any subsequent scheduled transactions will fail. Skipjack Financial Services suggests limiting the payment schedule to a maximum of 2 years (maximum) worth of recurring payments in any recurring payment schedule. Recurring Payment Methods; The following Recurring Payment methods can be used with transactions: • • • • “Add Recurring Payment Method” “Edit Recurring Payments Method” “Delete Recurring Payment Method” “Get Recurring Payment Information Method” See Also: • For usage examples, see the “Scenario 3: Recurring Payments Scenario” section. Page 108 2009 Skipjack Financial Services Skipjack Integration Guide Add Recurring Payment Method When Used The Add Recurring Payment method is used to add one or more scheduled Recurring Payments to a previously Authorized transaction. Submitting Requests for Add Recurring Payments Development Server https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_RecurringPaymentAdd Production Server https://www.skipjackic.com/scripts/evolvcc.dll?SJAPI_RecurringPaymentAdd Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused. See Also • To see examples of the Add Recurring Payment method in use, see the “Scenario 3: Recurring Payments Scenario” section. Transaction Requests for the Add Recurring Payments Method This section describes the variables sent in transaction data requests for Add Recurring Payments method. Variable Name Variable Description Required/ Optional Variable Type Min / Max Length Example szSerialNumber HTML Serial Number Required Numeric 12/12 000111222333 Required AlphaNumeric 12/12 100111222333 Skipjack-assigned unique HTML serial number. szDeveloperSerialNumb er Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. Page 109 2009 Skipjack Financial Services rtOrderNumber Skipjack Integration Guide Recurring Payment Order Number Required AlphaNumeric 1/20 A1234567890 Required All Characters 1/40 John Doe Required AlphaNumeric and (',') and period ('.') 1/40 1 Skipjack Way Optional AlphaNumeric and comma (',') and period ('.') 0/40 Apartment 1 Optional AlphaNumeric and comma (',') and period ('.') 0/40 Lower Level Optional AlphaNumeric and comma (',') and period ('.') 0/40 Side Door Required AlphaNumeric 1/40 Cincinnati Required AlphaNumeric 1/40 OH Required AlphaNumeric and dash ('-') 1/40 12345 or 123456789 The Merchant-defined Order Number to be associated with the Recurring Payment. See also “Appendix I: Unique Order Numbers” section. rtName Customer Billing Name The billing name of the person who will be charged. rtAddress1 Customer’s Billing Street Address Line 1 The Customer's billing street address, line 1. rtAddress2 Customer’s Billing Street Address Line 2 The Customer's billing street address, line 2. rtAddress3 Customer’s Billing Street Address Line 3 The Customer's billing street address, line 3. rtAddress4 Customer’s Billing Street Address Line 4 The Customer's billing street address, line 4. rtCity Customer's Billing City The Customer’s billing city. All Spaces within a City will be removed. rtState Customer’s Billing State The Customer's Billing State or Province rtPostalCode Customer’s Billing Postal Code The Customer's billing Zip or Postal Code. Page 110 2009 Skipjack Financial Services rtCountry Skipjack Integration Guide Customer's Billing Country Optional* Alpha 1/40 USA, Canada, UK Required Numeric and dash ('-') 1/12 8005551212 or 800-555-1212 Optional Numeric and dash ('-') 1/12 8005551212 or 800-555-1212 Required Numeric 1/16 4111111111111 11 Required Numeric 2/2 06 Required Numeric 4/4 2006 Required All Characters Excluding comma (",") 1/20 Part 3 Required Alphanumeric 1/120 Red Shoes Size 12 The Customer’s billing city. rtCountry is a Required variable when using Soft Indicator functionality and using Paymentech as the Payment Processor. See the “Appendix A: Permitted Country Code” section for specific Country Codes used for this variable and any usage restrictions required by specific Payment Processors. rtPhone Customer's Phone Number The Customer’s billing phone number. rtFax Customer's Fax Number The Customer’s billing fax number. rtAccountNumber Customer’s Credit Card Number The Customer’s billing credit card number. rtExpMonth Customer’s Billing Expiration Month The billing Customer’s credit card expiration month. rtExpYear Customer’s Billing Expiration Month The billing Customer’s credit card expiration year of the Recurring Payment. rtItemNumber Item Number The item number represented in the order detail for the Recurring Payment. rtItemDescription Item Description The item description represented in the order detail of the Recurring Payment. Page 111 2009 Skipjack Financial Services rtComment Skipjack Integration Guide Comment Optional All Characters 0/255 This is a sample comment. Required Numeric and period (".") 4/12 1.00 Required Numeric and back slash ("/") 10/10 04/06/2006 Required Numeric Only 1/1 2 Any comment assigned to the Recurring Payment. rtAmount Amount Charged The amount to be charged as the Recurring Payment. This amount must be in X.XX format and must include the decimal point. rtStartingDate Recurring Payment Starting Date Starting date of the first Recurring Payment transaction. rtFrequency Recurring Payments Frequency The frequency to be assigned to the recurring transactions according to the schedule below: 0 = Weekly (Starting Date + 7 Days) 1 = Bi-Weekly (Starting Date + 14 Days) 2 = Twice Monthly (Starting Date + 15 Days) 3 = Monthly (Every month) 4 = Every Four Weeks (Every fourth week) 5 = Bi-Monthly (Every other month) 6 = Quarterly (Every third month) 7 = Semi-Annually (Twice a year) 8 = Annually (Once a year) Page 112 2009 Skipjack Financial Services rtTotalTransactions Skipjack Integration Guide Total Number of Recurring Payments Required Numeric Only 2/2 10 Required Valid e-mail characters 1/40 [email protected] om Total number of recurring transactions to be scheduled. NOTE: Skipjack Financial Services suggests using a reasonable number of payments in your recurring payment schedule so that no more than 3 years recurring payments are scheduled. This will prevent problems (Declines) when cardholders have new credit cards issued to replace expired cards. rtEmail Customer's Billing E-mail Address Page 113 2009 Skipjack Financial Services Skipjack Integration Guide Transaction Responses for Add Recurring Payments Method This section describes the transaction responses for the Add Recurring Payments method. Interpreting the Response Records for Add Recurring Payments Method Response records are returned as text strings in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. The records are formatted with the following values: 1. The Header Record and the Data Record are combined and only one record is returned for successful Add recurring Payments Method transactions. This record contains all information about the Add Recurring Payments as defined in the table below. 2. If an error is encountered, a brief text-based explanation of this error is returned as the second record. Response Records Variables for Add Recurring Payments Method Return Order Variable Description Variable Type Min / Max Length Example 1 Serial Number HTML Serial Number Numeric 12/12 000123456789 Numeric and hyphen (‘-‘) 1/2 -1 Numeric 1/4 5 Skipjack-assigned unique HTML serial number. 2 Response Codes Responses Codes: 0 = Success -1 = Invalid command -2 = Parameter missing -3 = Failed retrieving message -4 = Invalid Status -5 = Failed reading security flags -6 = Developer serial number not found -7 = Invalid serial number -8 = Expiration year is not 4 characters -9 = Credit card has expired -10 = Invalid starting date -11 = Failed Adding Recurring Payment -12 = Invalid Recurring Payment frequency -15 = Failed -16 = Invalid expiration month See also ”Appendix S: Master Error Code Table”. 3 Number of Records Number of records in the response. Page 114 2009 Skipjack Financial Services Skipjack Integration Guide 4 Recurring Payment ID Recurring Payment ID Alphanumeric and decimal (‘.’) 10/18 R1304216213943.0 23 5 Order Number Order Number assigned to all the recurring transactions in that Recurring Payment. AlphaNumeric 1/20 ORDER12345 6-12 Reserved Reserved Reserved Reserved Reserved Examples for Add Recurring Payments Method Request Example 1: Add Recurring Payments Request <!--Fixed Values--> <FORM NAME="sampleaddrecurringpaymentsrequest" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_RecurringPaymentAdd" METHOD=POST> <INPUT NAME="serialnumber" VALUE="111222333444"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!--Card Holder Data--> <INPUT NAME="rtName" VALUE="John Doe"> <INPUT NAME="rtCity" VALUE="Cincinnati"> <INPUT NAME="rtState" VALUE="OH"> <INPUT NAME="rtPostalCode" VALUE="123456"> <!--Credit Card Data--> <INPUT NAME="rtAccountnumber" VALUE="4111111111111111"> <INPUT NAME="rtExpMonth" VALUE="08"> <INPUT NAME="rtExpYear" VALUE="2006"> <!--Purchase Data--> <INPUT NAME="rtItemNumber" VALUE="DEF123"> <INPUT NAME="rtItemDescription" VALUE="SizeBiggie"> <INPUT NAME="rtAmount" VALUE="1.00"> <!—Recurring Payment Data--> <INPUT NAME="rtStartingDate" VALUE="08/12/2006"> <INPUT NAME="rtFrequency" VALUE="7"> <INPUT NAME="rtTotalTransactions" VALUE="02"> Response Example 1: Add Recurring Payments Records – Successful "111222333444","0","1","R0791220832082.009","07092005-100a","","","","","","","" Page 115 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 2: Add Recurring Payments Request <!--Fixed Values--> <FORM NAME="sampleaddrecurringpaymentsrequest" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_RecurringPaymentAdd" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="111222333444"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!--Card Holder Data--> <INPUT NAME="rtName" VALUE="John Doe"> <INPUT NAME="rtCity" VALUE="Cincinnati"> <INPUT NAME="rtState" VALUE="OH"> <INPUT NAME="rtPostalCode" VALUE="123456"> <!--Credit Card Data--> <INPUT NAME="rtAccountnumber" VALUE="4111111111111111"> <INPUT NAME="rtExpMonth" VALUE="08"> <INPUT NAME="rtExpYear" VALUE="2006"> <!--Purchase Data--> <INPUT NAME="rtItemNumber" VALUE="DEF123"> <INPUT NAME="rtItemDescription" value="part123"> <INPUT NAME="rtAmount" VALUE="1.00"> <!—Recurring Payment Data--> <INPUT NAME="rtStartingDate" VALUE="08/06/2006"> <INPUT NAME="rtFrequency" VALUE="3"> <INPUT NAME="rtTotalTransactions" VALUE="12"> Response Example 2: Add Recurring Payments Records – Error: Starting Date "111222333444","-10","1","","","","","","","","","" Invalid starting date entered. Date must not be more than 60 days earlier than the current date: (12/12/2006) Page 116 2009 Skipjack Financial Services Skipjack Integration Guide Edit Recurring Payments Method When Used The Edit Recurring Payment method is used to edit a previously submitted (added) Recurring Payment transaction. Submitting Requests for Edit Recurring Payments Development Server https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_RecurringPaymentEdit Production Server https://www.skipjackic.com/scripts/evolvcc.dll?SJAPI_RecurringPaymentEdit Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused. See Also • To see examples of the Edit Recurring Payment method in use, see the “Scenario 3: Recurring Payments Scenario” section. Transaction Requests for Edit Recurring Payments Method This section describes the variables sent in transaction data requests for the Edit Recurring Payments Method. Variable Name Variable Description Required / Optional Variable Type Min / Max Length Example szSerialNumber HTML Serial Number Required Numeric 12/12 000111222333 Required AlphaNumeric 12/12 100200300400 Required Alphanumeric and decimal (‘.’) 10/18 R13042162139 43.023 Skipjack-assigned unique HTML serial number. szDeveloperSerialNumbe r Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. szPaymentId Recurring Payment ID The unique ID assigned to an individual Recurring Payment. Page 117 2009 Skipjack Financial Services szTransactionDate Skipjack Integration Guide Transaction Date Conditional Numeric and forward slash (‘/’) 10/10 12/05/2006 Required AlphaNumeric 1/40 Jane Doe Date assigned to an individual Recurring Payment transaction. MM/DD/YYYY format. NOTE: If the szTransactionDate variable is submitted, only the individual transaction matching that date within a Recurring Payment schedule will be edited. If this variable is NOT SUPPLIED, ALL scheduled Recurring Payment transactions matching the request variables submitted will be edited. rtName Customer Billing Name The billing name of the person who will be charged. rtEmail Customer's Billing E-mail Address Required Valid e-mail characters 1/40 jdoe@skipjack. com rtAddress1 Customer’s Billing Street Address Line 1 Required AlphaNumeric and comma (',') and period ('.') 1/40 1 Skipjack Way Optional AlphaNumeric comma (',') and period ('.') 0/40 Apartment 1 Optional AlphaNumeric comma (',') and period ('.') 0/40 Lower Level Optional AlphaNumeric comma (',') and period ('.') 0/40 Side Door The Customer's billing street address, line 1. rtAddress2 Customer’s Billing Street Address Line 2 The Customer's billing street address, line 2. rtAddress3 Customer’s Billing Street Address Line 3 The Customer's billing street address, line 3. rtAddress4 Customer’s Billing Street Address Line 4 The Customer's billing street address, line 4. Page 118 2009 Skipjack Financial Services rtCity Skipjack Integration Guide Customer's Billing City Required AlphaNumeric 1/40 Cincinnati Required AlphaNumeric 1/40 OH Required AlphaNumeric and dash ('') 1/40 12345 or 123456789 Optional* Alpha 1/40 USA, Canada, UK Required Numeric and dash ('') 0/12 8005551212 or 800-555-1212 Optional Numeric and dash ('') 0/12 8005551212 or 800-555-1212 All Spaces within a City will be removed rtState Customer’s Billing State The Customer's Billing State or Province rtPostalCode Customer’s Billing Postal Code The Customer's billing Zip or Postal Code. rtCountry Customer's Billing Country The Customer’s billing city. rtCountry is a Required variable when using Soft Indicator functionality and using Paymentech as the Payment Processor. See the “Appendix A: Permitted Country Code” section for specific Country Codes used for this variable and any usage restrictions required by specific Payment Processors. rtPhone Customer's Phone Number The Customer’s billing phone number. rtFax Customer's Fax Number The Customer’s billing fax number. Page 119 2009 Skipjack Financial Services rtAccountNumber Skipjack Integration Guide Customer’s Credit Card Number Required Numeric 5/16 411111111111 111 Required Numeric 2/2 12 Required Numeric 4/4 2009 Required All Characters Excluding comma (",") and (‘&’) ampersand 1/20 001 Required Alphanumeric 1/120 Monthly Hosting Optional All Characters 0/255 This is a sample comment Required AlphaNumeric 1/40 ORD123456 The Customer’s billing credit card number. NOTE: Spaces are not permitted. You can send only the last five digits of the Customers credit card number. This can be obtained using the “Get Recurring Payment Information Method”. rtExpMonth Customer’s Billing Expiration Month The billing Customer’s credit card expiration month. rtExpYear Customer’s Billing Expiration Month The billing Customer’s credit card expiration year of the Recurring Payment. rtItemNumber Item Number The item number represented in the order detail for the Recurring Payment. rtItemDescription Item Description The item description represented in the order detail of the Recurring Payment. rtComment Comment Any comment assigned to the Recurring Payment. rtOrderNumber Order Number The Merchant-assigned new Order Number for this Recurring Payment transaction. See also “Appendix I: Unique Order Numbers”. Page 120 2009 Skipjack Financial Services rtAmount Skipjack Integration Guide Amount Charged Required The amount to be charged as the Recurring Payment. Numeric and decimal (‘.’) 4/12 3.00 This amount must be in X.XX format and must include the decimal point. Transaction Responses for Edit Recurring Payments Method This section lists and describes the response variables returned for Edit Recurring Payments method. Interpreting the Response Records for Edit Recurring Payments Method Response records are returned as text strings in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. The records are formatted with the following values: 1. A Header Record (Data Record) is the only record returned for successful transactions and contains information about the subsequent records in addition to Response Record data, see table below for information. 2. If an error is encountered, a text-based explanation of this error is returned as the second record. Response Records (Header Record) Variables for Edit Recurring Payments Method Return Order Variable Description Variable Type Min / Max Length Example 1 Serial Number HTML Serial Number Numeric 12/12 000123456789 Numeric 1/3 0 Skipjack-assigned unique HTML serial number. 2 Response Codes Responses Codes: 0 = Success -1 = Invalid Command -2 = Parameter Missing -3 = Failed retrieving message -4 = Invalid Status -5 = Failed reading security flags -6 = Developer serial number not found -7 = Invalid serial number -8 = Expiration year is not 4 characters -9 = Credit card has expired -10 = Invalid starting date -14 = Failed editing of Recurring Payment -16 = Invalid expiration month Page 121 2009 Skipjack Financial Services Skipjack Integration Guide See also ”Appendix S: Master Error Code Table”. 3-12 Reserved Reserved. Reserved Reserved Reserved Examples for Edit Recurring Payments Method Request Example 1: Edit Recurring Payments Request <!--Fixed Values--> <FORM NAME="sampleeditrecurringpaymentsrequest" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_RecurringPaymentEdit" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000055512123"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!--Card Holder Data--> <INPUT NAME="rtName" VALUE="John Doe"> <INPUT NAME="rtEmail" VALUE="[email protected]"> <INPUT NAME="rtAddress1" VALUE="1 Skipjack Way"> <INPUT NAME="rtCity" VALUE="Cincinnati"> <INPUT NAME="rtPostalCode" VALUE="123456"> <INPUT NAME="rtPhone" VALUE="8005551212"> <!--Credit Card Data--> <INPUT NAME="rtAccountnumber" VALUE="4111111111111111"> <INPUT NAME="rtExpMonth" VALUE="08"> <INPUT NAME="rtExpYear" VALUE="2006"> <!--Purchase Data--> <INPUT NAME="rtItemNumber" VALUE="Item123"> <INPUT NAME="rtItemDescription" VALUE="Partnumber127"> <INPUT NAME="rtAmount" VALUE="1.00"> <INPUT NAME="rtOrderNumber" VALUE="12588963"> <INPUT NAME="szPaymentId" VALUE="12345678998"> Response Example 1: Edit Recurring Payments – Success "000055512123","0","","","","","","","","","","" Page 122 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 2: Edit Recurring Payments <!--Fixed Values--> <FORM NAME="sampleeditrecurringpaymentsrequest" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_RecurringPaymentEdit" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000055512123"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!--Card Holder Data--> <INPUT NAME="rtName" VALUE="John Doe"> <INPUT NAME="rtEmail" VALUE="[email protected]"> <INPUT NAME="rtAddress1" VALUE="1 Skipjack Way"> <INPUT NAME="rtCity" VALUE=" Cincinnati"> <INPUT NAME="rtPostalCode" VALUE="123456"> <INPUT NAME="rtPhone" VALUE="8005551212"> <!--Credit Card Data--> <INPUT NAME="rtAccountnumber" VALUE="4111111111111111"> <INPUT NAME="rtExpMonth" VALUE="08"> <INPUT NAME="rtExpYear" VALUE="2006"> <!--Purchase Data--> <INPUT NAME="rtItemNumber" VALUE="Item123"> <INPUT NAME="rtItemDescription" VALUE="Partnumber127"> <INPUT NAME="rtAmount" VALUE="1.00"> <INPUT NAME="rtOrderNumber" VALUE="12588963"> <INPUT NAME="szPaymentId" VALUE=""> Response Example 2: Edit Recurring Payments – Error: Missing szPaymentId 999888777666,"-2","","","","","","","","","","" Parameter Missing:(szPaymentId) Page 123 2009 Skipjack Financial Services Skipjack Integration Guide Delete Recurring Payment Method The Delete Recurring Payment method is used to delete any or all Recurring Payments previously created using the Add Recurring Payment method. Submitting Requests for Delete Recurring Payment Method Development Server https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_RecurringPaymentDelete Production Server https://www.skipjackic.com/scripts/evolvcc.dll?SJAPI_RecurringPaymentDelete Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused. See Also • To see examples of the Delete Recurring Payment method in use, see the “Scenario 3: Recurring Payments Scenario” section. Transaction Requests for Delete Recurring Payment Method Variable Name Variable Description Required / Optional Variable Type Min / Max Length Example szSerialNumber HTML Serial Number Required Numeric 12/12 000111222333 Required AlphaNumeric 12/12 100200300400 Skipjack-assigned unique HTML serial number. szDeveloperSerialNumb er Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. Page 124 2009 Skipjack Financial Services szPaymentId Skipjack Integration Guide Recurring Payment ID Required Alphanumeric and decimal (‘.’) 10/18 R130421621394 3.023 Conditional Numeric and back slash (‘/’) 12/12 11/28/2009 A unique ID assigned to an individual Recurring Payment. NOTE: Including the szPaymentId variable in a request will delete all Recurring Payments outstanding in the payment schedule. szTransactionDate Transaction Date The date assigned to an individual (scheduled) Recurring Payment transaction. Use MM/DD/YYYY format. NOTE: Including the szTransactionDate variable in the request will ONLY DELETE the individual transaction matching the specified date within this Recurring Payment schedule. Transaction Responses for Delete Recurring Payments Method This section lists and describes the response variables returned for Delete Recurring Payments method. Interpreting the Response Records for Delete Recurring Payments Method Response records are returned as text strings in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. The records are formatted with the following values: 1. A successful transaction response for a Delete Recurring Payments transaction returns only a Status Record (Header Record) with HTML Serial Number, Response Code, and a sting of empty (Reserved) values. See the table below for detailed information. 2. If an error is encountered, a brief text-based explanation of this error is returned as the second record. Page 125 2009 Skipjack Financial Services Skipjack Integration Guide Response Records (Header Record) Variables for Delete Recurring Payments Return Order Variable Description Variable Type Min / Max Length Example 1 Serial Number HTML Serial Number Numeric 12/12 000123456789 Numeric 1/3 -10 Reserved Reserved Reserved Skipjack-assigned unique HTML serial number. 2 Response Codes Responses Codes: 0 = Success -1 = Invalid Command -2 = Parameter Missing -3 = Failed retrieving message -4 = Invalid Status -5 = Failed reading security flags -6 = Developer serial number not found -7 = Invalid serial number -13 = Failed Delete of Recurring Payment -15 = Failed See also ”Appendix S: Master Error Code Table”. 3-14 Reserved Reserved Examples for Delete Recurring Payment Method Request Example 1: Delete Recurring Payments Request specifying szPaymentId <!--Fixed Values--> <FORM NAME="sampledeleterecurringpaymentsinfo" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_RecurringPaymentDelete " METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="111222333444"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!—Recurring Payment Data--> <INPUT NAME="szPaymentId" VALUE="R802852117715.022"> Response Example 1: Delete Recurring Payment specifying szPaymentId – Successful "111222333444","0","","","","","","","","","","" Page 126 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 2: Delete Recurring Payments Request specifying szTransactionDate <!--Fixed Values--> <FORM NAME="samplegeterecurringpaymentsinfo" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_RecurringPaymentDelete " METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!—Recurring Payment Data--> <INPUT NAME="rtTransactionDate" VALUE="06/10/2006"> Response Example 2: Delete Recurring Payment specifying szTransactionDate – Successful "000123456789","0","","","","","","","","","","" Request Example 3: Delete Recurring Payments Request specifying szTransactionDate <!--Fixed Values--> <FORM NAME="samplegeterecurringpaymentsinfo" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_RecurringPaymentDelete " METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!—Recurring Payment Data--> <INPUT NAME="rtTransactionDate" VALUE="01/02/2006"> Response Example 3: Delete a Recurring Payment – Error: Failed Deleting "000012345678","-13","","","","","","","","","","" Failed deleting recurring payment Page 127 2009 Skipjack Financial Services Skipjack Integration Guide Get Recurring Payment Information Method (Also referred to as Request Recurring Payment Information Method) Description The Get Recurring Payment Information method allows the retrieval of all information about Recurring Payments for a Merchant’s Account. When Used Use the Get Recurring Payments Information method to obtain information about Recurring See Also • To see examples of the Get Recurring Payment method in use, see the “Scenario 3: Recurring Payments Scenario” section. Transaction Requests for Get Recurring Payment Information Submitting Requests for Get Recurring Payment Information Development Server https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_RECURRINGPAYMENTREQUEST Production Server https://www.skipjackic.com/scripts/evolvcc.dll?SJAPI_RECURRINGPAYMENTREQUEST Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused. Transaction Requests for Get Recurring Payments Method Variable Description Required / Optional Variable Type Min / Max Length Example szSerialNumber HTML Serial Number Required Numeric 12/12 000111222333 Required AlphaNumeric 12/12 100987654321 Skipjack-assigned unique HTML serial number. szDeveloperSerialNumber Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. Page 128 2009 Skipjack Financial Services szPaymentId Skipjack Integration Guide Recurring Payment ID Conditional Alphanumeric and decimal (‘.’) 10/18 R1304216213943.023 Conditional Numeric 10/10 11/28/2009 Unique identifier (ID) assigned to an individual Recurring Payment. NOTE: If this variable is sent in the request all transactions will be retrieved for the individual Recurring Payment. If this variable is not sent, all Recurring Payments for the Merchant will be returned. szTransactionDate Transaction Date and back slash (‘/’) Date assigned to an individual transaction within a Recurring Payment. Use MM/DD/YYYY format. NOTE: If only the szTransactionDate variable is sent in the request and szPaymentId is not sent, this variable will be ignored. If szTransactionDate and szPaymentId are both sent in the request only information about the Recurring Payment for the SPECIFIED DATE will be returned. NOTE: Supplying only Required Variables will list ALL Recurring Payments records for the Merchant Account . Transaction Response for Get Recurring Payment Information This section lists and describes the response variables returned for Get Recurring Payments method. Interpreting the Response Records for Get Recurring Payment Information Method Response records are returned as text strings in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. The records returned are formatted as followed: 1. The Status Record (Header Record) is the first record returned and contains information about the subsequent records, see table below for information. 2. If an error is encountered, a brief text-based explanation of this error is returned as the second record. Page 129 2009 Skipjack Financial Services Skipjack Integration Guide Status Records (Header Record) Variables for Get Recurring Payment Information Method Return Order Variable Description Variable Type Min / Max Length Example 1 Serial Number HTML Serial Number Numeric 12/12 000123456789 Numeric 1/3 -12 Skipjack-assigned unique HTML serial number. 2 Response Codes Responses Codes: 0 = Success -1 = Invalid Command -2 = Parameter Missing -3 = Failed retrieving message -4 = Invalid Status -5 = Failed reading security flags -6 = Developer serial number not found -7 = Invalid serial number See also ”Appendix S: Master Error Code Table”. 3 Number of Records Number of records in the response Numeric 1/4 10 4-14 Reserved Reserved Reserved Reserved Reserved Page 130 2009 Skipjack Financial Services Skipjack Integration Guide Interpreting the Response Records (Data Records) for Get Recurring Payment Information Method This section contains the responses returned for the Get Recurring Payment Information method. The Response Records (Data Records) are returned as the second and subsequent records for successful Get Recurring Payment Information transactions and these records include the information listed below. Response Records (Data Records) returned for Get Recurring Payment Method Information Method Return Order Variable Name Variable Description Variable Type Min / Max Length Example 1 HTML Serial Name HTML Serial Number Numeric 12/12 000111222333 AlphaNumeric 12/12 100987654321 Alphanumeric and decimal (‘.’) 10/18 R123456789.111 Alphanumeric 1/40 Jane Doe Numeric 1/2 12 Numeric 3/12 1200 Skipjack-assigned unique HTML serial number. 2 Developer Serial Number Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. 3 Recurring Payment ID Recurring Payment ID The unique Recurring Payment ID generated by the Skipjack Transaction Server and assigned to the individual Recurring Payment. 4 Customer’s Name The new Customer name for this payment/transaction. Return of the rtName variable. 5 Payment Frequency The frequency of the Recurring Payment schedule. Return of the rtFrequency variable. 6 Recurring Amount Recurring Payment Amount The amount for the scheduled Recurring Payments. Page 131 2009 Skipjack Financial Services 7 Transaction Date Skipjack Integration Guide Date assigned to and individual transaction Recurring Payment in MM/DD/YYYY format. Numeric and back slash (‘/’) 12/12 08/25/2009 Numeric and back slash (‘/’) 12/12 06/12/2007 Return of the rtTransactionDate variable. NOTE: If this variable is supplied, only the individual transaction within a Recurring Payment record schedule will be edited. If this variable is NOT SUPPLIED, the payment is globally edited for ALL scheduled payments. 8 First Payment/Payment Date The date of the first Recurring Payment in MM/DD/YYYY format. In the case of a transaction this will be the payment date not the starting date. 9 Total Transactions The total number of payments recognized for this Recurring Payment transaction. Numeric 1/2 15 10 Remaining Transactions The number of remaining transactions for this Recurring Payments. Numeric 1/2 10 11 Customer E-mail Address The new Customer e-mail address for this transaction/payment. Valid E-mail Characters 1/60 [email protected] AlphaNumeric and (',') and ('.') 1/40 1 Skipjack Way AlphaNumeric and (',') and ('.') 0/40 Apartment 1 AlphaNumeric and (',') and ('.') 0/40 Lower Level Return of the rtEmail variable. 12 Customer Address 1 Customer's Billing Street Address, line 1. Return of rtAddress1 variable. 13 Customer Address 2 Customer's Billing Street Address, line 2. Return of the rtAddress2 variable. 14 Customer Address 3 Customer's Billing Street Address, line 3. Return of the rtAddress3 variable. Page 132 2009 Skipjack Financial Services 15 Customer Address 4 Skipjack Integration Guide Customer's Billing Street Address, line 3. AlphaNumeric and (',') and ('.') 0/40 Side Door AlphaNumeric 1/40 Cincinnati AlphaNumeric 1/40 OH AlphaNumeric and dash ('-') 1/40 12345 or 123456789 Alpha 1/40 USA, Canada, UK Numeric and dash ('-') 1/12 8005551212 or 800-555-1212 Numeric and dash ('-') 0/12 8005551212 or 800-555-1212 Numeric 1/16 12345 Numeric 2/2 08 Return of the rtAddress4 variable. 16 Billing City Name Customer's Billing City. All Spaces within a City will be removed Return of the rtCity variable. 17 Customer’s Billing State Customer's Billing State / Province. Return of the rtState variable. 18 Customer’s Postal Code Customer's Billing Zip/Postal Code Return of the rtPostalCode variable. 19 Customer’s Country Customer's Billing Country. Return of the rtCountry variable. 20 Customer's Phone Number Customer's Phone Number. Return of the rtPhone variable. 21 Customer's Fax Number Customer's Fax Number. Return of the rtFax variable. 22 Customer’s Credit Card Number Customer’s Credit Card Number Returns the Last 5 digits of the Customer’s credit card number used for the Recurring Payment. Return of the rtAccountnumber variable. 23 Customer’s Billing Expiration Month Customer’s Billing Expiration Month. Return of the rtExpMonth variable. Page 133 2009 Skipjack Financial Services 24 Customer’s Billing Expiration Year Skipjack Integration Guide Customer’s Billing Expiration Year. Numeric 4/4 2006 All Characters Excluding (‘,’) 1/20 12323 All Characters Excluding (‘,’) 1/120 Red Shirt All Characters 0/255 This is a comment. AlphaNumeric 1/20 ORDER12345 Return of the rtExpYear variable. 25 Item Number Itemnumber represented in the order detail Return of the rtItemNumber variable. 26 Item Description The item description represented in the order detail. Return of the rtItemDescription variable. 27 Comment The comment about the Recurring Payment. Return of the rtComment variable. 28 Order Number The new Order Number for this payment/transaction. Return of the rtOrdernumber variable. Examples for Get Recurring Payment Information Method Request Example 1: Get Recurring Payments Request specifying szTransactionDate <!--Fixed Values--> <FORM NAME="samplegeterecurringpaymentsinfo" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_RecurringPaymentReques t" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="111222333444"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!—Recurring Payment Data--> <INPUT NAME="rtTransactionDate" VALUE="08/12/2006"> Response Example 1: Get Recurring Payment Information specifying szTransactionDate "111222333444","0","1","","","","","","","","","" "111222333444","999888777666","R802852117715.022","Recur1","0","1.2300","08/12/2006","0", "0","[email protected]","2230 Park Avenue","line 2","line 3","line4","Cincinnati", "OH","45206","USA","513-588-2100","513-588-2101","22225","12","2007" "Item002","ItemDesc","Comment","101" Page 134 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 2: Get Recurring Payments Request specifying szPaymentId <!--Fixed Values--> <FORM NAME="samplegeterecurringpaymentsinfo" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_RecurringPaymentReques t" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="222333444555"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!—Recurring Payment Data--> <INPUT NAME="szPaymentId" VALUE="R802852117715.022"> Response Example 2: Get Recurring Payment Information specifying szPaymentId – Success This example returns all the Recurring Payments (3 records) with the TransactionId (szPaymentId) highlighted. Dates and PaymentId highlighted for emphasis. "222333444555","0","3","","","","","","","","","" "222333444555","987654321000","R802852117715.022","Recur1","0","1.2300","05/15/2006","0", "0","[email protected]","2230 Park Avenue","line 2","line 3","line 4","Cincinnati","OH","45206","USA","513-588-2100","513-5882101","22225","12","2007","Item002","ItemDesc","Comment","101" "222333444555","987654321000","R802852117715.022","Recur1","0","1.2300","06/15/2006","0", "0","[email protected]","2230 Park Avenue","line 2","line 3","line 4","Cincinnati","OH","45206","USA","513-588-2100","513-5882101","22225","12","2007","Item002","ItemDesc","Comment","101" "222333444555","987654321000","R802852117715.022","Recur1","0","1.2300","07/15/2006","0", "0","[email protected]","2230 Park Avenue","line 2","line 3","line 4","Cincinnati","OH","45206","USA","513-588-2100","513-5882101","22225","12","2007","Item002","ItemDesc","Comment","101" Request Example 3: Get Recurring Payments Request specifying szPaymentId <!--Fixed Values--> <FORM NAME="samplegeterecurringpaymentsinfo" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_RecurringPaymentReques t" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000012365478"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!—Recurring Payment Data--> <INPUT NAME="szPaymentId" VALUE="R802852117715.099"> Response Example 3: Get Recurring Payment Information – Error: No Records Found "000012365478","-3","","","","","","","","","","" No Records Found Page 135 2009 Skipjack Financial Services Skipjack Integration Guide Transaction Settlement Methods Transaction Settlement is the process of moving funds for Authorized transactions into the Merchant’s Account (bank account). Transaction Settlement can be accomplished in a number of ways, some of which can only be performed using the Merchant Interface while others can be performed using the Batch Settlement APIs. Each is identified in this section. Available Only Though Merchant Services Some transaction Settlement functions and options can only be performed using the Merchant Services interface, including: • • • • • Freeze Batch Thaw Batch Re-open Batch Delete Batch View Transactions in a Batch For information about the above mentioned Batch Settlement functions that must be configured using the Merchant Services Interface, see the Skipjack Merchant Services Guide. Performed using Batch Settlement API Methods The following Batch Settlement methods can be completed using the API methods and are discussed in this section: • • Close Current Open Batch Get Batch Settlement Status Page 136 2009 Skipjack Financial Services Skipjack Integration Guide Close Current Open Batch Method Description The Close Current Open Batch method is used to close and send transactions that currently are in the Settlement queue to the Merchant Account. When Used The Close Current Open Batch method is designed to replace sending a Force Settle flag (szForceSettlement) for a transaction within a batch. Any transactions that are marked Pending Settle (But not Pending Manual Settle) will settle as a batch as soon as possible. Transactions marked Pending Manual Settle will move to a new open batch, and remain Unsettled. Closing an open batch is not a command to process a batch. That action depends on the Merchant’s Batch Settlement preferences. For information about these Merchant Services configured options, see the Batch Settlement information in the Skipjack Merchant Services Guide. See Also • • See also the “Change Transaction Status Method” section for more information about using the szForceSettlement variable (flag). For usage examples of the Close Current Open Batch method, see the “Scenario 4: Batch Settlement Scenario” section. Submitting Requests for the Close Current Open Batch Method Development Server https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_BATCHSETTLECLOSEOPENBATCH Production Server: https://www.skipjackic.com/scripts/EvolvCC.dll?SJAPI_BATCHSETTLECLOSEOPENBATCH Development Server Host Name developer.skipjackic.com/ Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused. Page 137 2009 Skipjack Financial Services Skipjack Integration Guide Transaction Request Variables for Close Current Open Batch Method Variable Name Description Required/ Optional Type Min/Max Length Example szSerialNumber HTML Serial Number Required Numeric 12/12 000111222333 Required AlphaNumeric 12/12 123412341234 Skipjack-assigned unique HTML serial number. szDeveloperSerialNumber Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. Interpreting the Transaction Responses for the Close Current Open Batch Method Records are returned as text strings in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. The records are formatted with the following values: 1. The Status Record (Header Record) is the only record returned for successful Close Current Open Batch method transaction and this record includes: HTML Serial Number, Response Code, and Reserved fields. 2. If an error is encountered in the transaction, the second record returned is a brief text message describing the error that occurred. Page 138 2009 Skipjack Financial Services Skipjack Integration Guide Status Record (Header Record) Responses for the Close Current Open Batch Method Return Order Variable Description Variable Type Min / Max Length Example 1 SerialNumber HTML Serial Number Numeric 12/12 000111222333 Numeric 1/2 0 Reserved Reserved Reserved Skipjack-assigned unique HTML serial number. 2 Status Code Status Code The Status Code associated with the success or failure of the Close Current Open Batch transaction. 0 = Success 1 = Call Failed -1 = Invalid Command -2 = Parameter Missing -3 = No records found -15 = Failure -503 = Request timed out See also ”Appendix S: Master Error Code Table”. 3-13 Reserved Reserved Request Example 1: Close Current Open Batch Method <!--Fixed Values--> <FORM NAME="sampleclosecurrentopenbatch" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_BATCHSETTLECLOSEOPENBA TCH" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000111222333"> <INPUT NAME="szDeveloperSerialNumber"VALUE="999888777666"> Response Example 1: Close Current Open Batch Method – Success "000111222333","0","","","","","","","","","","" Request Example 2: Close Current Open Batch Method <!--Fixed Values--> <FORM NAME="sampleclosecurrentopenbatch" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_BATCHSETTLECLOSEOPENBA TCH" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE=""> <INPUT NAME="szDeveloperSerialNumber"VALUE="999888777666"> Page 139 2009 Skipjack Financial Services Skipjack Integration Guide Response Example 2: Close Current Open Batch Method – Error (Parameter Missing) "000123456789","-2","","","","","","","","","","" Parameter Missing: (szSerialNumber) Page 140 2009 Skipjack Financial Services Skipjack Integration Guide Get Batch Settlement Status Method Description The Get Batch Settlement Status method is used to query the status of a Settlement batch. When Used The Get Batch Settlement Status is used to obtain the settlement history for a specified date and Batch Number for a Skipjack Merchant Account. See Also • For usage examples of the Get Batch Settlement Status method see the “Scenario 4: Batch Settlement Scenario” section. Submitting Requests for the Get Batch Settlement Status Method Development Server https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_BATCHSETTLEGETSTATUSREQUEST Production Server https://www.skipjackic.com/scripts/evolvcc.dll?SJAPI_BATCHSETTLEGETSTATUSREQUEST Development Server Host Name developer.skipjackic.com/ Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused. Page 141 2009 Skipjack Financial Services Skipjack Integration Guide Transaction Request Variables for the Get Batch Settlement Status Method Variable Name Description Required/ Optional Type Min/Max Length Example szSerialNumber HTML Serial Number Required Numeric 12/12 000111222333 Required AlphaNumeric 12/12 123412341234 Optional Numeric 12/12 1234567891012 Required Numeric 12/12 01/25/2009 Optional Numeric 12/12 12/25/2009 Skipjack-assigned unique HTML serial number. szDeveloperSerialNumber The Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. szSkipjackBatchNumber Skipjack Batch Number The unique batch identification (ID) number assigned internally to the batch when it is uploaded. szDateFrom Date Range From Beginning date for the date range you wish to query. Use MM/DD/YYYY format. szDateThru Date Range Ending The ending date for the date range you wish to query. Use MM/DD/YYYY format. Page 142 2009 Skipjack Financial Services szShowDeletedClosed Skipjack Integration Guide Show Deleted or Closed transactions. Optional Alpha 1/1 Y This variable allows you select the display of Deleted and Closed Batches. Permitted Values Y= Show Deleted or Closed N= Do not show deleted or Closed Transaction Responses for the Get Batch Settlement Status Method Response records are returned as text strings in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. The records are formatted with the following values: 1. The Status Record (Header Record) is the first record returned and contains information about the subsequent records to follow and is formatted as follows: HTML Serial Number, Response Code, and Number of Records followed by empty (Reserved) fields. If an error is encountered, the second record returned is a brief text message briefly describing the error that occurred. 2. The Response Records (Data Records) are the second and subsequent records returned for successful Get Batch Settlement Status requests. These records contain the return variables listed in the order below. Transaction Responses for the Get Batch Settlement Status Method Return Order Variable Description Variable Type Min / Max Length Example 1 HTML Serial Number HTML Serial Number Numeric 12/12 000099146970 Numeric 12/12 987654321012 Skipjack-assigned unique HTML serial number. 2 Skipjack Batch Number Batch Number The unique batch identification (ID) number assigned internally to the batch when it is uploaded. Page 143 2009 Skipjack Financial Services 3 Batch Status Skipjack Integration Guide Batch Status Numeric 1/1 2 Numeric 1/1 01 Numeric and colon (‘:’) and back slash (‘/’) and space (‘ ‘) 17/20 11/22/06 01:07:02 Numeric and colon (‘:’) and back slash (‘/’) and space (‘ ‘) 17/20 11/22/06 11:07:02 Valid values: 2= Open 3= Closed 4= Completed 5= Deleted 6= Processing 7= Inactive 8= Failed 4 Status Status Valid values: 0 = Valid/Thawed 1= Frozen 5 Opened Date Opened Date and Time The date and time that the batch was opened, that is that date and time when a new batch was created in Skipjack to receive new transactions. Returned in MM/DD/YY HH:MM:SS format. 6 Closed Date Batch Settlement Closed Date and Time The date and time that the batch was closed meaning the date and time that the last transaction was added to the current open batch. Returned in MM/DD/YY HH:MM:SS format. This time can be configured in the Merchant Account. Page 144 2009 Skipjack Financial Services 7 Process Date Skipjack Integration Guide Batch Settlement Process Date and Time The date the batch was processed meaning the date and time when the current batch was submitted to the batch queue for processing. 8 Started Date Batch Settlement Started Date and Time Returned in MM/DD/YY HH:MM:SS format. Numeric and colon (‘:’) and back slash (‘/’) and space (‘ ‘) 17/20 11/22/06 11:07:02 Numeric and colon (‘:’) and back slash (‘/’) and space (‘ ‘) 17/20 11/22/06 11:07:02 Numeric and colon (‘:’) and back slash (‘/’) and space (‘ ‘) 17/20 11/22/06 11:07:02 Numeric 1/5 10000 Numeric with decimal 8/15 90.23000 The starting date and time for the batch specifically when the first transaction within the settlement batch was actually settled. 9 Completed Date Batch Settlement Completed Date and Time Returned in MM/DD/YY HH:MM:SS format. The completed date for the batch is the date and time when a batch processing is finished and a batch-completed response is received from the Processor. 10 Total Transactions Processed Number of Transaction Processed The total number of transactions that were processed in the batch. 11 Net Amount Processed Net Amount Processed The dollar amount of the net processed transactions. Page 145 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 1: Get Batch Settlement Status Method <!--Fixed Values--> <FORM NAME="samplegetbatchsettlementstatusmethod" ACTION="https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_BATCHSETTLEGETSTATUSRE QUEST" METHOD=POST> <INPUT NAME="szSerialNumber "VALUE="000123456789"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!--Batch Data--> <INPUT NAME=" szSkipjackBatchNumber"VALUE="999365548445"> <INPUT NAME=" szDateFrom" VALUE="04/06/2006"> <INPUT NAME=" szDateThru" VALUE="04/12/2006"> <INPUT NAME=" szShowDeletedClosed" VALUE="N"> Response Example 1 : Get Batch Settlement Status Method – Success "000123456789","0","3","","","","","","","","","" "000123456789","999365548445","000003803567","4","0","04/05/06 01:03:26","04/06/06 01:07:02","03/30/06 02:02:59","04/06/06 01:29:11","04/06/06 01:29:16","3","90.230000" "000123456789","999365548445","000003829979","4","0","04/06/06 01:07:02","04/06/06 15:35:19","04/07/06 02:02:59","04/07/06 02:03:02","04/07/06 02:03:02","0","0.000000" "000123456789","999365548445","000003832308","4","0","04/06/06 15:42:31","04/07/06 01:02:56","04/07/06 02:02:59","04/07/06 02:03:06","04/07/06 02:03:06","0","0.000000" Request Example 2: Get Batch Settlement Status Method <!--Fixed Values--> <FORM NAME="samplegetbatchsettlementstatusmethod" ACTION="https://developer.skipjackic.com/scripts/evolvcc.dll?SJAPI_BATCHSETTLEGETSTATUSRE QUEST" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialNumber" VALUE=""> <!--Batch Data--> <INPUT NAME=" szSkipjackBatchNumber" VALUE="999365548445"> <INPUT NAME=" szDateFrom" VALUE="04/06/2006"> <INPUT NAME=" szDateThru" VALUE="04/12/2006"> <INPUT NAME=" szShowDeletedClosed" VALUE=""> Response Example 2: Get Batch Settlement Status Method – Failure "000022127832","-2","","","","","","","","","","" Parameter Missing: (szDeveloperSerialNumber) Page 146 2009 Skipjack Financial Services Skipjack Integration Guide Batch File Methods for Transaction Processing Batch Uploads are used to process transactions in an off-line mode for all Core Transaction Methods (Authorize/AuthorizeAPI, Get Transaction Status, and Change Transaction Status methods) and all Recurring Payments methods. When Used Two types of Batch Uploads are supported: Authorization methods (batchType=0) and nonAuthorization (batchType=1) batch upload methods. The Authorization Batch Upload method is used when submitting multiple transactions for Authorization. Batches make more efficient use of network resources and are used most often for processing large volumes of transactions. The non-Authorization Batch Upload methods are used when performing uploads for the following batch transaction methods: • • • Change Status Method Get Status Method Recurring Payments Methods (Add, Delete, Edit, Change) Mechanisms Supported for Batch File Uploads The Skipjack Transaction Network has two mechanisms for uploading batches: 1. Merchant Services Interface Batch Uploads 2. HTTPS POST methods of Batch Uploads To learn more about Batch Upload using the Merchant Interface see the Skipjack Merchant Services Guide. This section will only describe in detail the HTTPS POST methods (non Merchant Services Interface) for performing Batch Uploads. How Batch Upload Files are Processed and Queued Batch files submitted to the Skipjack Transaction Network are held within a holding area on a Batch Transaction Server which is then “swept” on a predetermined interval (approximately every one to five minutes) and the Batch Upload files are then moved from the sweep area to another area where they are processed line-by-line. Page 147 2009 Skipjack Financial Services Skipjack Integration Guide Enabling Batch File Processing Privileges on a Merchant Account To submit transactions to the Skipjack Transaction Network as batch files, each Skipjack Financial Services Merchant Account must be granted batch processing privileges. If your Skipjack Merchant Account is not presently configured to allow the submission of batch files, contact Skipjack Financial Services. NOTE: Have your Skipjack Merchant Account information ready when contacting Skipjack Financial Services. You must provide your Login Serial Number, User Name, and HTML Serial Number in order to enable Batch Upload privileges on your Skipjack Merchant Account. Development and Usage Notes for Batch Uploading Methods • • Limit of 10,000 transactions per batch file. 90 day batch file retention. NOTE: By request your Skipjack Merchant Account can be modified by Skipjack Financial Services to accommodate larger batch file processing capabilities. Workflow for Processing Batch Upload Files Batch files should be processed in a prescribed order to avoid complications. Please follow the workflow below when uploading batch files to the Skipjack Transaction Network: 1. Build the batch file for uploading as described below. 2. Upload the batch file to the Skipjack batch transaction servers using the appropriate URL (for Development or Production) via the Batch Upload Method. 3. Check that the batch file was processed using the Check Batch File Status Method. 4. Retrieve the batch file that contains the transaction results using Get Batch File Response Method. 5. Interpret the batch file appropriately for your application’s requirements. This interpretation is handled by your application and is outside the scope of this document. If you have problems parsing the batch data in your application, contact Skipjack Financial Services Development Technical Support for guidance. Details for Submitting Transaction Requests for Batch Uploads Development Server https://developer.skipjackic.com/scripts/BatchUpload.dll?BatchUpload01 Production Server https://batch.skipjackic.com/scripts/BatchUpload.dll?BatchUpload01 Development Server Host Name developer.skipjackic.com Production Server Host Name batch.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST, ENCTYPE=”multipart/form-data” NOTE 1: Requests submitted without a secure connection will be refused. NOTE 2: Web submission via BatchUpload.dll requires batchType=0. (batchType=0 is default if not specified.) Page 148 2009 Skipjack Financial Services Skipjack Integration Guide Transaction Requests for Batch File Uploads Variable Description Required / Optional Variabl e Type Min / Max Length Example SerialNumberAUTH HTML Serial Number Required Numeric 12/12 00011122233 3 Required Numeric 1/1 1 Required File Not Applicabl e Skipjack-assigned unique HTML serial number. batchType Batch Type Defines the type of batch file submitted, where: 0 = Authorization 1 = Others (Change Status, Get Status, Recurring Payments methods) This is case sensitive. type=file name=BatchUploadDataAUT H Input for file type and file name. <input type="FILE" name="BatchUploadDataAUTH " /> Page 149 2009 Skipjack Financial Services Skipjack Integration Guide Formatting Requirements of Name-Value Pairs by Batch Method Type The name-value pairs sent within a batch file for each non-Authorization methods are illustrated below for two transactions. You will notice that these variables are the same variables and values used for real-time transaction methods. Please note that the return order of the return variables may be slightly different as compared to the associated real-time method. Also, note that each line, listed in the formatting examples below, represents an individual transaction record. Each record is formatted and denoted by a single Line Break/Carriage Return at the end of each record. For methods other than batch Authorize/AuthorizeAPI method you must include the szApiMethod=<value> name-value pair at the start of each line in the batch request file. Batch Method szApiMethod Authorize and AuthorizeAPI Not required, the batchType=0 carries this instruction Change Transaction Status Request Method SJAPI_TransactionChangeStatusRequest Get Transaction Status Method SJAPI_TransactionStatusRequest Add Recurring Payment Method SJAPI_RecurringPaymentAdd Edit Recurring Payment Method SJAPI_RecurringPaymentEdit Delete Recurring Payment Method SJAPI_RecurringPaymentDelete Batch File Status Request SJAPI_BatchFileStatusRequest Batch File Change Status request SJAPI_BatchFileChangeStatusRequest Batch File Get request File SJAPI_BatchFileGetRequestFile Batch File Get Response File SJAPI_BatchFileGetResponseFile Formatting Examples by Method Types Formatting for Batch Authorization Method Request The request variables used for Batch Authorization method are identical to those used for a real-time Authorization request. sjname=Person1&[email protected]&streetaddress=none&city=none&state=OH&zipco de=55555&accountnumber=4445999922225&month=12&year=03&transactionamount=150.01&shiptophon e=5555555555&ordernumber=testbatch1&orderstring=itemnum1~itemdesc1~150.01~1~N~|| sjname=Person2&[email protected]&streetaddress=none&city=none&state=OH&zipco de=85284&accountnumber=4445999922225&month=12&year=03&transactionamount=1.64&shiptophone= 5555555555&ordernumber=testbatch2&orderstring=itemnum2~itemdesc2~1.64~1~N~||&shoesize=8me ns Page 150 2009 Skipjack Financial Services Skipjack Integration Guide Formatting for Get Transaction Status Method Request For information about the variables used in a Batch Get Transaction Status Method, see the documented parameters in the “Transaction Variables for the Get Transaction Status Method” section. szApiMethod=SJAPI_TransactionStatusRequest&szDeveloperSerialNumber=123456789123&szOrderNu mber&szDate=01/01/2006 szApiMethod=SJAPI_TransactionStatusRequest&szDeveloperSerialNumber=987654321AAA&szOrderNu mber&szDate=12/25/2005 Formatting for Change Transaction Status Request For information about the variables used in a Batch Change Transaction Status Method, see the documented parameters in the “Transaction Requests for Change Transaction Status Method” section. szApiMethod=SJAPI_TransactionChangeStatusRequest&szDeveloperSerialNumber=123456789123&szO rderNumber&szTransactionId=123456789.DNE&szDesiredStatus=CREDIT&szAmount=1500&szForceSett lement=0 szApiMethod=SJAPI_TransactionChangeStatusRequest&szDeveloperSerialNumber=123456789123&szO rderNumber&szTransactionId=123456789.DNE&szDesiredStatus=DELETE&szAmount=&szForceSettleme nt=0 Formatting for Add Recurring Payments Request For information about the variables used in an Add Recurring Payment Method, see the documented parameters in “Transaction Requests for the Add Recurring Payments Method” section. szApiMethod=SJAPI_RECURRINGPAYMENTADD&ItemNumber=21&szDeveloperSerialNumber=100337117877& rtAddress1=2230ParkAve&rtAmount=1.01&rtState=OH&rtExpMonth=12&rtExpYear=2002&rtName=Test1 Name&[email protected]&rtPostalCode=45206&rtTotalTransactions=1&rtCity=Cin cinnati&rtExpMonth=12&rtOrderNumber=101&rtStartingDate=05/02/2002&rtPhone=8883688507&rtAc countNumber=4445999922225&rtItemNumber=item1&rtItemDescription=SJsuppo&rtComment=testcomm ent&rtFrequency=3 szApiMethod=SJAPI_RECURRINGPAYMENTADD&ItemNumber=22&szDeveloperSerialNumber=100337117877& rtAddress1=2230ParkAve&rtAmount=1.02&rtState=OH&rtExpMonth=12&rtExpYear=2002&rtName=Test2 Name&[email protected]&rtPostalCode=45206&rtTotalTransactions=1&rtCity=Cin cinnati&rtExpMonth=12&rtOrderNumber=101&rtStartingDate=05/02/2002&rtPhone=8883688507&rtAc countNumber=4445999922225&rtItemNumber=item2&rtItemDescription=SJsuppo&rtComment=testcomm ent2&rtFrequency=3 Page 151 2009 Skipjack Financial Services Skipjack Integration Guide Formatting for Edit Recurring Payments For information about the variables used in an Edit Recurring Payment Method, see the documented parameters in the “Submitting Requests for Edit Recurring Payments” section. szApiMethod=SJAPI_RecurringPaymentEdit&ItemNumber=22&shoesize=Mens9&szDeveloperSerialNumb er=100337117877&rtAddress1=2230ParkAve&rtAmount=1.02&rtState=OH&rtExpMonth=12&rtExpYear=2 002&rtName=Test2Name&[email protected]&rtPostalCode=45206&rtTotalTransacti ons=1&rtCity=Cincinnati&rtExpMonth=12&rtOrderNumber=101&rtStartingDate=05/02/2002&rtPhone =8883688507&rtAccountNumber=4445999922225&rtItemNumber=item2&rtItemDescription=SJsuppo&rt Comment=testcomment&rtFrequency=3 szApiMethod=SJAPI_RecurringPaymentEdit&ItemNumber=22&shoesize=Mens9&szDeveloperSerialNumb er=100337117877&rtAddress1=2230 ParkAve&rtAmount=1.02&rtState=OH&rtExpMonth=12&rtExpYear=2002&rtName=Test2Name&rtEmail=tr [email protected]&rtPostalCode=45206&rtTotalTransactions=1&rtCity=Cincinnati&rtExpMo nth=12&rtOrderNumber=101&rtStartingDate=05/02/2002&rtPhone=8883688507&rtAccountNumber=444 5999922225&rtItemNumber=item2&rtItemDescription=SJsuppo&rtComment=testcomment&rtFrequency =3 Formatting for Delete Recurring Payments For information about the variables used in a Delete Recurring Payments Method, see the documented parameters in the “Transaction Requests for the Add Recurring Payments Method” section. szApiMethod=SJAPI_RecurringPaymentDelete&szDeveloperSerialNumber=123456789123&szPaymentId =987654321000szPaymentDate=01/01/2006 szApiMethod=SJAPI_RecurringPaymentDelete&szDeveloperSerialNumber=123456789123&szPaymentId =852963741.DFE&szPaymentDate=0/01/2006 Transaction Responses for Batch Upload Methods Successfully uploaded Batch Upload file will display only a simple HTML message File Successfully Uploaded as illustrated below. NOTE: For failed Batch Uploads, a simple error message or a blank window is displayed. Page 152 2009 Skipjack Financial Services Skipjack Integration Guide Check Batch File Status Method (Batch File Status Request or Get Batch File Status) Description The Check Batch File Status is an HTTPS method that can be used to check the status of a batch file prior to performing other actions to the transaction is contains. When Used The Check Batch File Status method is typically used to retrieve the BatchId and status for batches that were previously uploaded. See Also • To see usage examples of the Check Batch File Status method, see the “Scenario 4: Batch Settlement Scenario” section. Details for Submitting Transaction Requests for Check Batch File Status Method Development Server https://developer.skipjackic.com/scripts/evolvCC.dll?SJAPI_BATCHFILESTATUSREQUEST Production Server https://www.skipjackic.com/scripts/evolvCC.dll?SJAPI_BATCHFILESTATUSREQUEST Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused. Transaction Requests for Check Batch File Status Method Variable Description Required / Optional Variable Type Min / Max Length Example szSerialNumber HTML Serial Number Required Numeric 12 / 12 000111222333 Required AlphaNumeric 12/12 123412341234 Skipjack-assigned unique HTML serial number. szDeveloperSerialNumbe r Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. Page 153 2009 Skipjack Financial Services szBatchId Skipjack Integration Guide Batch ID Optional Numeric 0/12 000004121122 Conditional Numeric and back slash (‘/’) 12/12 01/12/2009 Conditional Numeric and back slash (‘/’) 12/12 12/12/2009 Optional Numeric 0/1 1 The unique identification number assigned internally to the batch when it is uploaded. Batch uploading will be modified to return this value. szUploadDateFrom Upload Date Range Start The beginning of the date range for which the batches will be retrieved based on the upload date. Use MM/DD/YYYY format. NOTE: This variable will be ignored if szBatchId is supplied. SzUploadDateThru Upload Date Range End The ending of the date range for which the batches will be retrieved based on the upload date. Use MM/DD/YYYY format. NOTE 1: This value will be ignored if szBatchId is supplied. NOTE 2: If szUploadDateFrom is provided but SzUploadDateThru is left blank, the current date is assumed. szShowDeleted Show Deleted Batches szShowDeleted = 1 Deleted Batch files will be returned, as long as they match the criteria. szShowDeleted = 0 Deleted Batch files will not be returned. NOTE: Supplying only the required parameters will list all submitted batch files for the Merchant. Page 154 2009 Skipjack Financial Services Skipjack Integration Guide Transaction Response for Check Batch File Status Method Response records are returned as text strings in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. The records are formatted with the following values: 1. The Status Record (Header Record) is the first record returned and contains information about the subsequent records including: HTML Serial Number, Response Code, Number of Records and Reserved fields. If an error is encountered, the second record returned is a text message briefly describing that error. 2. The Response Record(s) is the second and subsequent record(s) returned containing the return variables and parameter values as listed below. Response Records (Data Records) for the Check Batch File Status Method Return Order Variable Description Value Min/Ma x Length Example 1 HTML Serial Number HTML Serial Number Numeric 12/12 000099146970 AlphaNumeric 12/12 100143215432 Numeric 12/12 154160148967 Numeric 1/1 1 Skipjack-assigned unique HTML serial number. 2 Developer Serial Number Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. 3 Batch ID Batch ID The unique identification (ID) number generated and assigned by the Skipjack Transaction Network to the batch when it is uploaded. Batch uploading will be modified to return this value. 4 File Type The type of file uploaded. 1 = Authorization 2 = API (All methods other than Authorization Batch requests.) Page 155 2009 Skipjack Financial Services 5 Uploaded Date Skipjack Integration Guide The date and time when the file was uploaded successfully. Returned in MM/DD/YYYY format. 6 Started Date The date and time when the file began processing. Returned in MM/DD/YYYY format. 7 Completed Date The date and time when the processing of the file completed. Returned in MM/DD/YYYY format. 8 Status The current status of the batch. Numeric and back slash (‘/’) and colon (‘:’) and space (‘ ‘) 19/19 01/12/2009 13:15:25 Numeric and back slash (‘/’) and colon (‘:’) and space (‘ ‘) 19/19 12/12/2009 12:12:05 Numeric and back slash (‘/’) and colon (‘:’) and space (‘ ‘) 19/19 12/12/2009 16:45:59 Numeric 1/1 4 1 = Uploaded 2 = Processing 3 = Complete 4 = Deleted 5 = Rejected 6 = Frozen 9 Status Message A text message describing the status of the batch. Alphanumeric 1/50 10 Total Failed The total number of transactions that failed validation, or had a server error. Numeric 1/5 301 Numeric 1/5 1001 Numeric 1/5 200 Total Requests minus Total Processed. 11 Total Processed The total number of requests successfully Processed. Total without validation or server errors. 12 Total Requests The total number of requests in the batch file. Page 156 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 1: Check Batch File Status Specifying Date Range <!--Fixed Values--> <FORM NAME="samplebatchauthorizationresponse" ACTION="https://developer.skipjackic.com/scripts/EvolvCC.dll?SJAPI_BatchUpload.dll?" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="123456789000"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!—Batch File Data--> <INPUT NAME="szUploadDateFrom" VALUE="04/06/06"> <INPUT NAME="szUploadDateThru" VALUE="04/07/06"> Response Example 1: Check Batch File Status "123456789000","0","4","","","","","","","","","" "123456789000","987654321000","154160148967","2","04/06/06 11:05:26","04/06/06 11:05:26","04/06/06 11:05:32","3","","0","105","105" "123456789000","987654321000","162776020442","1","04/07/06 13:11:00","04/07/06 13:12:52","04/07/06 13:28:28","3","","17","4983","5000" "123456789000","987654321000","823914005029","1","04/07/06 15:33:27","04/07/06 15:33:40","04/07/06 15:42:52","3","","37","2996","3033" "123456789000","987654321000","992433961192","1","04/07/06 13:12:11","04/07/06 13:14:02","04/07/06 13:36:30","3","","12","2436","2448" Page 157 2009 Skipjack Financial Services Skipjack Integration Guide Modify Batch File Status Method (Batch File Change Status Request) Description The Modify Batch File Status method is a method used to modify the status of a batch file to change it from its current state to a different (desired) state. When Used The Modify Batch File Status method is used to change the state of a previously uploaded batch file and when used is most commonly used to delete a batch file. Allowable states include: Freeze, Thaw, and Delete. Details for Submitting Transaction Requests for Modify Batch File Status Method Development Server https://developer.skipjackic.com/scripts/evolvCC.dll?SJAPI_BATCHFILECHANGESTATUSREQUEST Production Server https://www.skipjackic.com/scripts/evolvCC.dll?SJAPI_BATCHFILECHANGESTATUSREQUEST Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused. Transaction Requests for Modify Batch File Status Method Request Variables for Modify Batch File Status Method Variable Description Required / Optional Variable Type Min / Max Length Example szSerialNumber HTML Serial Number Required Numeric 12/12 000111222333 Required AlphaNumeric 12/12 123412341234 Skipjack-assigned unique HTML serial number. szDeveloperSerialNumber The Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. Page 158 2009 Skipjack Financial Services szBatchId Skipjack Integration Guide Batch ID Required Numeric 12/12 12341232322132 Required AlphaNumeric 4/6 FREEZE The unique identification (ID) number assigned internally to the batch when it is uploaded. Batch uploading will be modified to return this value. szDesiredStatus Desired Status The desired status for the transaction. FREEZE = Changes the batch into a Frozen state. THAW = Changes the match file back to the original status prior to being frozen. DELETE = Changes the batch File into a Deleted state. NOTE the same rules apply as outlined in “Batch File Processing in Merchant Services”. Status descriptions are also provided in this document. Transaction Response for Modify Batch File Status Method Response records are returned as text strings in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. The records are formatted with the following values: 1. The Status Record (Header record) is the only record returned for successful transactions for the Modify Batch File Status Method. This Status Record contains information about: HTML Serial Number, Response Code, Number of Records and Reserved fields. NOTE: Successful responses to for Modify Batch File Status Method will ONLY return this a single Status Record. 2. If an error is encountered for a Modify Batch File Status method request, the second record returned is a text message briefly describing that error. Page 159 2009 Skipjack Financial Services Skipjack Integration Guide Request Example 1: Modify Batch File Status <!--Fixed Values--> <FORM NAME="samplemodifybatchfilestatus" ACTION=" https://developer.skipjackic.com/scripts/BatchUpload.dll?SJAPI_BATCHFILESTATUSREQUEST" METHOD=POST> <INPUT NAME="szSerialNumber" VALUE="123456789000"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!—Batch File Data--> <INPUT NAME="szBatchId" VALUE="100200300400"> <INPUT NAME="szDesiredStatus" VALUE="FREEZE"> Response Example 1: Modify Batch File Status – Success "123456789000","0","1","","","","","","","","","" Request Example 2: Modify Batch File Status <!--Fixed Values--> <FORM NAME="samplemodifybatchfilestatus" ACTION=" https://developer.skipjackic.com/scripts/BatchUpload.dll? SJAPI_BATCHFILESTATUSREQUEST" METHOD=POST> <INPUT NAME="szSerialnumber" VALUE="000123456789"> <INPUT NAME="szDeveloperSerialNumber" VALUE="999888777666"> <!—Batch File Data--> <INPUT NAME="szBatchId" VALUE="100200300400"> <INPUT NAME="szDesiredStatus" VALUE="DELETE"> Response Example 2 Modify Batch File Status – Error "000123456789","-3","","","","","","","","","","" Failed setting batch file status. Page 160 2009 Skipjack Financial Services Skipjack Integration Guide Get Batch File Response Method Description The Get Batch File Response method is an HTTPS method used to retrieve the batch file response (results) for any previously uploaded batch file that has completed processing. Details for Submitting Transaction Requests for Get Batch File Response Method Development Server https://developer.skipjackic.com/scripts/evolvCC.dll?SJAPI_BATCHFILEGETRESPONSEFILE Production Server https://www.skipjackic.com/scripts/evolvCC.dll?SJAPI_BATCHFILEGETRESPONSEFILE Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant Method POST NOTE: Requests submitted without a secure connection will be refused. Request Variables for Get Batch File Response Method Variable Description Required / Optional Variable Type Min / Max Length Example szSerialNumber HTML Serial Number Required Numeric 12 / 12 000111222333 Required AlphaNumeric 12/12 123412341234 Required Numeric 12/12 3423523423432 Skipjack-assigned unique HTML serial number. szDeveloperSerialNumber The Developer Serial Number The Developer Serial Number assigned to the Skipjack Account. szBatchId Batch ID The unique identification (ID) number assigned internally to the batch when it is uploaded. Batch uploading will be modified to return this value. Page 161 2009 Skipjack Financial Services Skipjack Integration Guide Transaction Responses for Get Batch File Response – Batch Authorize Transactions Response records are returned as text strings in comma-delimited format with a carriage return/line feed (CR/LF) record delimiters. The records are formatted with the following values: 1. The Status Record (Header Record) is the first record returned and contains information about the subsequent records: HTML Serial Number, Response Code, Number of Records and Reserved fields. If an error is encountered, the second record returned is a text message briefly describing that error. 2. The Response Record(s) is (are) the second and subsequent record(s) returned containing the return variables and parameter values as listed below. Get Batch File Transaction Response for Batch Authorize Transactions Response Example 1: Get Batch File Response for Batch Authorization – No Errors NOTE: Response Variables labels returned as listed in red text and included here for clarity. "000111222333","0","3,"","","","","","","","","" "000067","000111222333","15001","","N","Card authorized, exact address match with 5 digit zip code.","100200300","1","","","1","10138083786558.009","" “Authcode”, “szSerialNumber”, “Transaction Amount”, ”Authorization Decline Message”, AVS Response Code”, “AVS Response Message”, “Order Number”, “Return Code”, CVV2 Response Code”, “CVV2 Response Message”, “IsApproved”, “Transaction File Name”, “CAVV Response Code” "000069,"000111222333","164","","N","Card authorized, exact address match with 5 digit zip code.","200300500","1","","","1","10138083786958.010"" "000078,"000111222333","175","","N","Card authorized, exact address match with 5 digit zip code.","2255889999","1","","","1","10138083090958.016"" Example 2: Batch Authorization Response String – Error "000092592328","-2","","","","","","","","","","" Parameter Missing: (szBatchId) Page 162 2009 Skipjack Financial Services Skipjack Integration Guide Echo Utility The Echo Utility permits any transaction request to be echoed back from the Skipjack Transaction Network server showing the name-value pairs without executing the transaction request. When Used This utility is used for debugging and troubleshooting purposes. Details for Submitting an Echo Utility Request Development Server https://developer.skipjackic.com/secure/echo.asp Production Server https://www.skipjackic.com/secure/echo.asp Development Server Host Name www.skipjack.com Production Server Host Name www.skipjack.com Server Port 443 HTTP Type 1.0 Compliant NOTE: Requests submitted without a secure connection will be refused. NOTE: Posting to the above URLs will not process (Authorize) transactions. No methods will be executed. Only an echo of the variables and name-value pairs submitted will be returned. Transaction Requests for the Echo Utility You can host this utility on your internal Web site by copying and pasting the following ASP code: <html> <head><title>Echo Variables</title></head> <body> <%@ "LANGUAGE" = VBScript %> <% If StrComp(Request("REQUEST_METHOD"),"POST",vbTextCompare) = 0 Then Set FormValues = Request.Form Else Set FormValues = Request.QueryString End If For Each item in FormValues Response.Write "<b>" & item & "</b>: " & FormValues(item) & "<br>" Next %> </body> </html> Page 163 2009 Skipjack Financial Services Skipjack Integration Guide Transaction Responses for the Echo Utility You must submit an Authorization transaction request to the URL above with the name-value pairs described in the “Authorize and AuthorizeAPI Methods” section. Response Example: Authorize using the Debugging Utility This utility will echo back the name-value pairs submitted as shown in the example below. serialnumber=000123456789&orderstring=112~Test~1.99~3~N~||&ordernumber=1147099539956&sjna me=JustinTime&[email protected]&streetaddress=123mainst&city=Bev Hills&state=CA&zipcode=90210&transactionamount=5.97&accountnumber=4003000123456781&month= 06&year=0006&shiptoname=Justin Time&shiptostreetaddress=123mainst&shiptocity=Bev Hills&shiptostate=CA&shiptozipcode=90210&shiptophone=1234567890&comment=Test comment&country=&shiptocountry=&approvalcode=&cvv2=123 Page 164 2009 Skipjack Financial Services Skipjack Integration Guide Debugging Utility The Debugging Utility allows the HTTPS POST of an Authorize transaction with receipt (echo) back from the Skipjack Transaction Network server of the name-value pairs and Authorizing the transaction. When Used The Debugging Utility is useful when you need to Authorize a transaction and receive an immediate echo of the request variables sent in an Authorization request for troubleshooting and debugging purposes. Details for Submitting a Debugging Utility Request Development Server https://developer.skipjackic.com/scripts/evolvcc.dll?AUTHORIZEDEBUG Production Server https://www.skipjackic.com/scripts/evolvcc.dll?AUTHORIZEDEBUG Development Server Host Name developer.skipjackic.com Production Server Host Name www.skipjackic.com Server Port 443 HTTP Type 1.0 Compliant NOTE: Requests submitted without a secure connection will be refused. Transaction Requests for Debugging Utility You must submit an Authorization transaction request to the URL above with the name-value pairs described in the “Authorize and AuthorizeAPI Methods” section. Transaction Responses for Debugging Utility Response Example: Authorize using the Debugging Utility This utility will echo back the name-value pairs submitted as shown in the example below. serialnumber=000111222333&ordernumber=910039948222&sjname=Transactive&shiptoname=Jack Rinley&streetaddress=4 Test Drive&city=Houston&state=TX&zipcode=30329 &country=USA&accountnumber=4003000123456781&month=08&year=2009&cvv2=123&phone=3452223345 &shiptophone=8889990000&fax=9988885959&transactionamount=3.11&orderstring=002~Processing Fee~0.11~1~N~||&comment=jrinley&email=jack <!--AUTHCODE=000058--><!--szSerialNumber=000111222333--><!--szTransactionAmount=311--> <!--szAuthorizationDeclinedMessage=--><!--szAVSResponseCode=Y--> <!--szAVSResponseMessage=Card authorized, exact address match with 5 digit zip code.--> <!--szOrderNumber=910039948222--><!--szAuthorizationResponseCode=000058--> <!--szIsApproved=1--><!--szCVV2ResponseCode=M--><!--szCVV2ResponseMessage=Match--> <!--szReturnCode=1--><!--szTransactionFileName=9802852159963.022--> <!--szCAVVResponseCode=--> Page 165 2009 Skipjack Financial Services Skipjack Integration Guide Authorization Logic and Appropriate Failsafe Mechanisms This section illustrates and describes the recommended logic and exception handling for transactions processed by the Skipjack Transaction Network. Please implement this logic in your application in order to avoid duplicate transactions from being created to ensure that Customers are not charged more than once for a single transaction. 1. An Authorization request is submitted to the Skipjack Transaction Network for Approval resulting in one of four status conditions: a. Transaction Validation Failure If a Transaction Validation Failure occurs for an Authorization request the transaction will not be processed further. Examine the returned szReturnCode (Error Code) to determine the reason for the Validation failure. For example determine if a credit card number was incorrectly entered. Once the likely cause of the Validation failure is determined resubmit the transaction for Authorization, assuming the Customer (or Merchant) has not already done so. Subsequent actions described for this example are used to determine whether or not Page 166 2009 Skipjack Financial Services Skipjack Integration Guide the Customer or Merchant has resubmitted the transaction resulting in duplicate orders being created. b. Transaction Timeout – Requires further action A transaction timeout during an Authorization request indicates a failure at the network level and/or a problem with network connectivity. This failure can be within any network node within the Internet, or within the internal networks of the Processor, Issuing Bank, or the Skipjack Transaction Network. As a failsafe and/or excepting handling mechanism, perform a Get Transaction Status using the OrderNumber on transactions which time-out to determine if the original transaction Authorization request has been Processed. This checking mechanism will prevent duplicate orders being generated in error. c. Transaction Decline For a Transaction Decline response, examine the returned transaction data to determine the likely reason for the Decline. This will dictate the appropriate steps to perform next. If the Decline is a result of AVS or CVV checking/filtering, then resubmitting the transaction data with appropriate changes in AVS or CVV settings can result in a successful Approval being obtained. If the Decline is a result of unavailable headroom (credit) on the credit card, submit a new transaction with a new (different) credit card that has the available credit. For Declined transactions, no further processing is required to determine if Duplicates transactions exist. d. Approved transactions require no further processing. These transactions can be subsequently processed using any other transaction methods, as appropriate to the situation. 2. Transaction Approval a. When a Transaction Timeout occurs, your application’s logic should invoke a routine for exception handling which includes performing a Get Transaction Status method (specifying the OrderNumber) on the original transaction request. b. If the Get Transaction Status method determines that the Transaction was Declined, no duplicate order should exist for that original transaction unless the Customer or Merchant has resubmitted the transaction. Resubmission of the transaction should only be done after the reason for the Decline is determined and is corrected. Page 167 2009 Skipjack Financial Services Skipjack Integration Guide c. If the Get Transaction Status returns a No Records Found message, then the original transaction did not Authorize and therefore will not impact Settlement. No further action is required. You can resubmit the transaction with appropriate changes in the transaction data, if appropriate or desired. d. If the Get Transaction Status continues to Time-Out or you receive a Socket Closed error message, continue to perform retries of the Get Transaction Status until a successful response is returned, or else abort the processing. If the transaction is aborted, you must later perform a Get Transaction Status method on the transaction specifying Order Number to determine the original transaction status and ensure that a duplicate transaction has not been inadvertently created. If a duplicate transaction exists, then it must be appropriately Deleted or Credited to ensure that the Customer is not billed more than once. 3. The appropriate next step for transactions reaching this stage depends upon how quickly after the timeout condition you process the Get Transaction Status method above. a. If the Get Transaction Status method is performed within a relatively short time after the original Authorization request was submitted, the transaction will very likely still be in the Approved state, since the Settlement Batch is unlikely to have been processed. In this case, if the Get Transaction Status method determines that the transaction was processed and is a duplicate, a Change Transaction Status – Delete can be performed to Delete the duplicate transaction. This can only be done on a transaction that has not yet Settled. If the transaction was Approved and there is no duplicate to Delete, then any appropriate subsequent transaction methods can be applied to the transaction. b. If the Get Transaction Status method performed in step 3a determines that the original transaction has already been Settled, and this is an inadvertent duplicate transaction, then the Change Transaction Status – Credit method should be used to credit the Customer’s card for the original amount of the transaction to eliminate the redundant charge on the Customer’s credit card. See Also For more information about the methods described in this logic diagram see the following transaction methods for more detail: • • • “Authorize and AuthorizeAPI Methods” “Get Transaction Status Method” “Change Transaction Status Method” Page 168 2009 Skipjack Financial Services Skipjack Integration Guide Scenarios This section contains scenarios to illustrate typical real-life transaction tasks associated with the methods described previously in this documentation. The scenarios in this section are based on request and response messaging on the Skipjack Transaction Network, shown below. Scenario 1: Split Authorization Scenario In this scenario an order has been placed by the Customer but it must be separated into three separate transactions (for example when goods must be back-ordered). The Customer's credit card is authorized when the order is taken for the total transaction amount of $30.00. However, using the Change Status: Authorize Additional method you will reauthorize the $30 as 3 transactions ($12.00, $10.00 and $8.00) and then void the initial authorization for $30. Finally you use Change Status: Settle on each transaction to submit the transactions for Settlement. NOTE 1: That the Skipjack Merchant Account is set to Manual Settlement. NOTE 2: Your Payment Processor may downgrade the transaction rate from a swiped to a nonswiped (keyed) transaction if the original transaction was swiped and you subsequently use the Authorize Additional method. This is because the swipe card data is not stored in the Skipjack Transaction Network and cannot be applied to AuthorizeAdditional transaction. Page 169 2009 Skipjack Financial Services Skipjack Integration Guide 1. Use the Authorize Method to Submit the Original Transaction When the order was received, the original transaction is submitted for Authorization with Ordernumber=000123. The Authorization is Successful and returns the szTransactionFileName variable that in all subsequent transactions this variable is called the TransactionId. Authorize Request Serial Number=000111222333, Sjname=John Doe, [email protected], City=Beverly Hills, State=CA, Zipcode=90210, Shiptophone=1011011001, Accountnumber=41111111111111, Month=09, Year=2009, Ordernumber=000123, Transactionamount=3000 Authorize Response AUTHCODE=654321, szSerialNumber=000111222333, szTransactionAmount=3000, szAuthorizationResponseCode=T12345, szReturnCode=1, szIsApproved=1, szAuthorizationDeclinedMessage=, szAVSResponseCode=N, szAVSResponseMessage=,No Match, szOrderNumber=000123, szCVV2ResponseCode=, szCVV2ResponseMessage=, szTransactionFileName=987654321.005, szCAVVResponseCode= 2. Get Transaction Status Method - Specifying Order Number Perform a Get Transaction Status method to determine the TransactionId and Status of the original Authorization for OrderNumber 000123 prior to shipping the order. This returns the Transaction ID which can be used in step 3, below. NOTE: The Transaction Status Code 12 denotes an Authorized Pending Settlement status. If performing a Get Status within 30 seconds of the original authorization, you may see a 14 status, denoting Pending Authorization status. Get Transaction Status Request 1 Serial Number=000111222333, szDeveloperSerialNumber=123456789000, szOrderNumber=000123, szDate= Get Transaction Status Response 1 HTML SerialNumber=000111222333, Transaction Amount=3000, Transaction Status Code=12, Transaction Status Message=, Order Number=000123, Transaction Date and Time=11/29/06 13:15:45, TransactionId=987654321.005, Approval Code=123456, Batch Number=999888777666 Page 170 2009 Skipjack Financial Services Skipjack Integration Guide 3. Change Transaction Status Method 1: Authorize Additional Specifying Transaction ID A Change Transaction Status:AUTHORIZEADDITIONAL specifying the Order Number is done for the first portion of the order. In this step we can use either the Order Number or Transaction ID. However, in all subsequent Change Transaction Status requests you specify the TransactionId of the original authorization. Change Transaction Status Request 1 szSerialNumber=000111222333, szOrderNumber=000123, szTransactionId=, szDesiredStatus=AUTHORIZEADDITIONAL, szAmount=1200, szForceSettlement=0 Change Transaction Status Response 1 SerialNumber=000111222333, szTransactionAmount=1200, Desired Status=AUTHORIZEADDITIONAL, Status Response=Successful, Status Response Message=, szOrderNumber=000123, TransactionId=222333444.007 4. Get Transaction Status Method Perform a Get Transaction Status method specifying the OrderNumber to obtain the Transaction ID for the original transaction (Authorization). Get Transaction Status Request 2 szSerial Number=000111222333, szDeveloperSerialNumber=123456789000, szOrderNumber=000123, szDate= Get Transaction Status Response 2 Serial Number=000111222333, Transaction Amount=3000, Transaction Status Code=80, Transaction Status Message=, Order Number=000123, Transaction Date and Time=11/29/06 13:15:45, szTransactionId=987654321.005, Approval Code=123456, Batch Number=999888777666 HTMLSerialNumber=000111222333, Transaction Amount=1200, Transaction Status Code=12, Transaction Status Message=, Order Number=000123, Transaction Date and Time=11/29/06 13:16:45, TransactionId=555666777.007, Approval Code=123456, Batch Number=999888777666 5. Change Transaction Status Method: Change Status 2 Perform a Change Transaction Status: Authorize Additional for the $10.00. NOTE: You can use the szNewOrderNumber in this request. Change Transaction Status Request 2 szSerialNumber=000111222333, szOrderNumber=, TransactionId=987654321.005, szDesiredStatus=AUTHORIZEADDITIONAL, szAmount=1000, szForceSettlement=0 Change Transaction Status Response 2 SerialNumber=000111222333, szTransactionAmount=1000, Desired Status=AUTHORIZEADDITIONAL, Status Response=Successful, Status Response Message=, szOrderNumber=000789, TransactionId=999888777.022 Page 171 2009 Skipjack Financial Services Skipjack Integration Guide 6. Get Transaction Status Method The final item for the Order Number 000123 is located and the final shipment is ready. Perform a Get Transaction Status method specifying the Transaction ID that is required for the Change Transaction Status:Authorize Additional. Get Transaction Status Request 3 szSerial Number=000111222333, szDeveloperSerialNumber=123456789000, szOrderNumber=000123, szDate= Get Transaction Status Response 3 Serial Number=000111222333, Transaction Amount=3000, Transaction Status Code=12, Transaction Status Message=, Order Number=000123, Transaction Date and Time=11/29/06 13:15:45, TransactionId=987654321.005, Approval Code=123456, Batch Number=999888777666 HTMLSerialNumber=000111222333, Transaction Amount=1200, Transaction Status Code=12, Transaction Status Message=, Order Number=000123, Transaction Date and Time=11/29/06 13:16:45, TransactionId=123456789.005, Approval Code=123456, Batch Number=999888777666 HTMLSerialNumber=000111222333, Transaction Amount=1000, Transaction Status Code=12, Transaction Status Message=, Order Number=000123, Transaction Date and Time=11/31/06 09:05:05, TransactionId=123456009.022, Approval Code=123456, Batch Number=999888777666 7. Change Transaction Status Method 3 The order is now ready for shipment. Perform a Change Transaction Status for the final amount (partial amount of $8.00). You must use the Transaction ID associated with the Transaction Status Code=80 from step 6, above, otherwise you will receive an error response. Change Transaction Status Request 3 szSerialNumber=000111222333,szOrderNumber=000123, TransactionId=987654321.005, szDesiredStatus=AUTHORIZEADDITIONAL, szAmount=800, szForceSettlement=0 Change Transaction Status Response 3 SerialNumber=000111222333, szTransactionAmount=800, Desired Status=AUTHORIZEADDITIONAL, Status Response=Successful, Status Response Message=, szOrderNumber=000123, TransactionId=12346007.014 8. Delete Original Authorization You should now Delete (Void) the original Authorization for the $30 to tidy up any unneeded transactions in the Skipjack Transaction Network. Change Transaction Status Request 4 szSerialNumber=000111222333,szOrderNumber=000123, TransactionId=987654321.005, szDesiredStatus=DELETE, szAmount=3000, szForceSettlement=0 Change Transaction Status Response 3 SerialNumber=000111222333, szTransactionAmount=800, Desired Status=DELETE, Status Response=Successful, Status Response Message=, szOrderNumber=000123, TransactionId=12346007.014 Page 172 2009 Skipjack Financial Services Skipjack Integration Guide 9. Settle Each Original Authorization Finally, use the Change Status: SETTLE method to settle each transaction amount. In this example we show the Change Status: Settle for one of the three transactions, for simplicity. Change Transaction Status Request 5 szSerialNumber=000111222333,szOrderNumber=000123, TransactionId=987654321.005, szDesiredStatus=SETTLE, szAmount=1200, szForceSettlement=0 Change Transaction Status Response 5 SerialNumber=000111222333, szTransactionAmount=1200, Desired Status=SETTLE, Status Response=Successful, Status Response Message=, szOrderNumber=000123, TransactionId=12346007.011 Page 173 2009 Skipjack Financial Services Skipjack Integration Guide Scenario 2: Refunds and Voids Scenario In this scenario a Customer is purchases goods to be delivered totaling $100.00. Shortly after the original order is placed and the transaction is Authorized, the Customer calls back asking for additional items for $50.00 above the original transaction amount. When the order arrives, the Customer inspects the order and finds a missing item and calls the Merchant for a Credit (Refund) for the undelivered item, valued at $30.00. 1. Use the Authorize Method to Submit the Original Transaction The original transaction request is submitted for an Authorization for Ordernumber=000123 for $100.00 and is promised for shipment in five days. The Authorization is Successful and returns the szTransactionFileName variable. Note that in all subsequent transactions this variable is called the TransactionID. Authorize Request Serial Number=000111222333, Sjname=Jane Doe, [email protected], City=Toronto, State=ON, Zipcode=123456, Shiptophone=9022223333, Accountnumber=5222333444666, Month=06, Year=2010, Ordernumber=000123, Transactionamount=100.00 Authorize Response AUTHCODE=12345D, szSerialNumber=000111222333, szTransactionAmount=100.00, szAuthorizationResponseCode=T12345, szReturnCode=1, szIsApproved=1, szAuthorizationDeclinedMessage=, szAVSResponseCode=, szAVSResponseMessage=, szOrderNumber=000123, szCVV2ResponseCode=, szCVV2ResponseMessage=, szTransactionFileName=987654321.005, szCAVVResponseCode= 2. Authorize Additional Amount - Get Transaction Status to Determine Order Details A few days later the Customer calls the Merchant, before the order is shipped, stating that they want another item included in their original order. Perform a Get Transaction Status specifying Order Number to display the transaction details, shown below . Get Transaction Status Request 1 Serial Number=000111222333, szDeveloperSerialNumber=222333444555, szOrderNumber=000123, szDate= Get Transaction Status Response 1 SerialNumber=100200300400, Transaction Amount=150.00, Transaction Status Code=30 Transaction Status Message=, Order Number=000123, Transaction Date=01/15/06 12:00:00, TransactionId=987654321.005, Approval Code=123456, Batch Number=900000000 3. Authorize Additional Amount for the Additional Items Note that the original transaction has already Settled, as indicated by the Transaction Status Code of 30 in step 2. A new Order Number (optional variable) is specified as part of the Change Status:Authorize Additional request to help identify the new order details. Change Transaction Status - AUTHORIZE ADDITIONAL szSerialNumber=000111222333, szOrderNumber=000123, szNewOrderNumber=000456, szTransactionId=987654321.005, szDesiredStatus=AUTHORIZEADDITIONAL, szAmount=50.00, szForceSettlement=0 Change Transaction Status - AUTHORIZE ADDITIONAL SerialNumber=000111222333, szTransactionAmount=5000, Desired Status=SPLITSETTLE, Status Response=Successful, Status Response Message=, szOrderNumber=000456, TransactionId=123456790.007 Page 174 2009 Skipjack Financial Services Skipjack Integration Guide 4. Credit (Refund) Requested - Get Transaction Status to Determine Order Details After the order is delivered to the Customer, the Merchant receives a call that one of the products in the order is missing. Perform a Get Transaction Status specifying the Order Number to display the transaction details of the newly updated order, Order Number 000456. Get Transaction Status Request 2 Serial Number=000111222333, szDeveloperSerialNumber=222333444555, szOrderNumber=000456, szDate= Get Transaction Status Response 2 SerialNumber=100200300400, Transaction Amount=150.00, Transaction Status Code=30 Transaction Status Message=, Order Number=000456, Transaction Date=01/17/06 18:10:15, TransactionId=6665554441.014, Approval Code=123456, Batch Number=900000825 5. Change Transaction Status Method - Credit value of Undelivered Goods Use the Change Transaction Status: CREDIT to refund to the cardholder the value of the missing item. Note that in order to perform a CREDIT, the Status of the transaction must be Settled (Transaction Status Code=30 denotes Settled, Idle in the Get Transaction Status from Step 4). Change Transaction Status Request - CREDIT szSerialNumber=000111222333, szOrderNumber=000456, szNewOrderNumber=000789, szTransactionId=987654321.005, szDesiredStatus=CREDIT, szAmount=3000, szForceSettlement=0 Change Transaction Status Response - CREDIT SerialNumber=000111222333, szTransactionAmount=3000, Desired Status=CREDIT, Status Response=Successful, Status Response Message=, szOrderNumber=000789, TransactionId=987654321.015 Page 175 2009 Skipjack Financial Services Skipjack Integration Guide Scenario 3: Recurring Payments Scenario In this scenario an original transaction is Authorized for $39.95 for a service. Later the Customer decides to change to a scheduled payment (Recurring Payment) with a monthly recurring charge for the original amount for a one year subscription to the service. Two months (2 Recurring Payments) into this payment schedule the Customer decides to upgrade the service to a more expensive version of the service. This requires a change of the Recurring Payments amount to $59.95 for the remaining (scheduled) Recurring Payments. Finally, the Customer decides to cancel the subscription and there are two payments outstanding, requiring a Deletion of the final 2 payments. 1. Use the Authorize Method to Submit the Original Transaction The (original) transaction is submitted for Authorization with Ordernumber=000123. The Authorization is Successful and returns the szTransactionFileName variable which in all subsequent transactions this variable is called the TransactionID. Authorize Request Serial Number=100200300400, Sjname=John Doe, [email protected], City=Toledo, State=OH, Zipcode=12345, Shiptophone=1011011001, Accountnumber=41111111111111, Month=09, Year=2009, Ordernumber=000123, Transactionamount=39.95 Authorize Response AUTHCODE=987654, szSerialNumber=100200300400, szTransactionAmount=39.95, szAuthorizationResponseCode=T12345, szReturnCode=1, szIsApproved=1, szAuthorizationDeclinedMessage=, szAVSResponseCode=, szAVSResponseMessage=, szOrderNumber=000123, szCVV2ResponseCode=, szCVV2ResponseMessage=, szTransactionFileName=987654321.005, szCAVVResponseCode= 2. Add Recurring Payment Method The following month the Customer calls and requests scheduled payments be established for a full year's worth of Basic Service. This requires the use of Add Recurring Payment method (monthly) for the transaction amount previously Authorized. Add Recurring Payment Request szSerialNumber=100200300400, szDeveloperSerialNumber=123456789000, rtOrdernNumber=999123, rtName=John Doe, rtCity=Toledo rtState=OH, rtPostalCode=123456, rtAccountNumber=4000100020003000, rtExpMonth=08, rtExpYear=2009, rtItemNumber=5005, rtAmount=39.95, rtStartingDate=02/15/2006, rtFrequency=3, rtTotalTransactions=11 Add Recurring Payment Response SerialNumber=100200300400, Response Code=0,Number of Records=1,Recurring Payment ID=R01234567890.005 Page 176 2009 Skipjack Financial Services Skipjack Integration Guide 3. Get Recurring Payment Method Two months later, because the Customer has requested an upgrade to a more expensive service, the Recurring Payment amount must be changed to 59.95 for all subsequent scheduled payments. This requires 2 steps (Steps 4 and 5 below. First perform a Get Recurring Payment method to display the transaction details for the Recurring Payment. Get Recurring Payment Information Request szSerial Number=000111222333, szDeveloperSerialNumber=123456789000, szPaymentId=R01234567890.000, szTransactionDate= Get Recurring Payment Information Response Serial Number=000111222333, Developer Serial Number=123456789000, Recurring Payment ID=R01234567890.005, Customer Name=John Doe, Recurring Amount=39.9500, Payment Frequency=3, Transaction Date=01/01/2006 13:15:45, First Payment=02/15/2006, Total Transactions=11, Remaining Transactions=9, Customer Email [email protected], Customer Address1=, Customer Address2=, Customer Address 3=, Customer Address4=, Customer Billing City=, Customer Billing State=, Customer Postal Code=, Customer Country=, Customer Phone=, Customer Fax Number=, Customer Credit Card Number=03000, Customer Billing Expiration Month=, Customer Billing Year=, Item Number=Basic Service, Comment=, Order Number=000123 4. Edit Recurring Payment Method Using the Recurring Payment ID and the Payment Date obtained in step 4, above, you can now change the Recurring Payment Amount for the remaining (8) payments for the Premium Service amount of $59.95. Edit Recurring Payment Request szSerialNumber=000111222333, szDeveloperSerialNumber=12345689000, szPaymentId=R01234567890.005, szTransactionDate=, rtName=John Doe, [email protected], rtAddress1=, rtAddress2=, rtAddress3=, rtAddress4=, rtCity=Toledo, rtState=OH,rtPostalCode=12345, rtCountry=, rtPhone=8881112222, rtFax=, rtAccountNumber=, rtExpMonth=09, rtExpYear=2009, rtItemNumber=12345, rtItemDescription=Premium Service, rtComment=, rtOrderNumber=999456, rtAmount=59.95 Edit Recurring Payment Response SerialNumber=000111222333, Response Code=0 5. Get Recurring Payment Method Several months later the Customer requests that the service be cancelled. Therefore, you must Delete the Recurring Payments that are remaining to avoid charging the Customer's card. First, you must perform a Get Recurring Payment method to retrieve the details of the Order Number 000123. Get Recurring Payment Information Request 2 szSerial Number=000111222333, szDeveloperSerialNumber=123456789000, szPaymentId=, szTransactionDate= Get Recurring Payment Information Response 2 Serial Number=000111222333, Developer Serial Number=123456789000, Recurring Payment ID=R01234567890.005, Customer Name=John Doe, Recurring Amount=59.9500, Payment Frequency=3, Transaction Date=01/15/06 13:15:45, First Payment=02/15/2006, Total Transactions=11, Remaining Transactions=2, Customer E-mail [email protected], Customer Address1=, Customer Address2=, Customer Address 3=,Customer Address4=, Customer Billing City=, Customer Billing State=, Customer Postal Code=, Customer Country=, Customer Phone=, Customer Fax Number=, Customer Credit Card Number=03000, Customer Billing Expiration Month=, Customer Billing Year=, Item Number=Premium Service, Comment=, Order Number=000456 Page 177 2009 Skipjack Financial Services Skipjack Integration Guide 6. Delete Recurring Payment Method You can then specify either the szPaymentID or the szTransactionID in your Delete Recurring Payments request depending upon the desired deletion results. Specifying only the szPaymentID will delete all remaining scheduled Recurring Payments, which is desired here. Delete Recurring Payment Request szSerial Number=000111222333, szDeveloperSerialNumber=123456789000, szPaymentId=R01234567890.005, szTransactionDate= Delete Recurring Payment Response Serial Number=000111222333, Response Code=0 Page 178 2009 Skipjack Financial Services Skipjack Integration Guide Scenario 4: Batch Settlement Scenario In this scenario a Merchant has a Skipjack Merchant Account configured for Manual Settlement. The steps below illustrate the steps required to obtain a Batch Number for the current open Batch and subsequently close the open Settlement Batch. 1. Use the Get Batch Settlement Status to Obtain a Batch Number Use the Get Batch Settlement Status specifying the Dates only (szDateFrom and szDateThru) to obtain the Batch Number for a Merchant Account. Note that the Header Record is included in this example. Get Batch Settlement Status szSerialNumber=000111222333, szDeveloperSerialNumber=222333444555, szSkipjackBatchNumber=, szDateFrom=02/18/2006, szDateThru=02/18/2006, szShowDeletedClosed=N Get Batch Settlement Status "000111222333","0","1" (Status Record) SerialNumber=000111222333, Batch Number=100250125, Batch Status=2, Status=0, Opened Date=01/01/1970 00:00:00, Closed Date=01/01/1970 00:00:00, Processed Date=01/01/1970 00:00:00, Completed Date=01/01/1970 00:00:00, Total Transactions Processed=0, Net Amount Processed=0.000000 2. Use the Close Current Batch Method to Close a Manual Settlement Batch Use the Close Current Batch method to mark transactions to close. The Status Code=0 indicates the Success of the Batch Settlement. Close Current Open Batch Serial Number=000111222333, szDeveloperSerialNumber=222333444555 Close Current Open Batch SerialNumber=000111222333, Status Code=0 (Status Record) 3. Use the Get Batch Settlement Status to Determine the Settlement Status of the Batch Again, use this method to determine the Batch Settlement information for a specified date. Note the Header Record (Status Record) is included in the Get Batch Settlement Status in this example. Get Batch Settlement Status szSerialNumber=000111222333, szDeveloperSerialNumber=222333444555, szSkipjackBatchNumber=100250125, szDateFrom=02/18/2006, szDateThru=02/18/2006, szShowDeletedClosed=Y Get Batch Settlement Status "000111222333","0","1" (Status Record) SerialNumber=000111222333, Batch Number=100250125, Batch Status=2, Status=0, Opened Date=01/17/2006 12:00:00, Closed Date=01/18/2006 11:00:59, Processed Date=01/18/06 12:03:06, Completed Date=01/18/2006 12:03:48, Total Transactions Processed=102, Net Amount Processed=11002.180000 Page 179 2009 Skipjack Financial Services Skipjack Integration Guide Scenario 5: Batch File Upload Scenario In this scenario you are required to perform a Batch Upload of an Authorization File for offline processing. You must be sure to follow all the steps illustrated below to successfully upload, process, and download the processed Batch File. 1. Assemble and Format the Batch Upload File A Batch Authorization Upload is submitted to the Skipjack Transaction Network. Authorize Request sjname=Person1&[email protected]&streetaddress=none&city=none&state=OH&zipcode=55555&acco untnumber=4445999922225&month=12&year=03&transactionamount=150.01&shiptophone=5555555555&ordernumb er=testbatch1&orderstring=itemnum1~itemdesc1~1~150.01~N~|| sjname=Person2&[email protected]&streetaddress=none&city=none&state=OH&zipcode=85284&acco untnumber=4445999922225&month=12&year=03&transactionamount=1.64&shiptophone=5555555555&ordernumber =testbatch2&orderstring=itemnum2~itemdesc2~1~1.64~N~||&shoesize=8mens sjname=Person3&[email protected]&streetaddress=8320&city=none&state=OH&zipcode=85284&acco untnumber=4445999922225&month=12&year=03&transactionamount=1.75&shiptophone=5555555555&ordernumber =testbatch3&orderstring=itemnum2~itemdesc2~1~1.75~N~||&favoritecolor=blue 2. Upload the Batch Upload File Upload the Batch File to the correct URL. A simple response is returned for a successful upload and illustrated below. 3. Confirm Batch Upload File was Uploaded Successfully using Check Batch File method. Perform a Check Batch File Response specifying the szUploadDateFrom and szUploadDateThru dates to obtain the Batch ID required for Step 4, below. Check Batch File Method szSerialNumber=000111222333, szOrderNumber=000123, szBatchId=, szUploadDateFrom=06/12/2006, szUploadDateThru=06/12/2006, szShowDeleted=1 Check Batch File Response SerialNumber=000111222333, Developer Serial Number=987654321000, Batch ID=123456789012, File Type=1, Uploaded Date=06/12/2006 12:15:45, Started Date=06/12/2006 12:18:01, Completed Date=06/12/2006 12:21:01, Status, Status Message=, Total Failed=0, Total Processed=3, Total Requests=3 Page 180 2009 Skipjack Financial Services Skipjack Integration Guide 4. Download the Batch Upload File Response using Get Batch File Response method Perform a Get Batch File Response specifying the Batch ID obtained in step 3 to determine the status of the Batch File. Get Batch File Response Method szSerialNumber=000111222333, szOrderNumber=000123, szBatchId=123456789012 Get Batch File Response Method "000111222333","0","3,"","","","","","","","","" "000067", "000111222333", "15001", "", "N", "Card authorized, exact address match with 5 digit zip code.", "1", "1", "", "", "1", "10138083786558.009","", "Authcode", "szSerialNumber", "000069, "000111222333", "164", "", "N", "Card authorized, exact address match with 5 digit zip code.", "1", "1", "", "", "1", "10138083786958.010"" "000078,"000111222333","175","","N","Card authorized, exact address match with 5 digit zip code.", "1", "1", "", "", "1", "10138083090958.016"" 5. Parse/Process the File according to your needs. Once the Batch Files has been downloaded, you can process/parse the results as appropriate to your application's needs. Page 181 2009 Skipjack Financial Services Skipjack Integration Guide Re-Authorization Scenarios The scenarios in this section illustrate the options available to handle when a Merchant wants to change the transaction amount of a previously authorized transaction after the original transaction has been Approved. There are 3 methods that may be applied to address this circumstance. Each scenario described in this section provides a context and the advantages and disadvantages associated with using approach. Usage Notes Regarding the Following Scenarios: • It is a good practice to inform the Customer of the requirement to change the transaction amount and state a reason for doing so. You should also notify the Customer of the new amount when that amount is determined, for example by sending an e-mail notification of the adjusted transaction amount when it is determined. Doing this will minimize the likelihood of a chargeback by customers who might dispute or not recognize a different transaction amount on their card statement. • To Settle an amount above the original amount the Skipjack Account configuration setting Allow settlement above original amount option must be enabled on your Skipjack Account. Contact Skipjack Financial Services Support to enable this setting on your Skipjack Account, if this function is required. • Depending on the method chosen there may be an impact (a higher fee and additional charges levied) by your Bank for settling an amount different than the original transaction amount. You should contact your bank prior to using these options to ensure you receive the most favorable rate and lowest fees. • See the section “Change Transaction Status Method” for more details about proper usage of the Change Status methods options described in this section. • For these scenarios to apply, it is assumed the Skipjack Merchant Account Settlement configuration option is set to Manual/None. Page 182 2009 Skipjack Financial Services Skipjack Integration Guide Scenario 6A – Authorize Original Amount, Settle Different Amount In this scenario, the Merchant will Authorize one amount and use the ChangeStatus:SETTLE method to Settle for a different amount. Advantages • Simplest approach, this method should be used whenever possible. However, please check with the Acquiring Bank to see what, if any, limitations exist regarding its usage. Disadvantages • If the difference between the two amounts submitted exceeds a threshold value (typically 15%) then the Bank may downgrade the rate applied to the transaction. Merchants are encouraged to speak with their Bank and determine the costs associated with (if any) using this approach. • A higher risk of chargeback requests by Customers if the Customer disputes the higher Settled amount if they do not recognize this charge on their bill. In this scenario, an authorization is obtained for a transaction amount of $30.00 but the Merchant wishes to Settle for a higher amount, $45.00, to cover shipping costs determined on the final weight of the product immediately before shipping. 1. Use the Authorize Method to Submit the Original Transaction The original transaction is submitted for Authorization with Ordernumber=000123. The Authorization is Successful and returns the szTransactionFileName variable that in all subsequent transactions this variable is called the TransactionID. Authorize Request Serial Number=000111222333, Sjname=John Doe, [email protected], City=BeverlyHills, State=CA, Zipcode=90210, Shiptophone=1011011001, Accountnumber=41111111111111, Month=09, Year=2009, Ordernumber=000123, Transactionamount=3000, Authorize Response AUTHCODE=654321, szSerialNumber=000111222333, szTransactionAmount=3000, szAuthorizationResponseCode=T12345, szReturnCode=1, szIsApproved=1, szAuthorizationDeclinedMessage=, szAVSResponseCode=, szAVSResponseMessage=, szOrderNumber=000123, szCVV2ResponseCode=, szCVV2ResponseMessage=, szTransactionFileName=987654321.005, szCAVVResponseCode= Page 183 2009 Skipjack Financial Services Skipjack Integration Guide 2. Get Transaction Status Method - Specifying Order Number Later, just prior to shipping, the additional charge is determined and warehouse personnel perform a Get Transaction Status method to determine the TransactionID and Status of the original Authorization for OrderNumber 000123 prior to shipping the order. This returns the Transaction ID which can be used in step 3, below. Get Transaction Status Request 1 Serial Number=000111222333, szDeveloperSerialNumber=123456789000, szOrderNumber=000123, szDate= Get Transaction Status Response 1 HTML SerialNumber=000111222333, Transaction Amount=3000, Transaction Status Code=12, Transaction Status Message=, Order Number=000123, Transaction Date and Time=11/29/06 13:15:45, TransactionId=987654321.005, Approval Code=123456, Batch Number=999888777666 3. Change Transaction Status Method:SETTLE specifying new (different) szAmount A Change Transaction Status:SETTLE is performed specifying the Order Number. The Settled amount is for the full amount of the original transaction ($30.00) plus the new Shipping Charges ($15.00) for a total amount of $45.00. In this step we can use either the Order Number or Transaction ID. Change Transaction Status Request 1 szSerialNumber=000111222333, szOrderNumber=000123, szTransactionId=, szDesiredStatus=SETTLE, szAmount=4500, szForceSettlement=0 Change Transaction Status Response 1 SerialNumber=000111222333, szTransactionAmount=4500, Desired Status=SETTLE, Status Response=Successful, Status Response Message=, szOrderNumber=000123, TransactionId=987654321.005 NOTE: To Settle an amount above the original amount the Skipjack Account configuration setting Allow settlement above original amount option must be enabled on your Skipjack Account. Contact Skipjack Financial Services Support to enable this setting on your Skipjack Account, if this function is required. Page 184 2009 Skipjack Financial Services Skipjack Integration Guide Scenario 6B – Authorize Original Amount, Change Status Authorize Additional In this scenario, the Merchant will Authorize an original transaction ($30.00) and subsequently use the ChangeStatus:AUTHORIZEADDITIONAL to authorize an additional amount for the shipping charges ($15.00). Advantages This method creates a second transaction without affecting the first transaction, so in the event of a Decline on the AUTHORIZEADDITIONAL transaction, the original amount still can be Settled. NOTE: Ensure that your Customer is aware of the two charges and that they are identified on the Customer statement to reduce the risk of chargebacks. Disadvantages • The amount specified (szTransactionAmount) in the AUTHORIZEADDITIONAL will affect the headroom on the credit card in the event of a Decline (or multiple Declines). This may mean that you will be unable to obtain an Approval for the transaction until the credit limit on the card has been reset. This may take 5 business days or longer, depending on the Issuing Bank. In this scenario, an authorization is obtained for a transaction amount of $30.00, however the Merchant wishes to use the ChangeStatus:AUTHORIZEADDITIONAL for an amount of $15.00 (to make up the total amount, $45.00) to cover final shipping costs determined by the final weight of the product. Finally, both transactions (original Authorization and AUTHORIZEADDITIONAL transactions) are Settled manually and the Settlement Batch closed and submitted for processing. 1. Use the Authorize Method to Submit the Original Transaction The original transaction is submitted for Authorization with Ordernumber=000123. The Authorization is Successful and returns the szTransactionFileName variable that in all subsequent transactions this variable is called the TransactionID. Authorize Request Serial Number=000111222333, Sjname=John Doe, [email protected], City=BeverlyHills, State=CA, Zipcode=90210, Shiptophone=1011011001, Accountnumber=41111111111111, Month=09, Year=2009, Ordernumber=000123, Transactionamount=3000, Authorize Response AUTHCODE=654321, szSerialNumber=000111222333, szTransactionAmount=3000, szAuthorizationResponseCode=T12345, szReturnCode=1, szIsApproved=1, szAuthorizationDeclinedMessage=, szAVSResponseCode=, szAVSResponseMessage=, szOrderNumber=000123, szCVV2ResponseCode=, szCVV2ResponseMessage=, szTransactionFileName=987654321.005, szCAVVResponseCode= Page 185 2009 Skipjack Financial Services Skipjack Integration Guide 2. Get Transaction Status Method - Specifying Order Number Later, just prior to shipping, the additional charge is determined and warehouse personnel perform a Get Transaction Status method to determine the TransactionID and Status of the original Authorization for OrderNumber 000123 prior to shipping the order. This returns the Transaction ID which can be used in step 3, below. Get Transaction Status Request 1 Serial Number=000111222333, szDeveloperSerialNumber=123456789000, szOrderNumber=000123, szDate= Get Transaction Status Response 1 HTML SerialNumber=000111222333, Transaction Amount=3000, Transaction Status Code=12, Transaction Status Message=, Order Number=000123, Transaction Date and Time=11/29/06 13:15:45, TransactionId=987654321.005, Approval Code=123456, Batch Number=999888777666 3. Change Transaction Status Method:AUTHORIZEADDITIONAL specifying new (different) szAmount A Change Transaction Status:AUTHORIZEADDITIONAL is performed specifying the a New Order Number. The amount submitted is new Shipping Charges ($15.00) only. In this step we send both New Order Number and Transaction ID. Change Transaction Status Request 1 szSerialNumber=000111222333, szNewOrderNumber=000124, szTransactionId=987654321.005 szDesiredStatus=AUTHORIZEADDITIONAL, szAmount=1500, szForceSettlement=0 Change Transaction Status Response 1 SerialNumber=000111222333, szTransactionAmount=1500, Desired Status=SETTLE, Status Response=Successful, Status Response Message=, szOrderNumber=000124, TransactionId=987654322.001 4. Get Transaction Status Method - Specifying Order Number Preform a Get Transaction Status method to determine the final status of the OrderNumber 000124 prior to shipping the order to confirm that the transaction has been approved. Get Transaction Status Request 1 Serial Number=000111222333, szDeveloperSerialNumber=123456789000, szOrderNumber=000124, szDate= Get Transaction Status Response 1 HTML SerialNumber=000111222333, Transaction Amount=1500, Transaction Status Code=14, Transaction Status Message=, Order Number=000124, Transaction Date and Time=11/29/06 15:05:12, TransactionId=987654321.009, Approval Code=654321, Batch Number=999888777666 Page 186 2009 Skipjack Financial Services Skipjack Integration Guide 5. Change Transaction Status Method:SETTLE original transaction szAmount ($30.00) Use the Change Transaction Status:SETTLE specifying the transaction number for the original transaction to settle the original transaction. Change Transaction Status Request 2 szSerialNumber=000111222333, szOrderNumber=000123, szTransactionId=987654321.005 szDesiredStatus=SETTLE, szAmount=3000, szForceSettlement=0 Change Transaction Status Response 2 SerialNumber=000111222333, szTransactionAmount=3000, Desired Status=SETTLE, Status Response=Successful, Status Response Message=, szOrderNumber=000123, TransactionId=987654321.005 6. Change Transaction Status Method:SETTLE for the additional amount (AUTHORIZEADDITIONAL) transaction ($15.00) Use the Change Transaction Status:SETTLE specifying the transaction number from the AUTHORIZEADDITIONAL transaction to Settle the original transaction. Set the szForceSettlement to 1 on this transaction to close the Settlement batch and submit the Batch for Settlement. Change Transaction Status Request 2 szSerialNumber=000111222333, szOrderNumber=000124, szTransactionId=987654322.001 szDesiredStatus=SETTLE, szAmount=1500, szForceSettlement=1 Change Transaction Status Response 2 SerialNumber=000111222333, szTransactionAmount=1500, Desired Status=SETTLE, Status Response=Successful, Status Response Message=, szOrderNumber=000124, TransactionId=987654322.001 Page 187 2009 Skipjack Financial Services Skipjack Integration Guide Scenario 6C – Authorize Original Amount, Change Status: Authorize In this scenario, the Merchant will Authorize an original transaction and subsequently use the ChangeStatus: AUTHORIZE to replace the original transaction. Using this approach you must specify the original amount plus the additional costs of the shipping charges for the transaction amount (szTransactionAmount). This method creates a new transaction that replaces the original transaction that was Authorized previously. Advantages • • • The transaction amount can be higher or less than the original amount. Only a single transaction will exist and need to be Settled. Authorized transaction amount and Settled amounts match, reducing the risk of chargebacks. Disadvantages • The amount submitted for the transaction is deducted from the available credit (headroom) on the credit card for Declines. Therefore, especially for large transaction amounts, this may mean that you will be unable to obtain an Approval for the transaction until the credit limit on the card has been reset. This may take 5 business days or longer, depending on the Issuing Bank. In this scenario, an authorization is obtained for an original transaction amount of $30.00. Once shipping charges of $15.00 are determined, however, the Merchant wishes to use the ChangeStatus:AUTHORIZE method to reauthorize the transaction for the total amount of $45.00 to cover the original transaction amount plus the final shipping costs. 1. Use the Authorize Method to Submit the Original Transaction The original transaction is submitted for Authorization with Ordernumber=000123. The Authorization is Successful and returns the szTransactionFileName variable that in all subsequent transactions this variable is called the TransactionID. Authorize Request Serial Number=000111222333, Sjname=John Doe, [email protected], City=BeverlyHills, State=CA, Zipcode=90210, Shiptophone=1011011001, Accountnumber=41111111111111, Month=09, Year=2009, Ordernumber=000123, Transactionamount=3000, Authorize Response AUTHCODE=654321, szSerialNumber=000111222333, szTransactionAmount=3000, szAuthorizationResponseCode=T12345, szReturnCode=1, szIsApproved=1, szAuthorizationDeclinedMessage=, szAVSResponseCode=, szAVSResponseMessage=, szOrderNumber=000123, szCVV2ResponseCode=, szCVV2ResponseMessage=, szTransactionFileName=987654321.005, szCAVVResponseCode= Page 188 2009 Skipjack Financial Services Skipjack Integration Guide 2. Get Transaction Status Method - Specifying Order Number Later, just prior to shipping, the additional charge is determined and warehouse personnel perform a Get Transaction Status method to determine the TransactionID and Status of the original Authorization for OrderNumber 000123 prior to shipping the order. This returns the Transaction ID which can be used in step 3, below. Get Transaction Status Request 1 Serial Number=000111222333, szDeveloperSerialNumber=123456789000, szOrderNumber=000123, szDate= Get Transaction Status Response 1 HTML SerialNumber=000111222333, Transaction Amount=3000, Transaction Status Code=12, Transaction Status Message=, Order Number=000123, Transaction Date and Time=11/29/06 13:15:45, TransactionId=987654321.005, Approval Code=123456, Batch Number=999888777666 3. Change Transaction Status Method:AUTHORIZE specifying new (different) szAmount A Change Transaction Status:AUTHORIZEADDITIONAL is performed with the amount submitted as the new Shipping Charges ($15.00) only using the Transaction ID determined above. Change Transaction Status Request 1 szSerialNumber=000111222333, szOrderNumber=000123, szTransactionId=987654321.005 szDesiredStatus=AUTHORIZE, szAmount=1500, szForceSettlement=0 Change Transaction Status Response 1 SerialNumber=000111222333, szTransactionAmount=1500, Desired Status=SETTLE, Status Response=Successful, Status Response Message=, szOrderNumber=000123, TransactionId=987654321.005 4. Get Transaction Status Method - Specifying Order Number Perform a Get Transaction Status method to determine the final status of the OrderNumber 000123 prior to shipping the order to confirm that the transaction has been Approved. Get Transaction Status Request 1 Serial Number=000111222333, szDeveloperSerialNumber=123456789000, szOrderNumber=000123, szDate= Get Transaction Status Response 1 HTML SerialNumber=000111222333, Transaction Amount=1500, Transaction Status Code=14, Transaction Status Message=, Order Number=000123, Transaction Date and Time=11/29/06 15:05:12, TransactionId=987654321.009, Approval Code=654321, Batch Number=999888777666 Page 189 2009 Skipjack Financial Services Skipjack Integration Guide Appendix A: Permitted Country Code Values This section lists the Country Codes that can be specified for the Country, rtCountry, and ShipToCountry variable fields. You may specify the following values for a specific country in the Country, rtCountry, and ShipToCountry variable fields in Authorize/AuthorizeAPI, Add Recurring Payments, and Edit Recurring Payments and Change Status fields for most Payment Processors. Skipjack Financial Services supports ISO 3166-1 alpha-2, alpha-3 and numeric codes, as listed below. For information about the ISO Country codes see the International Organizations for Standards (ISO) Website at http://www.iso.org/iso/country_codes/iso_3166faqs/iso_3166_faqs_general.htm . NOTE 1: The Country and rtCountry variables are Required variables for Authorize/AuthorizeAPI method when using Paymentech Salem as your Payment Processor. For more information see the “Appendix J: Using Soft Indicators” section for more details. NOTE 2: When using Paymentech Salem or First Data Nashville as your Payment Processor use only the 2 Character Alphabetic code values for Country, rtCountry and ShipToCountry variable values. NOTE 3: When using TSYS as your Payment Processor use only the 3 character numeric code values for Country, rtCountry and ShipToCountry variable values. Country Name 2 Character Alpha Code 3 Character Alpha Code 3 Character Numeric Code AFGHANISTAN AF AFG 004 ALBANIA AL ALB 008 ALGERIA DZ DZA 012 AMERICAN SAMOA AS ASM 016 ANDORRA AD AND 020 ANGOLA AO AGO 024 ANGUILLA AI AIA 660 ANTARCTICA AQ ATA 010 ANTIGUA AND BARBUDA AG ATG 028 ARGENTINA AR ARG 032 ARMENIA AM ARM 051 ARUBA AW ABW 533 AUSTRALIA AU AUS 036 AUSTRIA AT AUT 040 AZERBAIJAN AZ AZE 031 BAHAMAS BS BHS 044 BAHRAIN BH BHR 048 BANGLADESH BD BGD 050 BARBADOS BB BRB 052 Page 190 2009 Skipjack Financial Services Country Name Skipjack Integration Guide 2 Character Alpha Code 3 Character Alpha Code 3 Character Numeric Code BELARUS BY BLR 112 BELGIUM BE BEL 056 BELIZE BZ BLZ 084 BENIN BJ BEN 204 BERMUDA BM BMU 060 BHUTAN BT BTN 064 BOLIVIA BO BOL 068 BOSNIA AND HERZEGOWINA BA BIH 070 BOTSWANA BW BWA 072 BOUVET ISLAND BV BVT 074 BRAZIL BR BRA 076 BRITISH INDIAN OCEAN TERRITORY IO IOT 086 BRUNEI DARUSSALAM BN BRN 096 BULGARIA BG BGR 100 BURKINA FASO BF BFA 854 BURUNDI BI BDI 108 CAMBODIA KH KHM 116 CAMEROON CM CMR 120 CANADA CA CAN 124 CAPE VERDE CV CPV 132 CAYMAN ISLANDS KY CYM 136 CENTRAL AFRICAN REPUBLIC CF CAF 140 CHAD TD TCD 148 CHILE CL CHL 152 CHINA CN CHN 156 CHRISTMAS ISLAND CX CXR 162 COCOS (KEELING) ISLANDS CC CCK 166 COLOMBIA CO COL 170 COMOROS KM COM 174 CONGO, Democratic Republic of (was Zaire) CD COD 180 CONGO, People's Republic of CG COG 178 COOK ISLANDS CK COK 184 COSTA RICA CR CRI 188 COTE D'IVOIRE CI CIV 384 Page 191 2009 Skipjack Financial Services Country Name Skipjack Integration Guide 2 Character Alpha Code 3 Character Alpha Code 3 Character Numeric Code CROATIA (local name: Hrvatska) HR HRV 191 CUBA CU CUB 192 CYPRUS CY CYP 196 CZECH REPUBLIC CZ CZE 203 DENMARK DK DNK 208 DJIBOUTI DJ DJI 262 DOMINICA DM DMA 212 DOMINICAN REPUBLIC DO DOM 214 EAST TIMOR TL TLS 626 ECUADOR EC ECU 218 EGYPT EG EGY 818 EL SALVADOR SV SLV 222 EQUATORIAL GUINEA GQ GNQ 226 ERITREA ER ERI 232 ESTONIA EE EST 233 ETHIOPIA ET ETH 231 FALKLAND ISLANDS (MALVINAS) FK FLK 238 FAROE ISLANDS FO FRO 234 FIJI FJ FJI 242 FINLAND FI FIN 246 FRANCE FR FRA 250 FRANCE, METROPOLITAN FX FXX 249 FRENCH GUIANA GF GUF 254 FRENCH POLYNESIA PF PYF 258 FRENCH SOUTHERN TERRITORIES TF ATF 260 GABON GA GAB 266 GAMBIA GM GMB 270 GEORGIA GE GEO 268 GERMANY DE DEU 276 GHANA GH GHA 288 GIBRALTAR GI GIB 292 GREECE GR GRC 300 GREENLAND GL GRL 304 GRENADA GD GRD 308 GUADELOUPE GP GLP 312 GUAM GU GUM 316 Page 192 2009 Skipjack Financial Services Country Name Skipjack Integration Guide 2 Character Alpha Code 3 Character Alpha Code 3 Character Numeric Code GUATEMALA GT GTM 320 GUINEA GN GIN 324 GUINEA-BISSAU GW GNB 624 GUYANA GY GUY 328 HAITI HT HTI 332 HEARD AND MC DONALD ISLANDS HM HMD 334 HONDURAS HN HND 340 HONG KONG HK HKG 344 HUNGARY HU HUN 348 ICELAND IS ISL 352 INDIA IN IND 356 INDONESIA ID IDN 360 IRAN (ISLAMIC REPUBLIC OF) IR IRN 364 IRAQ IQ IRQ 368 IRELAND IE IRL 372 ISRAEL IL ISR 376 ITALY IT ITA 380 JAMAICA JM JAM 388 JAPAN JP JPN 392 JORDAN JO JOR 400 KAZAKHSTAN KZ KAZ 398 KENYA KE KEN 404 KIRIBATI KI KIR 296 KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF KP PRK 408 KOREA, REPUBLIC OF KR KOR 410 KUWAIT KW KWT 414 KYRGYZSTAN KG KGZ 417 LAO PEOPLE'S DEMOCRATIC REPUBLIC LA LAO 418 LATVIA LV LVA 428 LEBANON LB LBN 422 LESOTHO LS LSO 426 LIBERIA LR LBR 430 LIBYAN ARAB JAMAHIRIYA LY LBY 434 LIECHTENSTEIN LI LIE 438 LITHUANIA LT LTU 440 Page 193 2009 Skipjack Financial Services Skipjack Integration Guide Country Name 2 Character Alpha Code 3 Character Alpha Code 3 Character Numeric Code LUXEMBOURG LU LUX 442 MACAU MO MAC 446 MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF MK MKD 807 MADAGASCAR MG MDG 450 MALAWI MW MWI 454 MALAYSIA MY MYS 458 MALDIVES MV MDV 462 MALI ML MLI 466 MALTA MT MLT 470 MARSHALL ISLANDS MH MHL 584 MARTINIQUE MQ MTQ 474 MAURITANIA MR MRT 478 MAURITIUS MU MUS 480 MAYOTTE YT MYT 175 MEXICO MX MEX 484 MICRONESIA, FEDERATED STATES OF FM FSM 583 MOLDOVA, REPUBLIC OF MD MDA 498 MONACO MC MCO 492 MONGOLIA MN MNG 496 MONTSERRAT MS MSR 500 MOROCCO MA MAR 504 MOZAMBIQUE MZ MOZ 508 MYANMAR MM MMR 104 NAMIBIA NA NAM 516 NAURU NR NRU 520 NEPAL NP NPL 524 NETHERLANDS NL NLD 528 NETHERLANDS ANTILLES AN ANT 530 NEW CALEDONIA NC NCL 540 NEW ZEALAND NZ NZL 554 NICARAGUA NI NIC 558 NIGER NE NER 562 NIGERIA NG NGA 566 NIUE NU NIU 570 NORFOLK ISLAND NF NFK 574 NORTHERN MARIANA MP MNP 580 Page 194 2009 Skipjack Financial Services Country Name Skipjack Integration Guide 2 Character Alpha Code 3 Character Alpha Code 3 Character Numeric Code NORWAY NO NOR 578 OMAN OM OMN 512 PAKISTAN PK PAK 586 PALAU PW PLW 585 PALESTINIAN TERRITORY, Occupied PS PSE 275 PANAMA PA PAN 591 PAPUA NEW GUINEA PG PNG 598 PARAGUAY PY PRY 600 PERU PE PER 604 PHILIPPINES PH PHL 608 PITCAIRN PN PCN 612 POLAND PL POL 616 PORTUGAL PT PRT 620 PUERTO RICO PR PRI 630 QATAR QA QAT 634 REUNION RE REU 638 ROMANIA RO ROU 642 RUSSIAN FEDERATION RU RUS 643 RWANDA RW RWA 646 SAINT KITTS AND NEVIS KN KNA 659 SAINT LUCIA LC LCA 662 SAINT VINCENT AND THE GRENADINES VC VCT 670 SAMOA WS WSM 882 SAN MARINO SM SMR 674 SAO TOME AND PRINCIPE ST STP 678 SAUDI ARABIA SA SAU 682 SENEGAL SN SEN 686 SEYCHELLES SC SYC 690 SIERRA LEONE SL SLE 694 SINGAPORE SG SGP 702 SLOVAKIA (Slovak Republic) SK SVK 703 SLOVENIA SI SVN 705 SOLOMON ISLANDS SB SLB 090 SOMALIA SO SOM 706 SOUTH AFRICA ZA ZAF 710 ISLANDS Page 195 2009 Skipjack Financial Services Country Name Skipjack Integration Guide 2 Character Alpha Code 3 Character Alpha Code 3 Character Numeric Code SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS GS SGS 239 SPAIN ES ESP 724 SRI LANKA LK LKA 144 ST. HELENA SH SHN 654 ST. PIERRE AND MIQUELON PM SPM 666 SUDAN SD SDN 736 SURINAME SR SUR 740 SVALBARD AND JAN MAYEN ISLANDS SJ SJM 744 SWAZILAND SZ SWZ 748 SWEDEN SE SWE 752 SWITZERLAND CH CHE 756 SYRIAN ARAB REPUBLIC SY SYR 760 TAIWAN TW TWN 158 TAJIKISTAN TJ TJK 762 TANZANIA, UNITED REPUBLIC OF TZ TZA 834 THAILAND TH THA 764 TOGO TG TGO 768 TOKELAU TK TKL 772 TONGA TO TON 776 TRINIDAD AND TOBAGO TT TTO 780 TUNISIA TN TUN 788 TURKEY TR TUR 792 TURKMENISTAN TM TKM 795 TURKS AND CAICOS ISLANDS TC TCA 796 TUVALU TV TUV 798 UGANDA UG UGA 800 UKRAINE UA UKR 804 UNITED ARAB EMIRATES AE ARE 784 UNITED KINGDOM GB GBR 826 UNITED STATES US USA 840 UNITED STATES MINOR OUTLYING ISLANDS UM UMI 581 URUGUAY UY URY 858 UZBEKISTAN UZ UZB 860 VANUATU VU VUT 548 Page 196 2009 Skipjack Financial Services Country Name Skipjack Integration Guide 2 Character Alpha Code 3 Character Alpha Code 3 Character Numeric Code VATICAN CITY STATE (HOLY SEE) VA VAT 336 VENEZUELA VE VEN 862 VIET NAM VN VNM 704 VIRGIN ISLANDS (BRITISH) VG VGB 092 VIRGIN ISLANDS (U.S.) VI VIR 850 WALLIS AND FUTUNA ISLANDS WF WLF 876 WESTERN SAHARA EH ESH 732 YEMEN YE YEM 887 YUGOSLAVIA YU YUG 891 ZAMBIA ZM ZMB 894 ZIMBABWE ZW ZWE 716 Page 197 2009 Skipjack Financial Services Skipjack Integration Guide Appendix B: Address Verification System (AVS) Checking The Address Verification System (AVS) is a service provided by credit card Issuers intended to authenticate the Purchaser (Customer) as the authorized cardholder. AVS checking is performed by matching the numerical address information provided at the time of a purchase (such as in a shipping address field) with that numerical address information held on record for the authorized cardholder. This information is included with the order and transmitted to the Skipjack Transaction Network and the Issuers networks for scrutiny. It is important to understand that AVS checking only compares the numeric portion of the cardholder's street address and the 5 or 9-digit zip code/postal code to that held on record for the cardholder. AVS return codes are returned based on how well this data matches and the level of matching required can be configured for each Merchant Account. By default, AVS filtering is disabled within Skipjack Transaction Network. AVS does not examine the text portion of the address, such as street names or city names. As a result, AVS is a basic method of fraud prevention only and helps to prevent the use of counterfeit (computer generated) credit card numbers not associated with a legitimate cardholder. AVS use is not required in all transactions by the card Issuers and Processors. However, submitting AVS data with every transaction can help ensure that Merchants receive improved transaction rates from Processors and Issuers. For these reasons the use of AVS checking is highly recommended by Skipjack. AVS Filtering within the Skipjack Transaction Network The AVS verification is performed by the credit card Issuer and an AVS response code and message are returned to the Processor and to the Skipjack Transaction Network. The values of this AVS match are carried in the szAVSResponseCode and szAVSResponseMessage return variables. These return variables indicate the level of matching obtained in the AVS check. The Skipjack Transaction Network permits AVS filtering options to be set on the Merchant Account. The levels of AVS matching configured are independent of and in addition to the AVS checking done by the Issuer. The Skipjack Transaction Network AVS filters are applied after the Issuer performs its AVS checking. If the Skipjack AVS filtering option is enabled and configured to require a high level of matching for transactions, AVS filtering is performed on each transaction on a particular Merchant Account. The default setting for this feature is that no AVS filtering will be applied. The AVS filters can also be configured to handle Domestic and International transactions differently. See Also • For more information about how to configure using the Merchant Interface, see the AVS section in the Skipjack Merchant Services Guide. • For more information about the development considerations when configuring International and Domestic AVS handling see the AVS section of the Skipjack Integration Overview Guide. Page 198 2009 Skipjack Financial Services Skipjack Integration Guide Development Notes for AVS and AVS Filtering Consider the following when applying AVS and AVS filtering in your application development. • AVS is not supported for Declined transactions. No further processing is done on transactions Declined by the Issuing Bank. • When Skipjack AVS is configured to require a high AVS matching threshold, the transaction can be Declined by the Skipjack Transaction Network despite the transaction being Approved by the credit card Issuer. The Issuer never declines based on AVS values, they simply pass this information through their networks to Skipjack Financial Services. • If AVS filtering leads to a transaction Decline, the available credit (headroom) on the card is decreased by the transaction amount submitted. For subsequent transactions the headroom on the card is decreased by this transaction amount for a period of 7 days (normally). This creates a problem when the headroom is nearing its limit on the card and the transaction is resubmitted for a second Authorization attempt. This can lead to another Decline with further decreases in headroom being made on the card. In these instances, the Merchant must call the card Issuer to reverse the reserved amount(s) from the transaction(s) that were previously Declined. The Merchant can then resubmit the transaction. The Merchant can then receive a transaction Approval, assuming the AVS threshold was sufficiently lowered from the original settings or the correct address information is sent. The presence of an AUTHCODE value when the szIsApproved=0 is the true indicator of the status of the transaction in these cases. Page 199 2009 Skipjack Financial Services Skipjack Integration Guide AVS Codes by Card Type Summary AVS Response Code Description X Match Street address and 9-digit ZIP code both match Y Match Street address and 5-digit ZIP code both match. X A Partial Match Street address matches, but both 5-digit and 9-digit ZIP Code do not match. X W Partial Match Street address does not match, but 9digit ZIP code matches. Z Partial Match Street address does not match, but 5digit ZIP code matches. X X X X N No Match Street address, 5-digit ZIP code, and 9digit ZIP code all do not match. X X X X U System Unavailable Address information unavailable. Returned if non-US. AVS is not available or if the AVS in a U.S. bank is not functioning properly. X X X X R System Unavailable Retry - Issuer's System Unavailable or Timed Out. X X X E Invalid AVS data is invalid. X S Not Supported USA issuing bank does not support AVS. X X X Not Supported Non-USA issuing bank does not support AVS. X Return Code G Visa MC AMEX DISCOVER X X X X X X X X X NOTE: By default, the Skipjack AVS filtering configuration is set to NOT DECLINE any transactions based on AVS settings. Increasing the filter configuration matching requirements can lead to more transactions being declined. Page 200 2009 Skipjack Financial Services Skipjack Integration Guide AVS Response Codes for International and Domestic Credit Cards When sending a transaction with AVS checking required the Issuing Bank will return one of the following AVS response codes. The table below breaks down the responses returned by credit card type. Code Summary Description D Match Street Address and Postal Code match for International Transaction. M Match Street Address and Postal Code match for International Transaction. B Partial Match Street Address Match for International Transaction. Postal Code not verified due to incompatible formats. P Partial Match Postal Codes match for International Transaction but street address not verified due to incompatible formats. C No Match Street Address and Postal Code not verified for International Transaction due to incompatible formats. I No Match Address Information not verified by International issuer. O Not Supported USA Issuer does not participate. G Not Supported Non-USA issuing bank does not support AVS. AVS Code Handling for International and Domestic Transactions The Merchant Interface allows the configuration of different matching criteria for AVS checks performed on Domestic and International transactions. In this context, Domestic is always defined as from the country where the Originating Bank/Issuer is located. This means that for Originating Banks (Card Issuers) based in the United States of America (USA), Domestic will always means USA-based transactions and International will always be any transaction to cardholders with Issuers located outside the USA. NOTE: For Canadian Merchant Accounts handling Canadian transactions some Merchants might see different handling of the AVS codes than is described here. Use of Canadian Postal Codes in AVS Checks For Canadian Merchant Accounts with a Canadian Originating Bank/Issuer with AVS checking enabled for Domestic transactions, the Zip Code variable (ZipCode) is used with a Postal Code value for AVS checking purposes. For American Originating Banks/Issuers that have AVS checking enabled for International transactions, the Postal Code is used in the Zip Code variable (ZipCode) in the AVS matching process. See Also • For more information about how to configure the Skipjack Merchant Account through the Merchant Services interface see the applicable section in the Skipjack Merchant Services Guide. Page 201 2009 Skipjack Financial Services Skipjack Integration Guide Appendix C: CVV and Interpreting CVV Return Codes Card Verification Values (CVV) codes are proprietary three or four-digit codes used by credit card Issuers as an anti-fraud mechanism for credit card transactions. CVV checking is used most commonly in card-not-present transaction situations, however, CVVs may also be used in cardpresent transactions to run the cryptographic authentication check of the CVV code to determine whether the card is legitimate or a counterfeit card. CVV codes appear only on the card itself and are not included on bank statements, receipts, or encoded in the trackdata information on the back of the card. Therefore, successful submission of CVV confirms that the purchaser is in physical possession of the credit card. CVV code checking in transactions is not mandatory by all Processors and Issuers, however use of CVV in transactions is highly recommended by Skipjack. How CVV Code Checking is Used in Transactions The Merchant requests the CVV code from the purchaser at the time of purchase. (Actual code names and locations are proprietary and vary by Card Type and Issuer, see the table below.) The CVV value is input along with other transaction details at the time of purchase. When the CVV code is sent to the Skipjack Transaction Server it is passed to the Processor and Issuer’s systems for scrutiny. A return code is issued by the Processor/Issuer and sent back to the Skipjack Transaction Network. The szCVVResponseCode and the szCVVResponseMessage return variables and values are used to determine the outcome of the CVV match. The Skipjack Merchant Interface allows the Merchant Account to be configured to require the use of CVV matching for every transaction. Enabling this feature (Mandatory CVV Matching) ensures that CVV values must be included for every transaction. To enable Skipjack Transaction Server to require CVV checking for every transaction: 1. Login to the Merchant Account. 2. Click on the Edit Account button located in the bottom section of the Account Summary page. 3. Scroll to the bottom of the page and select the check-box beside Make CVV a required field. The new feature is toggled on when a check mark is displayed in this box. 4. Scroll to the bottom of the page and select the Submit button. The feature is now enabled and a message is displayed to indicate that these account changes were successful. 5. Use the Back button on the Web browser to return to the previous screen. 6. Select the Exit link at the top of the page to log out of the Merchant Account. The table below lists the card types by Issuer and related information about each proprietary code by card type. Page 202 2009 Skipjack Financial Services Skipjack Integration Guide CVV Code Locations by Card Type Card Type Name Location on Card and Notes Visa Card Verification Value (CVV2) Three digits to the right of the credit card number in the signature area on back of the card. MasterCard/Eurocard Card Verification Code (CVC2) Three digits to the right of the credit card number in the signature area on back of the card. Discover Card Identification Number (CID) Three digits to the right of the credit card number in the signature area on back of the card. Does not return a CVV return code. American Express Card Identification Number (CID) Four digits printed (not embossed) on the right front of the card above the credit card number. Does not return a CVV return code. CVV Response Codes for Visa and MasterCard/Eurocard CVV Response Code Description M CVV Match N CVV No Match P Not Processed S Issuer indicates that CVV2 data should be present on the card, but the Merchant has indicated data is not present on the card. U Issuer has not certified for CVV2 or Issuer has not provided Visa with the CVV2 encryption keys. Empty Transaction failed because incorrect CVV2 number was entered or no CVV2 number was entered. NOTE: If you have questions about how your application must be designed to use the CVV data or CVV requirements for your Processor you should contact your Processor(s) directly. Page 203 2009 Skipjack Financial Services Skipjack Integration Guide Appendix D: Avoiding Duplicate Transactions Duplicate transactions submitted in error to the Skipjack Transaction Server for a single purchase may result in the credit cardholder (Customer) being billed multiple times for a single purchase. This is a rare occurrence under normal circumstances and users can configure the Skipjack Transaction Network to reject duplicate transactions, as described below. Development Notes on Avoiding Duplicate Transactions 1. Ensure that your application generates and uses a unique Order Number for each transaction. Using a unique Order Number will help prevent duplicate orders from being posted to the Skipjack Transaction Network. The OrderNumber variable is a Merchant-generated return value that uses syntax useful to the Merchant’s application. If a duplicate OrderNumber did occur, then the szTransactionId return variable associated with the transaction can be used to differentiate transactions. However, the Customer could still be charged more than once, if the Merchant Account settings are set to Settle immediately. Unique OrderNumber values are retained within the Skipjack Transaction Network while the transaction is in the Approved state. If a transaction is in another state, for example Deleted or Settled states, the Skipjack Transaction Server will not reject orders with that same Order Number if the Reject based on OrderNumber feature is enabled, as described below. NOTE: Duplicate transactions will return the szReturnCode = -84 only when the Reject duplicate transactions based on Order Number feature is enabled as described previously. See the “Appendix I: Unique Order Numbers” section for more information. 2. In special circumstances, such as very high-volume transaction environments, or also when an order form Submit button is rapidly pressed in quick succession, duplicate transactions might occur. These duplicates may not be prevented by enabling the Reject duplicate transactions based on Order Number. This situation occurs because the transactions are received by the Skipjack Transaction Network within milliseconds (more or less simultaneously) of each other and have not been written to the database when the duplicate OrderNumber arrives and is also written to the database. Although this is a rare occurrence this could occur under special circumstances. To prevent duplicate transactions in these circumstances Skipjack recommends that you use an appropriate script in your order form to ensure that duplicate transactions are not generated by rapidly pressing the Submit button. Skipjack Financial Services provides sample scripts that can be used for this purpose, available at from the Skipjack Financial Services Website. Page 204 2009 Skipjack Financial Services Skipjack Integration Guide Appendix E: Configuring Level II Transaction Data This section describes the transaction variables and values that must be used for all Level II (and subsequently Level III) transactions when submitting authorization requests using Skipjack Financial Services. NOTE: Skipjack Financial Services passes Level II transaction data to the Payment Processors and handing of this data outside of the Skipjack Transaction Network is beyond Skipjack Financial Services’ control. Skipjack Financial Services cannot control or guarantee that the Level II transaction rates will be obtained, since this depends on many external factors. The information in this section of the guide therefore is intended to serve as the best practices to follow when processing Level II data to ensure Skipjack Financial Services requirements for Level II data processing are fulfilled. Card Type Variables and Values Visa Customer Code = Required Value, may be passed as a “dummy value”. Purchase Order Number = Required, cannot be alphabetic characters. Customer Tax = Required, must have a value between 0.1 and 22.00. MasterCard Customer Code = Required Value, may be passed as a “dummy value”. Purchase Order Number = Required, populated with valid value, may be “dummy value”. Customer Tax = Required, must have a value between 0.0 and 30.00, may be “dummy value”. Development Notes for Level II Data • To process Level II transactions, you require a Level II Skipjack account set to allow Level II transaction processing. Contact Skipjack Financial Services Customer Support if you require this functionality. • Level II transaction data is submitted in the Authorization request but not processed until the transaction is Settled. • Payment Processors may change the requirements for processing Level II transactions at their discretion. If you have questions regarding processing Level II transactions or experience a change in how Level II transactions are being handled or qualified, please contact your Payment Processor to ensure that they have not changed the submission requirements for processing Level II transactions. If this does not resolve the issue then contact Skipjack Financial Services Customer Support to work through the issue in collaboration with your Merchant Account Provider. • If you have read the information in all relevant sections of the Skipjack Guides and you have questions about processing Level II transactions or are unclear about the Level II transaction processing requirements, contact Skipjack Financial Services for guidance. • Level II transaction variables that are required for Level II transaction processing are also required variables for processing Level III transactions. Page 205 2009 Skipjack Financial Services Skipjack Integration Guide Appendix F: TSYS PIN-based Debit Transactions Information The following table lists and describes the required and optional request variables used for the TSYS PIN-based Debit Service. Your application must use the following variables in properly formatted and fully-formed name-value pairs for each transaction request. NOTE: Variables in red are new variables introduced by this service. For more information about these variables including formatting and values see the “Request Variables for Authorize and AuthorizeAPI Methods” section for details. Details Debit (Purchase) Credit Reversal A transaction amount with a positive value is made to the Skipjack Transaction Network and this amount is debited from the customer’s bank account. A transaction amount with a negative value is made to Skipjack Transaction Network and this amount is credited to the customer’s bank account. Reversal can be used to reverse either a Debit or a Credit. A transaction amount with a negative value is made to the Skipjack Transaction Network and this amount will be reversed from the customer’s bank account. The Credit transaction will appear as a distinct transaction on the customer’s bank record. No record of this transaction will appear on the customer’s bank account record. A record of the transaction will appear on the customer’s bank record if not credited. A Credit can be applied to an existing transaction record after 60 minutes have elapsed from the original transaction was authorized. Reversals must be submitted by using the Unqtransactionid variable to identify the original transaction and be submitted within 60 minutes of the original transaction otherwise a Credit must be performed. Required Request Variables PINBlock TransactionAmount SerialNumber OrderNumber SJName StreetAddress City State Zipcode Country E-mail ShiptoPhone OrderString PINBlock TransactionAmount SerialNumber OrderNumber SJName StreetAddress City State Zipcode Country E-mail ShiptoPhone OrderString Unqtransactionid TransactionAmount SerialNumber OrderNumber SJName Street address City State Zipcode Country E-mail ShiptoPhone OrderString Accountnumber Month Year Optional Request Variables CashbackAmount None None Page 206 2009 Skipjack Financial Services Skipjack Integration Guide Example Code Snippets Request Variables NOTE: In the code snippet below, the new variables used for this service are highlighted in red text. <head> <title>Tsys Pin Debit</title> </head> <body> <h1>Tsys Pin Debit</h1> <form action="https://developer.skipjackic.com/scripts/evolvcc.dll?AuthorizeAPI" method="post"> purchase or credit or reversal <br /><br /> serial number <input type="text" name="serialnumber" value=""><br /> order number <input type="text" name="ordernumber" value=""/><br /> sjname <input type="text" name="sjname" value=""><br /> street address <input type="text" name="streetaddress" value="" /><br /> city <input type="text" name="city" value=""/><br /> state <input type="text" name="state" value="" /><br /> zip code <input type="text" name="zipcode" value="" /><br /> country <input type="text" name="country" value="" /><br /> email <input type="text" name="email" value="” /><br /> phone <input type="text" name="shiptophone" value="" /><br /> orderstring <input type="text" name="orderstring" size="40" value="" /><br /> amount <input type="text" name="transactionamount" value="" /><br /> cash back (optional) <input type="text" name="cashbackamount" value="" /><br /> <br /> purchase or credit <br /><br /> track data <input type="text" name="trackdata" size="120" value=”” /><br /> pin block <input type="text" name="pinblock" size="40" value=" " /><br /> <br /> reversal <br /><br /> transaction id <input type="text" size="40" name="unqtransactionid" value="" /><br /> account number <input type="text" size="40 name="accountnumber" value="" /><br /> expiry month <input type="text" name="month" value="" /><br /> expiry year <input type="text" name="year" value="" /><br /> <br /> <input type="submit" value="submit" /> </form> </body> </html> Page 207 2009 Skipjack Financial Services Skipjack Integration Guide Example Response String The example below illustrates a typical Authorization response for the TSYS PIN-based debit service. NOTE: The szCAVVResponseCode value returned denotes the settlement date for the transaction in MonthMonthDayDay format. For Reversals, the szCAVVResponseCode value returned denotes the settlement time of the original transaction. Response Example: Authorize "<!--AUTHCODE=VITAL5--><!--szSerialNumber=111222333444--><!--szTransactionAmount=1900-><!--szAuthorizationDeclinedMessage=--><!--szAVSResponseCode=N--><!-szAVSResponseMessage=Card authorized, no address or zip code match.--><!-szOrderNumber=1--><!--szAuthorizationResponseCode=000067--><!--szReturnCode=1--><!-szCVV2ResponseCode=--><!--szCVV2ResponseMessage=--><!--szIsApproved=1--><!-szTransactionFileName=9802850951761.009--><!--szCAVVResponseCode=1225--> Development Notes for the TSYS PIN-based Debit Service The following development guidelines apply: • The PINBlock is 32 characters long and must be formatted in following way: AAAAAAAAAAAAAAAAKKKKKKKSSSSSSSSSS, where A represents Expanded Encrypted PIN Block Data (16 characters), K (6 characters) represents Key Set Identifier (KSID), and the S (10 characters) is the Expanded TRSM ID (PIN Pad Serial Number). • The PINBlock is encrypted and is not stored within the Skipjack Transaction Network. • When reversing a Debit transaction using Reversals the Unqtransactionid is used to uniquely identify the original transaction to be reversed, not the OrderNumber. • The TransactionAmount used for a Credit or a Reversal may not exceed the original TransactionAmount, otherwise a szReturnCode = -57 error will be returned. • In the case of a Credit Reversal, the szCAVVResponseCode will contain the date in DDMM format of the original transaction authorization. • Credits require that a negative value is submitted for TransactionAmount. • When the (optional) feature is used the TransactionAmount contains the sum of the product or service purchased plus the amount of cash disbursed as the Cashback amount. • For Reversals of transactions where the original transaction included a CashbackAmount, the Customer must return the Cashback money and the CashbackAmount and TransactionAmount value from the original transactions must be applied to the Reversal. • For additional information, including Skipjack Financial Services Certification Test Cases and other details see the Skipjack TSYS PIN-based Debit Services Guide. Page 208 2009 Skipjack Financial Services Skipjack Integration Guide Appendix G: Blind Credits A Blind Credit is a Credit (Refund) applied to a transaction for which a record is not currently held within the Merchant Register (Skipjack Transaction Network database). A Blind Credit may be required when a Merchant moves their business from another payment gateway to Skipjack Financial Services and a customer requests a Credit to be applied to transactions previously processed by the other payment gateway. When submitting a Blind Credit using the “Authorize and AuthorizeAPI Methods”, a negative TransactionAmount is specified in the Transaction Amount variable. To perform a Blind Credit the Merchant must obtain all credit card information from the customer (Account Number, Name, Expiry, CVV code, etc.) in order to complete the Blind Credit. Prerequisites and Requirements for Performing Blind Credits To use Blind Credits on a specific Merchant Account the following must be enabled and supported: • Blind Credits must be supported both by your Financial Institution’s Merchant Account. • The Allow Blind Credit option must be enabled on your Skipjack Merchant Account. Please contact Skipjack Customer Support or your Skipjack Authorized Reseller to enable this feature on your Merchant Account if you do not have the necessary account permissions to set this option yourself. Page 209 2009 Skipjack Financial Services Skipjack Integration Guide szReturnCode Error Messages Associated with Blind Credits szReturnCode Value Error Name/Type Description -93 Blind Credits Request Refused Blind credit attempt failed. Enable Allow Blind Credits option on the Skipjack account and resubmit the transaction. See the “Configuring the Skipjack Merchant Account to Permit Blind Credits” section for details. -94 Blind Credits Failed option on the Skipjack account and resubmit the transaction. See the “Configuring the Skipjack Merchant Account to Permit Blind Credits” section for details. Blind Credits versus Change Status: Credit The Change Status method (see “Change Transaction Status Method”) can be used, by specifying the szDesiredStatus=Credit variable, for crediting transactions where the Merchant does not have all credit card information available and/or they want to provide a Credit (refund) to the customer where the transaction was originally submitted through the Skipjack Transaction Network. When using the Change Transaction Status method, the Merchant does not need to submit the any credit card information to perform the Credit. Blind Credits are used in situations where the original transaction was processed using a competitor’s payment gateway. Therefore, it is necessary to re-enter all credit card information or swipe the credit card to complete the Blind Credit transaction. You would use the Authorize/AuthorizeAPI (see “Authorize and AuthorizeAPI Methods” section) specifying a TransactionAmount with a negative value to complete a Blind Credit. Page 210 2009 Skipjack Financial Services Skipjack Integration Guide Configuring the Skipjack Merchant Account to Permit Blind Credits By default the Skipjack Merchant Account is configured to not permit blind credits. Depending on your Skipjack Merchant Account permissions, you may be able to change these configuration options to allow Blind Credits for a specific Skipjack Merchant Account. NOTE: If you are not able to access the Account Setup Page for your Skipjack account this means you do not have the required account permissions to make the required Skipjack account changes. Contact Skipjack Financial Services Customer Support and request these configuration changes be applied to your Skipjack Merchant Account and/or request the access privileges to configure these account options. To display and set the Skipjack Merchant Account settings for the Allow Blind Credit option: 1. Login to the Merchant Account at https://secure.skipjack.com using your account credentials supplied by Skipjack Financial Services. 2. Click on the Edit Account button located in the bottom section of the Account Summary page. 3. Scroll down the page to locate the Allow Blind Credits section, as shown below. 4. Select the check-box beside the Allow Blind Credits to enable this configuration option on the Skipjack Merchant Account. 5. Click the Submit button to make the changes to the configuration settings. Page 211 2009 Skipjack Financial Services Skipjack Integration Guide Appendix H: Using Trackdata Details in Transactions The Skipjack Transaction Network is compatible with Track 1 and Track 2 data encoded in the magnetic stripe on the reverse side (back) of all credit cards. This section provides details about usage of Trackdata information in the Skipjack Transaction Network. Recommended Trackdata Hardware Trackdata Hardware Devices supported by the Skipjack Transaction Network: • • • • Magtek Magnetic Swipe Card Reader, Mini USB Magtek Magstripe Swipe Card Reader, Mini Wedge Magtek MICR PLUS (Combo Reader for Swipe Check and Swipe Card) Magtek MICR (Check Reader) For more information about these devices, visit http://www.magtek.com. Trackdata Information and Examples Skipjack Variable Format Required/Optional Example Trackdata Track 1 and Track 2 Required B4003000123456781^GLOBAL PAYMENTS TEST CARD/^090850254321987123456789012345 (Track 1 only) ;4003000123456781=09085025432198712345 (Track 2 only) B4003000123456781^GLOBAL PAYMENTS TEST CARD/^090850254321987123456789012345?;4003000123456 781=09085025432198712345? (Track 1 and 2 only) Account Number Numeric Conditional – Do not send if Trackdata is passed. 4003000123456781 Month Numeric Conditional – Do not send if Trackdata is passed. 12 Year Numeric Conditional – Do not send if Trackdata is passed. 10 or 2010 Page 212 2009 Skipjack Financial Services Skipjack Integration Guide Trackdata Capture, Formatting and Usage Notes NOTE 1: If trackdata is not sent, or the incorrect Track is sent as specified by your Payment Processor (Track 2 instead of Track 1), or if the trackdata data are malformed (corrupted), the transaction may be downgraded to a less favorable interchange rate. This will result in increased costs to the Merchant depending on your Payment Processor’s transaction processing guidelines and rules. NOTE 2: Please ensure that the location (State and Zipcode fields) setting on the Skipjack Account’s Vendor Preferences screen is correct otherwise swiped transactions may be Declined. The Decline is caused by the cardholders issuing bank scrutinizing the merchant location information for an authorization attempt. If the location information is not correct, it can make the transaction appear to the issuing bank as a potentially fraudulent transaction. As such, the issuing bank declines the transaction. See the “Payment Processors Supported by Skipjack Financial Services” section to determine if your Payment Processor supports Trackdata. • To use a supported swipe device, the Merchant’s Skipjack Account must first be configured with the Electronic Commerce Indicator (ECI) flag turned off. • Skipjack-compliant trackdata cannot contain the percentage symbols ("%") otherwise this will cause URL encoding which will break the data string. Please remove percentage symbols from the start of the trackdata. • The Skipjack Transaction Network can handle most of the usual delimiters, such as an equal sign (=), at the end of the second occurrence of the card number. • The Skipjack Transaction Network automatically interprets the second occurrence of the credit card number as the start of Track 2. • Some Processors, such as TSYS, require an upper case letter B at the start of the Track Data. Do not use lower case, b. • When using TSYS as your Payment Processor, only Track 2 data is supported. • When sending Trackdata, Skipjack Financial Services suggests sending both Track 1 and Track 2 data, unless you are directed otherwise by your Payment Processor. • If using Global Payments as the Processor trackdata can be transmitted as Track 1 only or Track 1 and Track 2. • Please ensure that you test your trackdata with Live transactions to confirm that the expected transaction rate is applied to swiped transactions in the Settled transactions. • When using the ChangeStatus methods with Authorize, AuthorizeAdditional, AuthorizeEx or AuthorizeAdditionalEx and the original transaction was swiped, the ChangeStatus transaction will be handled as a non-swiped (keyed) transaction. Page 213 2009 Skipjack Financial Services Skipjack Integration Guide Appendix I: Unique Order Numbers The Order Number assigned to each transaction must be generated by your application. The OrderNumber variable is a required transaction variable for many Core and Supplementary transaction methods (see the “Supplementary Methods” section for a listing of these methods). Except in rare circumstances and for application testing, the OrderNumber assigned to each transaction should be unique to prevent duplicate records with the same Order Number in the Merchant Registry. In terms of the Skipjack Transaction Network database, Duplicate Order Numbers are those Order Numbers submitted within a 24 hour period that use the same Order Number value as a previously submitted. If the Order Number matches any Approved or Pending Credit transaction records (duplicates) in the Merchant Register an error code is returned if the Reject Duplicate Order Numbers configuration option is set in the Skipjack Merchant Account. The szReturnCode Value=-84 (error code) is also returned from the Skipjack Transaction Network and the transaction is Declined. NOTE 1: The Order Number variable can be a maximum of 22 characters for those using Paymentech as their Payment Processor. In these cases the Order Number must be unique per Settlement Batch. NOTE 2: By default the Skipjack Merchant Account does not prevent your application from submitting a duplicate Order Number. (The Reject Duplicate Order Numbers option is off). How to Identify Transactions When Duplicate Order Numbers Exist The Transaction ID (szTransactionId) generated by the Skipjack Transaction Network can be used to differentiate and identify transactions that do have duplicate Order Number within the Merchant registry. To differentiate between transactions with duplicate Order Numbers: 1. Use the Get Transaction Status method and specify the transaction date to retrieve the szTransactionId associated with the transaction you wish to perform any subsequent action on, such as a Change Transaction Status method. For information about the use of the Get Transaction Status method see also the “Get Transaction Status Method” section. 2. Use the Transaction ID, obtained in step 1 above, to identify the transaction you wish to change. Page 214 2009 Skipjack Financial Services Skipjack Integration Guide Other Transaction Methods Using Order Number as a Required Variable The Order Number variable is Required and used in the following transaction methods: • • • • “Get Transaction Status Method” (szOrderNumber) “Change Transaction Status Method” (szOrderNumber) “Add Recurring Payment Method” (rtOrderNumber) “Edit Recurring Payments Method” (rtOrderNumber) Configuring the Reject Duplicate Order Numbers Option for a Merchant Account By default the Skipjack Merchant Account is configured to permit duplicate Order Numbers for a Skipjack Merchant Account. Typically this configuration is not problematic and is actually preferred for testing certain application behaviors in a Development environment. However, rejecting transactions based on duplicate order numbers is recommended for Skipjack Merchant Accounts that are processing Live transactions. Depending on your Skipjack Merchant Account permissions, your Skipjack Merchant Account settings may allow or reject transactions based on Order Number duplicates. To set the Reject duplicate transactions based on order number settings Merchant Account options: 1. Login to the Skipjack Merchant Account at https://secure.skipjack.com. 2. Select the Edit Account button in the bottom section of the Account Summary page to display the Account Setup Page. NOTE: If you are not able to access Account Setup Page, you do not have the required account permissions. Contact the Skipjack Financial Services Customer Support to have this configuration change applied to your Skipjack Merchant Account. 3. Scroll down to the Reject duplicate transactions based on order number section as shown below and select the check-box beside the option shown. Page 215 2009 Skipjack Financial Services Skipjack Integration Guide 4. Select the Submit button to invoke the changes. 5. Use your Web browser’s Back button to return to previous pages to continue working or select the Exit link to log out of the Merchant Register. Page 216 2009 Skipjack Financial Services Skipjack Integration Guide Appendix J: Using Soft Indicators with Paymentech and TSYS Presently only Paymentech Salem and TSYS support Soft Indicator functionality and therefore this section applies only to Skipjack Merchant Accounts that are using Paymentech Salem or TSYS as their Payment Processor. The Soft Indicator is a dynamic descriptor of a transaction that appears on the Customer’s credit card statement. The use of Soft Indicators may help reduce the incidence of disputed charges by Customers because the descriptor helps to more clearly identify transactions that appear on the Customer’s credit card statement. Soft Indicator Implementation Guidelines • Soft Indicators are currently supported only by Paymentech Salem and TSYS for credit card transactions only. • The OrderDescription variable is an Optional transaction request variable that carries the Soft Indicator data. The OrderDescription may be a maximum of 22 alphanumeric characters (instead of 20 characters supported for other Payment Processors). See “Transaction Requests for Authorize and AuthorizeAPI” section for a detailed description of the OrderDescription variable. • The proper functioning of the Soft Indicator for Credits (using Change Transaction Status: Credit) and can only be tested using a Live credit card and obtaining the credit card statement to confirm the Soft Indicator is properly displayed. • The Country variable is a required variable and must be included in all Authorize/AuthorizeAPI requests. Setting Merchant Services Vendor Preferences to Support Soft Indicators Some Skipjack Merchant Account details are also included as part of the Soft Indicator on the Customer’s card statement. These fields are described below. Suggested configuration options are indicated for each applicable field. These fields are found on the Vendor Preferences screen in the Merchant Register. Business Type Recommended Skipjack Merchant Account Configuration Setting Retail City (City where store is located, displayed in the Vendor Information section) Direct Marketing or E-commerce Customer Service Phone NOTE: Not setting this configuration setting as indicated above may result in higher rates paid by the Merchant to Paymentech. Ecommerce URL or Email Address Page 217 2009 Skipjack Financial Services Skipjack Integration Guide To view or change the Skipjack Merchant Account settings using the online Merchant Register: 1. Login to the Merchant Account at https://secure.skipjack.com using your account credentials supplied by Skipjack Financial Services. 2. Click on the Preferences link to display the Vendor Preferences screen. 3. Set the values according to the table above appropriately for your business type. Page 218 2009 Skipjack Financial Services Skipjack Integration Guide Appendix K: Orderstring Variables The table below provides expanded descriptions, values, and examples for the Orderstring variables introduced in the “Transaction Requests for Authorize and AuthorizeAPI” section. Variable Name Variable Description Required / Optional Variable Type Min / Max Length Data Example Level Applies to Level I, Level II, and Level III transactions only and are included in the OrderString variable as described in the “Transaction Requests for Authorize and AuthorizeAPI” section of this guide. 1 ItemNumber SKU / Item Number Required Level I & III AlphaNumeric 1/20 1 A102, 10MJ9OL0, THX1138 Required Level I & III AlphaNumeric and comma (,) and dash (-) 1/120 1 Widget, 11LX Widget Do not use "~`!@#$%^&*()_-+= 2 ItemDescription Product Name Do not use special characters: "~`!@#$%^&*()_-+= 3 ItemCost Per Item Cost Required Level I & III Numeric and "." 4/8 1 1.00 or 1000.00 4 Quantity Item Quantity Numeric 1/4 1 2, 10, 20 5 Taxable Indicates to apply the tax rate to the order detail* Required Level I & III Required Level I & III Alpha 1/1 1 N or Y only 6 Ignore AVS Switch This entry must be inserted as a “1” after the double pipe || to override the AVS settings set on the Skipjack Account. The Account settings must be set to Accept AVS Ignore flag when sent. Optional Numeric 0/1 1 1 Applies to Level III transactions only and are included in the lvl3_orderstring variable as described in the “Transaction Requests for Authorize and AuthorizeAPI” section of this guide. 7 UnitOfMeasure Unit of Measure (Standard) Required Level 3 Alphanumeric 0/3 3 BX 8 ItemDiscount Item Discount Required Level 3 Numeric 0/9 3 0.50 9 ExtendedAmount Extended (Shipping) Amount Required Level 3 Numeric 0/9 3 0.00 10 CommodityCode Commodity Code (Standard) Required Level 3 Alphanumeric 0/4 3 ABC1 11 VatTaxAmount VAT Tax Amount Required Level 3 Numeric 0/9 3 0.00 Page 219 2009 Skipjack Financial Services 12 VatTaxRate VAT Tax Rate 13 AlternateTaxAmount Alternate Tax Amount 14 TaxRate Tax Rate 15 TaxType Tax Type 16 TaxAmount Tax Amount Skipjack Integration Guide Required Level 3 Required Level 3 Required Level 3 Required Level 3 Numeric 0/4 3 1.0 Numeric 0/9 3 0.00 Numeric 0/4 3 0.0 Alphanumeric 0/4 3 TAX1 Required Level 3 Numeric 0/9 3 0.00 NOTE 1: Not all Merchants will want to pass all Required name-value pairs when making an Authorization request. To pass "Dummy Values” for some of the required fields see “Appendix L: Naming Conventions for “Dummy Values” in Required Variables”. NOTE 2: Only 2000 characters (total) are supported for the Orderstring. Example: OrderString Variable Formatting Itemnumber~ItemDescription~ItemCost~Quantity~Taxable~unitofmeasure~itemdiscount~extendeda mount~commodity~vattaxamount~vattaxrate~taxrate~taxtype~taxamount~|| OrderString and lvl3orderstring variable Developer Notes • The inclusion of the Orderstring variable is required for all Level I transactions, but you may use Dummy Values as described in "Appendix L: Naming Conventions for “Dummy Values” in Required Variables” section of this guide. • Some Payment Processors have specific requirements and rules that must be followed regarding the lvl3_orderstring variables so that the transaction will qualify for the Level III interchange rates. Contact your Payment Processor for details regarding how to apply the Level III variables according to their requirements. Page 220 2009 Skipjack Financial Services Skipjack Integration Guide Appendix L: Naming Conventions for “Dummy Values” in Required Variables Some required variables may need to be configured with “Dummy Values” to satisfy the Skipjack Transaction Network requirements for inclusion as required variables for some transaction methods. In these instances, Skipjack Financial Services recommends using the naming conventions below to help minimize overhead on the Skipjack Transaction Network. This will prevent increased transaction processing times associated with using longer, arbitrary, values for each required variable fields. Suggested Values for “Dummy Values” for Required Variables Variable Name Suggested Value SJName NA Email Any valid, existing, e-mail address. StreetAddress None City None State XX ZipCode 00000 ShipToPhone 0000000000 OrderString 1~None~0.00~0~N~|| Methods Using the Dummy Variables The above mentioned Dummy Variables values can be used in the variable fields for the following transaction methods: • • • • Authorize AuthorizeAPI Recurring Payments Batch Upload methods. Page 221 2009 Skipjack Financial Services Skipjack Integration Guide Appendix M: Transaction IDs, Audit IDs and the Transaction Lifecycle Transaction IDs are important transaction variables which are used in several transaction methods to identify transaction records held within the Skipjack Transaction Network. Originally the Transaction ID and the Audit ID are the same while the transaction is pending settlement. However, once Settled, Transaction IDs change as the status of a transaction changes throughout its lifecycle. For example, when a transaction transitions between the Authorized Pending Settlement status to Settled, the Transaction ID changes. Audit IDs are first created when the original transaction ID is created, however Audit IDs remain the same for a transaction throughout its entire lifecycle as illustrated below. Audit IDs may be displayed using the Reports Manager GUI and selecting the Audit ID option within a given report. Audit IDs are also returned when a Change Transaction Status method is performed on a transaction. Normally Audit IDs are used to track a group of transactions throughout its lifecycle, for auditing purposes. The table below shows the relationship between Audit ID and Transaction ID values as a transaction changes state. Transaction State Audit ID Transaction ID Authorized Pending-Settlement 1 1 Archived Settled 1 2 Settled 1 3 Pending Credit 1 4 Credited 1 5 Development Notes on Audit IDs and Transaction IDs • Audit IDs can be viewed using the Skipjack Report Manager. For more information about using the Report Manager see the Skipjack Merchant Reporting Guide. Page 222 2009 Skipjack Financial Services Skipjack Integration Guide Appendix N: Test Cards Used with Development Accounts The test credit cards (virtual test cards) listed below can be used with the Skipjack Test Accounts for the Payment Processors listed for integration testing. NOTE 1: Skipjack Merchant Services does not support testing within PRODUCTION ACCOUNTS using these test card numbers! Use only LIVE cards for PRODUCTION TESTING. NOTE 2: Use the Test Cards at your own risk. Usage is governed by the Test Card usage policies of each respective Payment Processors/Card Issuer. Do not use these Test Cards for any other purposes than is permitted by the respective Test Card usage policies. Test Cards for TSYS and Global as Payment Processor Test Account Number and Expiry Date TSYS (Vital) Global 4445999922225 (Visa) Expiry Date: Any Future Date 4003000123456781 (Visa) 5499990123456781 (MasterCard) Expiry Date: Any Future Date 341111597242000 (American Express) Expiry Date:12/06 Test AVS Street Number and Street Name 8320 (Do not submit Street Name) Any 4 Digits Test AVS Zip Code 85284 303292010 CVV 999 123 CID =UNKNOWN with AMEX Global will not reject an invalid CVV2 on a test account, however a return code describing the CVV2 code comparison will be returned. Maximum Transaction Amount $150.00 $10.99 Any amount above this is Declined. Usage Notes None Global Test Accounts are not automatically issued by Skipjack Financial Services. Contact Skipjack Technical Support for special setup requirements. Page 223 2009 Skipjack Financial Services Skipjack Integration Guide Test Cards for Fifth Third Processing Solutions (FTPS) as Payment Processor Visa MasterCard American Express Discover JCB 4445222299990007 Expiry Date: 12/14 Amount =$1.00 Expected Response: APPROVAL 5444009999222205 Expiry Date: 12/14 Amount =$1.00 Expected Response: APPROVAL 341111597242000 Expiry Date: 12/14 Amount:? 622126004598744 Expiry Date: 12/14 Amount:? 3530111333300000 Expiry Date: 12/14 Amount:? 4445222299990007 Expiry Date: 12/14 Amount =$1.02 Expected Response: DECLINE 5444009999222205 Expiry Date: 12/14 Amount =$1.02 Expected Response: DECLINE Test AVS Street Number and Street Name and Street Code 4445222299990007 Expiry Date: 12/15 ZIP Code” 45201 Street Name: Any Amount =$0.00 Expected Response: APPROVAL with AVS=A ? ? ? ? Test CVV2 4445222299990007 Expiry Date: 12/13 Amount =$1.22 CVV=154 Expected Response: APPROVAL with CVV2=M (Match) ? ? ? ? Test Account Number and Expiry Date Page 224 2009 Skipjack Financial Services Skipjack Integration Guide Appendix O: Notes for Processing Level II and Level III Data The following application development and integration details apply to processing Level III transaction data. NOTE: For more information about Level II and Level III transaction processing requirements, see the reference document Skipjack Level II and III Transaction Overview Guide. • Level III transaction processing requires customized Skipjack Account settings and Merchant Account Provider Account settings. Contact Skipjack Financial Services Customer Support if you need to set up a new or existing Skipjack Account with Level III transaction processing privileges. • Be sure to contact Skipjack Financial Services and your Merchant Account Provider early in your development process to arrange for the necessary Skipjack account configuration settings needed to process Level II and III transactions. • Required Level I data must be sent in each Level II or Level III transaction. • Level II and III are available for Retail, E-commerce, and MOTO (Mail Order, Telephone Order) accounts on the Skipjack Transaction Network according to the Processors supported. Please see the “Payment Processors Supported by Skipjack Financial Services” section for more details about supported processors. • In order to process American Express and Discover transactions (Level I transactions only) you require a separate Skipjack Account setup for these card types. Level II is supported for American Express and Discover. Level III transactions are not supported for American Express or Discover cards. • If you wish to process American Express or Discover card transactions (for Level I transactions) you require a separate Skipjack Account for this purpose. Note that Level II and III transactions are not supported for American Express (AMEX) or Discover • Only the Skipjack Authorize method applies to Level II and III. (Other Skipjack transaction processing methods described in the Skipjack Integration Guide cannot apply to Level II or III transactions.) • Level III orderstring details do not appear in the Reports, therefore Skipjack Financial Services suggest always sending the Level I orderstring in addition to the Level III orderstring. Page 225 2009 Skipjack Financial Services Skipjack Integration Guide Appendix P: Usage Notes for the Enhanced TSYS Credit Card Processing Features The following details apply to transactions processed using the enhanced functions when using TSYS as the Payment Processor. The enhancements to the TSYS credit card processing platform include the following features. Feature Description Balance Inquiry Allows the remaining balance of the card to be determined, for Stored Value (Prepaid) credit cards only. Card Authentication (Also known as Preauthorization, Preauth, Zero Dollar Authorization) Allows the validation of card without affecting available credit limit on the card. Soft Indicators Provides additional information about transactions which are printed on the cardholder’s account statement. Transaction Reversal Allows previously processed credit card transactions to be reversed. Quasi- Cash Permits cash-like transactions or transactions that are directly convertible to cash (such as gaming chips and tokens) to be processed. Setting Skipjack Merchant Account Settings All of the enhanced functions available when using TSYS as the Payment Processor require appropriate settings in the Skipjack Merchant Account Settings to enable these features. For new Skipjack accounts these settings should be properly configured by Skipjack Customer Support representative. However, for existing Skipjack Merchant Accounts users may need to set the required settings to enable these features using the Merchant Register. This is permitted by users with the appropriate account permissions. If you determine that you do not have the permissions required to edit the Skipjack Account settings, please contact Skipjack Financial Services Customer Support for assistance. Page 226 2009 Skipjack Financial Services Skipjack Integration Guide Changing the Merchant Account Setup Options to Use TYSY Enhanced Functions NOTE: This procedure requires users to have access rights in the Merchant Account to edit their account settings. Contact Skipjack Financial Services Support if you require these changes and you do not have the appropriate permissions. 1. Login to the Skipjack Merchant Account at https://secure.skipjack.com. 2. Enter the appropriate credentials into each form field. Ensure you are using the correct login credentials for either the Live or Developer environments. 3. Select the Live or Developer radio button, as appropriate. 4. Use the Sales Summary and/or Vendor Summary screens to navigate to and select the account you wish to change by using the radio button beside the account you wish to edit. 5. Select the Edit Account button on the bottom of the screen. 6. Scroll down the page to the section listing the features, as shown below. Select or de-select the appropriate check-boxes to enable or disable the features as desired. NOTE: You cannot use Card Authentication (also referred to as Preauth or Zero Dollar Authorization), Reversal, or Balance Inquiry features when using Quasi-Cash functionality, otherwise errors will be returned and the transactions will not be Approved. 7. Select the Submit button to make the changes take immediate effect. Page 227 2009 Skipjack Financial Services Skipjack Integration Guide Developer Notes about the TSYS Platform Enhanced Features The following development and usage notes apply to the TSYS Enhanced features. • To use the enhanced features for TSYS credit card processing requires that they must first be properly configured (enabled) in the Skipjack Merchant Account Register as described above in the “Changing the Merchant Account Setup Options to Use TYSY Enhanced Functions” section. • All transactions must be properly formatted and submitted using the AuthorizeAPI as described in the “Authorize and AuthorizeAPI Methods” section. • Reversals are submitted by specifying the Unqtransactionid variable with the value equal to the TransactionId of the transaction to be reversed. If you submit an invalid TransactionId you will receive a szReturnCode = -108 error. • For Reversals the transaction amount used for the Reversal must be identical to the original transaction amount otherwise the szReturnCode = -57 error will be returned. • When Reversals are successful the Approval Code of the Reversal is the same code as the original authorization. If the Reversal is unsuccessful, then the Approval Code will be different than the original authorization. • Soft Indicator (Soft Descriptor) information is displayed on the cardholder`s statement and in abbreviated format in the response for the transaction. Commonly this field is used to display the Doing Business As (DBA) name of the business to better identify the transactions to customers and mitigate chargebacks and disputed transactions. Note that the Soft Indicator data cannot be included in Skipjack Reports. • Balance Inquiry can be performed for Visa and MasterCard Prepaid credit cards only and can be used to report the balances on Stored Value (Prepaid) credit cards. The return values received will depend on the configuration settings and account permissions set by your Payment Processor and/or credit card issuer. • Quasi-Cash is only supported for Visa, MasterCard, and Diners Club credit cards. • Quasi-Cash transaction processing requires a separate Skipjack Account and this feature must be properly configured in the Skipjack Merchant Account Register. • Preauthorization (Zero Dollar Authorizations) allows a credit card to be validated without incurring any charges to the card or impacting the card`s credit limit. Page 228 2009 Skipjack Financial Services Skipjack Integration Guide Appendix Q: Usage Guidelines for Using Paymentech as Payment Processor The following usage details provide additional information that applies to transaction processing when using Paymentech as your Payment Processor. • Post transactions only to the appropriate URLs. The URLs for Paymentech (and other Advanced Processors) are different than the URLs used for posting transactions for many other Payment Processors. For posting locations see the “Post-Back Locations for Authorize Method” section for more details. (Paymentech posting URLs are shown with yellow fill in the table). • The OrderDescription may be a maximum of 22 alphanumeric characters. See “Transaction Requests for Authorize and AuthorizeAPI” section for a detailed description of the OrderDescription variable. • OrderNumber can be a maximum of 22 alphanumeric characters and must be unique per Settlement Batch, otherwise a Decline will be returned. • The Country variable is a Required variable for Authorize/Authorize API when using Paymentech as your Payment Processor. For the permitted values for the Country and rtCountry variables, see the “Appendix A: Permitted Country Code Values” section for usage details. • The rtCountry variable is a Required variable for Add or Edit Recurring Payment methods when using Paymentech as the Payment Processor. For the permitted values for the Country and rtCountry variables, see “Appendix A: Permitted Country Code Values” section for usage details. • Batch Close Time and Batch Processing Time on the Skipjack Account must be set to at least 1 hour apart. By default, this is automatically set on your Skipjack Account by Skipjack Financial Services and should not be changed. However, this setting may be changed by those users (Merchant Accounts) who have the appropriate access privileges and this may be required in special cases. Failure to adhere to this interval restriction may result in Settlement issues. Page 229 2009 Skipjack Financial Services Skipjack Integration Guide Setting the Batch Settlement Preferences for Paymentech Salem The Batch Close Time and Batch Process Time must be set to at least 1 hour apart when using Paymentech Salem as your Payment Processor. Use the steps below to configure the Batch Settlement Preferences for the Merchant Account. 1. Login to the Merchant Account at https://secure.skipjack.com and use the Skipjack Account credentials supplied by Skipjack Financial Services. 2. Click on the Batch Settlement Preferences button located in the bottom section of the Account Summary to display the Batch Settlement Preferences page, displayed below. 3. Use the appropriate drop-down controls to set the Batch Close Time and Batch Process Time to be at least 2 hours apart to prevent duplicate transaction settlement and therefore charging the Customer twice for a single transaction. 4. Select the Submit button to make the changes active. 5. Use your Web browser’s Back button to return to previous pages to continue working or select the Exit link to log out of the Merchant Register. NOTE: If you are not able to access Batch Settlement Preferences page, you do not have the required account permissions and you must contact Skipjack Financial Services Customer Support to have this configuration change applied to your Skipjack Merchant Account. Page 230 2009 Skipjack Financial Services Skipjack Integration Guide Appendix R: Skipjack Variable Mapping Selectable Variables The variables listed in the Variable Name column are available for use by your application and can be posted to the Skipjack when the transaction is processed. These variables can be included in the email response and are accessible/visible via the Skipjack Merchant Register and Reporting tool in the manner described below. Required Fields Optional Fields User-Defined Fields Variable Name E-mail Template Variable Register Display Reporting Selection Reporting Output If you are injecting this variable: Use this variable in your email template to display it in the email: The variable will be displayed in the register as the following: Select this field in the reporting tool to display the variable: The variable will be displayed in the reporting tool as follows: sjName <BillToName> Customer Customer Name Customer Name Email <CustomerEmail> (Bill to) Email Address Customer Email Customer Email Streetaddress <BillToAddress> (Bill to) Customer Customer Address Customer Address City <BillToCity> (Bill to) Customer Customer City Customer City State <BillToState> (Bill to) Customer Customer State Customer State Zipcode <BillToZipCode> (Bill to) Customer Customer Zip Code Customer Zip Code Accountnumber Not Available Card Type / VISA Credit Card Type / Last 5 Digits Credit Card Type / Last 5 Digits Month Not Available Not Available Not Available Not Available Year Not Available Not Available Not Available Not Available Serialnumber Not Available Not Available Not Available Not Available Transactionamount <TransactionAmount > Amount Transaction Amount Transaction Amount Orderstring <OrderString>, <CreditString> Order Detail Item String Details Item String Details Shiptophone <ShipToPhone> (Ship to) Phone Number Ship-to Phone Ship-to Phone Ordernumber <OrderNumber> Order Number Order Number Order Number Streetaddress2 <BillToAddress2> Not Available Customer Address Customer Address Streetaddress3 <BillToAddress3> Not Available Customer Address Customer Address Streetaddress4 <BillToAddress4> Not Available Customer Address Customer Address Country <BillToCountry> (Bill to) Country Customer Country Customer Country Phone <BillToPhone> (Bill to) Phone Number Customer Phone Customer Phone Page 231 2009 Skipjack Financial Services Skipjack Integration Guide Fax <BillToFax> Not Available Customer Fax Customer Fax Shiptoname <ShipToName> (Ship to) Customer Ship-to Name Ship-to Name Shiptostreetaddress <ShipToAddress> (Ship to) Customer Ship-to Address Ship-to Address Shiptostreetaddress2 <ShipToAddress2> Not Available Ship-to Address Ship-to Address Shiptostreetaddress3 <ShipToAddress3> Not Available Ship-to Address Ship-to Address Shiptostreetaddress4 <ShipToAddress4> Not Available Ship-to Address Ship-to Address Shiptocity <ShipToCity> (Ship to) Customer Ship-to City Ship-to City Shiptostate <ShipToState> (Ship to) Customer Ship-to State Ship-to State Shiptozipcode <ShipToZipCode> (Ship to) Customer Ship-to Zipcode Ship-to Zipcode Shiptocountry <ShipToCountry> (Ship to) Country Ship-to Country Ship-to Country Shiptofax <ShipToFax> Not Available Ship-to Fax Ship-to Fax Cvv2 Not Available CVV2 CVV2 Status CVV2 Status Comment <Comment> Comment Comment Comment udf1-udf30 <UserDefinedFields> UDF1-UDF30 User Defined Fields udf1-udf30 Variables Generated During Transaction Processing The variables listed in the Variable Name column are generated dynamically by Skipjack when the transaction is processed. These variables can be included in the e-mail response and are accessible/visible via the Skipjack Merchant Register and Reporting tool in the manner described below. Variable Name E-mail Template Variable Register Display Reporting Selection Reporting Output If this variable is generated by Skipjack: Use this variable in your email template to display it in the email: The variable will be displayed in the register as the following: Select this field in the reporting tool to display the variable: The variable will be displayed in the reporting tool as follows: Authorization Code <AuthorizationNumbe r> Auth Code Approval Code Approval Code Merchant Account # Not Available Account Not Available Not Available Date and time of Transaction <TransactionDate> Transaction Date Transaction Date Transaction Date IP Address of interface user Not Available IP Address From Computer IP From Computer IP Status of the transaction <AuthorizationRespo nse> Status Transaction Status Transaction Status State of the transaction Not Available Not Available Transaction State Transaction State Address Verification results <AuthorizationRespo nse> AVS AVS Status AVS Status Merchant Name <MerchantName> Not Available Not Available Not Available Page 232 2009 Skipjack Financial Services Skipjack Integration Guide Merchant Phone Number <MerchantPhone> Not Available Not Available Not Available Merchant Email <MerchantEmail> Not Available Not Available Not Available Audit ID Not Available Not Available Audit ID Audit ID Transaction ID <TransId> Not Available Transaction ID Transaction ID Invoice Number Not Available Not Available Invoice Number Invoice Number Settlement Batch Number Not Available Not Available Batch Number Batch Number Sales Person Number Not Available Not Available Sales Person Number Sales Person Number Commercial Card Indicator Not Available Not Available Commercial Card Indicator Commercial Card Indicator Amount (Adjustment) Not Available Not Available Amount (Adjustment) Amount (Adjustment) Amount (Discount) Not Available Not Available Amount (Discount) Amount (Discount) Amount (Net) Not Available Not Available Amount (Net) Amount (Net) Amount (Original) Not Available Not Available Amount (Original) Amount (Original) Amount (Shipping) Not Available Not Available Amount (Shipping) Amount (Shipping) Safe Status Not Available Not Available Safe Status Safe Status Purchase Order Number Not Available Not Available Purchase Order Number Purchase Order Number Transaction Info Not Available Not Available Transaction Info Transaction Info Page 233 2009 Skipjack Financial Services Skipjack Integration Guide Appendix S: Master Error Code Table This table lists the error codes returned for all transactions types submitted to the Skipjack Transaction Network. szReturnCode applicable to Authorize/AuthorizeAPI Value Issue/Error Type Reason and Suggested Remedial Action 1 Success Valid data received by the Skipjack Transaction Network. Authorization request was valid and successfully processed by the Skipjack Transaction Network. 0 Communication Failure Error in Request and Response at IP level. Use the Get Transaction Status method to determine the status for the previous transaction and retry transaction request. -1 Error in request Data was not received intact by the Skipjack Transaction Network. Use the Get Transaction Status method to determine the status for the previous transaction and retry transaction request. -35 Invalid credit card number Credit card number does not comply with the Mod10 check or the card number not within the BIN range for the card type and the transaction was not processed by the Skipjack Transaction Network. Resubmit the transaction with a valid credit card number. -37 Merchant Processor Unavailable Skipjack Transaction Network is unable to communicate with the Payment Processor. Use the Get Transaction Status method to determine the status for the previous transaction and retry transaction request. -39 Length or value of HTML Serial Number Invalid serial number. Check HTML Serial Number length and that it is a correct and valid number. Confirm you are sending your transaction request to the correct environment (Development or Production). The Make Developer Serial Number a required field option is selected for the Skipjack account but the Developer Serial Number was not sent in the transaction request. . -51 Length or value of zip code The value or length for billing zip code is incorrect. -52 Length or value in shipto zip code The value or length for shipping zip code is incorrect. Page 234 2009 Skipjack Financial Services Skipjack Integration Guide -53 Length or value in expiration date The value or length for credit card expiration month is incorrect. -54 Length or value of month or year of credit card account number The value or length of the month or year of the credit card account number was incorrect. -55 Length or value in streetaddress The value or length or billing street address is incorrect. -56 Length or value in shiptostreetaddress The value or length of the shipping address is incorrect. -57 Length or value in transactionamount The length of the transaction amount must be at least 3 digits long (excluding the decimal place). For TSYS PIN-debit only this error code is returned when any amount other than the original transaction amount is attempted for a Reversal. -58 Length or value in Merchant Name Merchant Name associated with Skipjack account is misconfigured or invalid -59 Length or value in Merchant Address Merchant Address associated with Skipjack account is misconfigured or invalid -60 Length or value in Merchant State Merchant State associated with Skipjack account is misconfigured or invalid -61 Error length of value in shipto state. The value or length for shipping state/province is empty. -62 Error length or value in order string The value for length orderstring is empty. -64 Error invalid phone number The value for the phone number is incorrect. -65 Error empty sjname The value or length for billing name is empty. -66 Error empty e-mail The value or length for billing e-mail is empty. -67 Error empty street address The value or length for billing street address is empty. -68 Error empty city The value or length for billing city is empty. -69 Error empty state The value or length for billing state is empty. -70 Empty zipcode Zip Code field is empty. -71 Empty ordernumber Ordernumber field is empty. -72 Empty accountnumber Accountnumber field is empty -73 Empty month Month field is empty. -74 Empty year Year field is empty. -75 Empty serialnumber Serialnumber field is empty. -76 Empty transactionamount Transaction amount field is empty. -77 Empty orderstring Orderstring field is empty. -78 Empty shiptophone Shiptophone field is empty. -79 Length or value sjname The value or length for billing name is empty. -80 Length shipto name Error in the length or value of shiptophone. -81 Length or value of Customer City Error in the length or value of the Customer City . -82 Length or value of state The value or length for billing state is empty. -83 Length or value shiptophone The value or length for shipping phone is empty. Page 235 2009 Skipjack Financial Services -84 Duplicate ordernumber Skipjack Integration Guide There is already an existing pending transaction in the Skipjack Register sharing the posted Order Number. This error code is returned only when the Reject duplicate transactions based on order number option is enabled in the Skipjack account. -85 Airline leg info invalid Airline leg field value is invalid or empty. -86 Airline ticket info invalid Airline ticket info field is invalid or empty -87 Point of Sale check routing number must be 9 numeric digits Point of Sale check routing number is invalid or empty. -88 Point of Sale check account number missing or invalid Point of Sale check account number is invalid or empty. -89 Point of Sale check MICR missing or invalid Point of Sale check MICR invalid or empty. -90 Point of Sale check number missing or invalid Point of Sale check number invalid or empty. -91 CVV2 Invalid or empty Make CVV a required field option is enabled in the Merchant Account Setup interface but no CVV code was sent in the transaction data. Resubmit the transaction with the CVV variable in the request string. -92 Approval Code Invalid Approval Code Invalid. Approval Code is a 6 digit code. -93 Blind Credits Request Refused Blind credit attempt failed. Enable Allow Blind Credits option on the Skipjack account and resubmit the transaction. -94 Blind Credits Failed option on the Skipjack account and resubmit the transaction. -95 Voice Authorization Request Refused Voice Authorization option must be enabled on the Skipjack Merchant Account. -96 Voice Authorizations Failed option on the Skipjack account and resubmit the transaction. -97 Fraud Rejection Violates Velocity settings set via the Preferences screen for the Skipjack account. Change the Fraud Settings values and resubmit the transaction. C -98 Invalid Discount Amount Discount Amount must be 0 to 12 digits and include a decimal. -99 Point of Sale PIN Debit Pin Block Debit-specific -100 Point of Sale PIN Debit Invalid Key Serial Number Debit-specific -101 Invalid Authentication Data Data for Verified by Visa/MC Secure Code is invalid. -102 Authentication Data Not Allowed Reserved for future use. -103 Point of Sale Check Invalid Birth Date Point of Sale check dateofbirth variable contains a birth date in an incorrect format. Use MM/DD/YYYY format for this variable. Page 236 2009 Skipjack Financial Services Skipjack Integration Guide -104 Point of Sale Check Invalid Identification Type Point of Sale check identificationtype variable contains an identification type value which is invalid. Use the single digit value where Social Security Number=1, Drivers License=2 for this variable. -105 Invalid trackdata Track Data is in invalid format. -106 Point of Sale Check Invalid Account Type Expected values are 0 or 1. -107 Point of Sale PIN Debit Invalid Sequence Number The invoicenumber must be 3 digits long. This error indicates an empty string or a string of more or less than three digits was passed. -108 Invalid Transaction ID For TSYS PIN-based debit and TSYS credit card transactions the Unqtransactionid is not valid. Resubmit transaction using the correct Unqtransactionid. -109 Invalid From Account Type Expected values are 1 or 2. -110 Point of Sale Error Invalid To Account Type Expected values are 1 or 2. -112 Point of Sale Error Invalid Auth Option Options selected for account type are incorrect (must be in the range 1 to 8) or incorrect for the protocol type. -113 Point of Sale Error Transaction Failed The transaction was not processed correctly. Please freeze the transaction and reprocess. -114 Point of Sale Error Invalid Incoming ECI The ECI value being passed to Skipjack is invalid. Expected values are 1,2,5,6,7. -115 Point of Sale Check Invalid Check Type The check type is outside of the allowable range – it must be 1 to 5. -116 Point of Sale Check Invalid Lane Number Point of Sale Check lane or cash register number is invalid. Use a valid lane or cash register number that has been configured in the Skipjack Merchant Account. -117 Point of Sale Check Invalid Cashier Number The salespersonnumber must be less than 8 and greater 0. -118 Invalid POST URL The URL posted to is incorrect. Confirm URL that is being posted and resubmit the transaction. -119 General Error Batch upload process failed for an unspecified reason. -120 Invalid Record Count Reserved for future use. -121 Invalid file boundary The end of file boundary was not detected by the batch file upload process. This indicates that the transmission of the batch file was interrupted. -122 Not Allowed This Skipjack account does not accept batch file uploads. C -123 Developer Serial Number Invalid Reserved for future use. -124 Invalid File type The batchType request variable for a Batch File Upload can be either 0 (authorization) or 1 (others). Any other value returns this error. -125 Invalid Debit Batch Number Reserved for future use. Page 237 2009 Skipjack Financial Services Skipjack Integration Guide -126 Point of Sale Error Card Authentication Not Allowed Applies to those using TSYS as the Payment Processor. Ensure that the Card Authentication check-box is selected in the Skipjack Merchant Account settings screen to enable this feature. -127 Point of Sale Error Balance Inquiry Applies to those using TSYS as the Payment Processor. Ensure that the Balance Inquiry check-box is selected in the Skipjack Merchant Account settings screen to enable this feature. -128 Point of Sale Error Reversal Not Allowed Applies to those using TSYS as the Payment Processor. Ensure that the Reversal check-box is selected in the Skipjack Merchant Account settings screen to enable this feature. szErrorCode Errors applicable to Change Status Method 0 Success Change status request was successful. -1 Invalid Command Bad parameter passed OR Merchant Account not active OR change status not allowed by protocol OR invalid permissions to perform requested action OR Merchant Account does not allow change status to be performed. -2 Parameter Missing Required parameter not sent. -3 Failed retrieving response No transaction was found to perform a change on OR Multiple transactions were found OR the original transaction could not be loaded OR the original transaction is frozen or archived OR a Split Settle request was performed on a transaction that was the result of a previous split settle request OR something else bad happened to the request. -4 Invalid Status Merchant Account does not allow change status to be performed. -5 Failed reading security flags Error loading merchant information to perform change status. -6 Developer Serial number not found The developer serial number passed was not recognized. -7 Invalid Serial Number The serial number passed was not recognized. -8 Authorization Status Unknown; Perform Get Status The real time authorization performed during the change status request resulted in an unexpected error. Please perform a Get Transaction Status request to determine the status of the request. (Only applies to Authorize, AuthorizeEx, AuthorizeAdditional, and AuthorizeAdditionalEx requests). -51 Invalid Amount <Not used> szErrorCode Errors applicable to Get Transaction Status Method -1 Invalid Command Request was successful. -2 Parameter Missing Required parameter not sent. -3 Failed retrieving response Error getting transaction status. -4 Invalid Status <Not used> -5 Failed reading security flags <Not used> -6 Developer serial number not found The developer serial number passed was not recognized. -7 Invalid Serial Number The serial number passed was not recognized. Page 238 2009 Skipjack Financial Services Skipjack Integration Guide szErrorCode Errors applicable to Add Recurring Payments Method 0 Success Request was successful. -1 Invalid Command Merchant does not allow recurring payments. -2 Parameter Missing Required parameter not sent. -3 Failed retrieving message Error adding recurring payment. -4 Invalid Status <Not used> -5 Failed reading security flags <Not used> -6 Developer Serial number not found The developer serial number passed was not recognized. -7 Invalid serial number The serial number passed was not recognized. -8 Expiration year is not 4 characters Expiration year is not 4 characters. -9 Credit card has expired Credit card has expired. -10 Invalid starting date Invalid starting date. -11 Failed Adding Recurring Payment Merchant does not allow recurring payments OR Failed Adding Recurring Payment. -12 Invalid Recurring Payment frequency Invalid Recurring Payment frequency. -15 Failed <Not used> -16 Invalid expiration month Invalid expiration month. szErrorCode Errors applicable to Edit Recurring Payments Method 0 Success Request was successful. -1 Invalid Command Merchant does not allow recurring payments. -2 Parameter Missing Required parameter not sent. -3 Failed retrieving message Error editing recurring payment. -4 Invalid Status <Not used> -5 Failed reading security flags <Not used> -6 Developer Serial number not found The developer serial number passed was not recognized. -7 Invalid serial number The serial number passed was not recognized. -8 Expiration year is not 4 characters Expiration year is not 4 characters. -9 Credit card has expired Credit card has expired. -10 Invalid starting date Invalid starting date. -14 Failed editing of Recurring Payment Failed editing of Recurring Payment. -16 Invalid expiration month Invalid expiration month. szErrorCode Errors applicable to Delete Recurring Payments 0 Success Request was successful. -1 Invalid Command Merchant does not allow recurring payments. -2 Parameter Missing Required parameter not sent. -3 Failed retrieving message Error deleting recurring payment. -4 Invalid Status <Not used> -5 Failed reading security flags <Not used> Page 239 2009 Skipjack Financial Services Skipjack Integration Guide -6 Developer Serial number not found The developer serial number passed was not recognized. -7 Invalid serial number The serial number passed was not recognized. -13 Failed Delete of Recurring Payment Failed Delete of Recurring Payment. -15 Failed <Not used> Page 240