1. API
Merchant Warrior API 2.0
  • API
    • Getting Started
    • Guides
      • Xero Connection
      • Xero Custom URL
      • wooCommerce PayID
      • Middleware
      • Hostaway
    • Direct API
      • getAccessToken
      • processCard
      • processAuth
      • processCapture
      • processBatch
      • retrieveBatch (CSV)
      • retrieveBatch (JSON Response)
      • retrieveBatch (JSON Notify)
      • refundCard
      • queryCard
      • processDDebit
      • processDDebitAuth
      • processVoid
      • verifyCard
      • queryDD
      • queryBIN
      • getSettlement
      • checkEnrollment
      • checkPARes
      • addBlacklistedCard
      • removeBlacklistedCard
      • queryBlacklistedCard
      • simulateNotify
      • getSurcharge
    • 3DS 2.0
      • Introduction
      • 3DS 2 Authentication Flows
      • Step 3 - 3DS Method Data
      • Step 5 - Challenge
      • Step 1 - getAccessToken
      • Step 2 - checkEnrollment
      • Step 4 - checkTDSAuth
      • Step 6 - checkPARes
      • Step 7 - processCard
      • Authorization Only processCard
    • PayLink
      • Introduction
      • Generate PayLink
    • PayID
      • Introduction
      • Create
      • Transaction
      • Get
      • Update
      • Status
      • List
      • Refund
    • PayTo
      • Introduction
      • Simulator
      • Certification
      • Actions and Statuses
      • Agreements
        • Agreements
        • Notifications
        • Create Agreement
        • Get Agreement
        • Amend Agreement
        • Amend Agreement Status
        • Recall Agreement Action
      • Payments
        • Payments
        • Notifications
        • Create Payment
        • Get Payment
        • Get Payment Status
        • Search Payments
    • Confirmation of Payee
      • Introduction
      • Sandbox Simulations
      • Validate
    • POS
      • Introduction
      • processPOS
      • refundPOS
      • voidPOS
      • deregisterPOS
    • Web SDK
      • Introduction
      • Usage
      • getAccessToken
      • Options
      • Initiate
      • Payframe Functionality
      • Middleware
      • addCard
    • Payframe
      • Introduction
      • Usage
      • Constructor
      • tdsCheck
      • Additional Functions
      • Styling
      • processCard
      • processAuth
    • Digital Wallets
      • Apple Pay Prerequisites
      • Google Pay Prerequisites
      • Web SDK
      • Manual Integration
      • processCard
      • addCard
      • getMerchantSession
      • decryptApplePayToken
    • Token Payments
      • Introduction
      • Key Management
      • addCard
      • removeCard
      • cardInfo
      • changeExpiry
      • processCard
      • processAuth
    • Batch
      • Introduction
      • Card Batches
      • Token Batches
      • Direct Debit Batches
    • Forter
      • Introduction
      • Testing
    • Payouts
      • Introduction
      • Sandbox Simulations
      • Notifications
      • Create Payouts
      • Get Payout Status
      • Resend Notifications
      • Get Payout Transaction Status
      • Get Payout Transaction Notify
    • Partner API
      • Introduction
      • addMerchant
      • updateMerchant
      • checkMerchant
    • Notifications
      • Notifications
  • Hosted Payment Page
    • processCard
  1. API

Getting Started

Introduction#

If you do not already have an account with Merchant Warrior, first you will need to sign up for our services.
Once your account has been set up, navigate to Barracks and select Settings from the lefthand navigation menu. Near the top of this page there's a section labelled "Direct API" under "Merchant Settings". This contains three key pieces of information you will need to utilize Merchant Warrior services.
1.
Your Merchant UUID and API Key. These are two identifiers we use to check that a request is coming from you, and are included as parameters in most API requests.
2.
Your API Passphrase. This is the final primary aspect of identity verification and must be kept hidden from the public. If you believe your passphrase may have been compromised, we recommend that you change it as soon as possible.

Requests#

API requests are submitted to Merchant Warrior API services using POST, and must be performed over HTTPS. These POST requests will be directed at https://api.merchantwarrior.com/[endpoint]/, where [endpoint] is detailed in the introduction to each API section. Requests made as part of sandbox testing, https://base.merchantwarrior.com/[endpoint]/ is used instead.
If you would prefer to submit JSON requests and receive JSON responses you will need to submit two additional headers with your requests:
MW-API-VERSION: 2.0
Content-Type: application/json
It is a requirement to submit requests using a secure version of TLS. The MW platform currently supports a minimum TLS version of 1.2.

Hash Generation#

Verification hashes are used to prove to MW that the request(s) being sent have been generated by you, and not a malicious third party who may have discovered your merchantUUID and apiKey. Even if a malicious third party was to discover the request data you have sent, they would not be able to create requests without knowing your API Passphrase. Your API Passphrase can be modified in the MW administration interface.

Transaction Type Hash#

To generate a transaction type hash, concatenate the following fields:
md5(apiPassphrase) + merchantUUID + transactionAmount + transactionCurrency
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)123456789abcd10.00AUD
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcd10.00aud
Step 3 (md5):
d941117d8774b12e218650542af6af56

Recurring Type Hash#

To generate a recurring type hash, You should consider it for different types:
1, Add Recurring With a Plan
md5(apiPassphrase) + merchantUUID + recurringPlanUUID
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(passphrase)123456789abcdABCD**
Step 2 (convert to lower):
md5(passphrase)123456789abcdabcd**
Step 3 (md5):
d941117d8774b12e218650542af6af56
2, Add Recurring Without a Plan
md5(apiPassphrase) + merchantUUID + paymentAmount + paymentCurrency
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(passphrase)123456789abcd10.00 AUD
Step 2 (convert to lower):
md5(passphrase)123456789abcd10.00 aud
Step 3 (md5):
d941117d8774b12e218650542af6af56
3, Add Recurring Plan
md5(apiPassphrase) + merchantUUID + paymentAmount + paymentCurrency
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(passphrase)123456789abcd10.00 AUD
Step 2 (convert to lower):
md5(passphrase)123456789abcd10.00 aud
Step 3 (md5):
d941117d8774b12e218650542af6af56
4, Other Recurring Methods
md5(apiPassphrase) + merchantUUID + recurringUUID
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(passphrase)123456789abcd451232ABCD**
Step 2 (convert to lower):
md5(passphrase)123456789abcd451232abcd**
Step 3 (md5):
d941117d8774b12e218650542af6af56
5, Other Recurring Plan Methods
md5(apiPassphrase) + merchantUUID + recurringPlanUUID
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(passphrase)123456789abcd451232ABCDPLAN**
Step 2 (convert to lower):
md5(passphrase)123456789abcd451232abcdplan**
Step 3 (md5):
d941117d8774b12e218650542af6af56

Void Type Hash#

To generate a void type hash, concatenate the following fields:
md5(apiPassphrase) + merchantUUID + transactionID
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)123456789abcd10.00 AUD
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcd10.00 aud
Step 3 (md5):
d941117d8774b12e218650542af6af56

Query Type Hash#

To generate a query type hash, concatenate the following fields:
md5(apiPassphrase) + merchantUUID + transactionID OR transactionReferenceID
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)123456789abcd1336-20be3569-b600-11e6-b9c3-005056e109e0
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcd1336-20be3569-b600-11e6-b9c3-005056e109e0
Step 3 (md5):
d941117d8774b12e218650542af6af56

Custom Fields Verification Hash#

To generate the custom fields hash, concatenate, convert to lowercase & md5 the following fields:
md5(apiPassphrase) + custom1 + custom2 + custom3
Step 1 (concatenate):
md5(apiPassphrase)Custom 1Custom 2 Custom 3
Step 2 (convert to lower):
md5(apiPassphrase)custom 1custom 2 custom 3
Step 3 (md5):
d941117d8774b12e218650542af6af56
Be sure to decode the custom fields first - e.g. "Custom+Field+1" becomes "Custom Field 1".

DDNotify File Hash#

To generate a ddNotify file hash, concatenate the following fields:
md5(apiPassphrase) + md5_file(zipFile)
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)md5_file(testFile.zip)
Step 2 (convert to lower):
md5(apiPassphrase)md5_file(testfile.zip)
Step 3 (md5):
d941117d8774b12e218650542af6af56

Batch File Hash#

To generate a batch file hash, simply generate the md5 checksum of the batch file:
md5(batchFile)
As an example the md5 checksum of Batch.zip (containing your .csv) may be d41d8cd98f00b204e9800998ecf8427e

Batch URL Hash#

To generate a batch URL hash, concatenate the following fields:
md5(apiPassphrase) + merchantUUID + batchNotifyURL
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)123456789abcdhttps://www.mydomain.com/sample/notify.php
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcdhttps://www.mydomain.com/sample/notify.php
Step 3 (md5):
d941117d8774b12e218650542af6af56

Batch Response Hash#

To generate a batch Response hash, concatenate the following fields:
md5(apiPassphrase) + merchantUUID + batchUUID
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)123456789abcd1336583d3a953ce2d
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcd1336583d3a953ce2d
Step 3 (md5):
d941117d8774b12e218650542af6af56

Web URL Hash#

To generate a Web URL hash, concatenate the following fields:
md5(apiPassphrase) + merchantUUID + returnURL + notifyURL
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)123456789abcdhttps://www.mydomain.com/return.php**https://www.mydomain.com/notify.php**
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcdhttps://www.mydomain.com/return.php**https://www.mydomain.com/notify.php**
Step 3 (md5):
d941117d8774b12e218650542af6af56

302 Redirect and Post Notification Hash#

Transactions
To generate a verification hash used for the 302 Redirect and POST notification, concatenate the following fields:
md5(apiPassphrase) + hashSalt + merchantUUID + status + transactionID OR cardID
cardID is used for verifying an addCard response
The status and transactionID (or cardID) fields are both contained in the Redirect URL. Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)3x4mpl3s4lt123456789abcdApproved1336-20be3569-b600-11e6-b9c3-005056b209e0
Step 2 (convert to lower):
md5(apiPassphrase)3x4mpl3s4lt123456789abcdapproved1336-20be3569-b600-11e6-b9c3-005056b209e0
Step 3 (md5):
d941117d8774b12e218650542af6af56
Direct Debit Authorizatoins
To generate a verification hash used for the 302 Redirect and POST notification, concatenate the following fields:
md5(apiPassphrase) + merchantUUID + hashSalt + fingerprint
Step 1 (concatenate):
md5(apiPassphrase)123456789abcd3x4mpl3s4lt f0ab06f8d69d3dafa06a5abd45460ace
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcd3x4mpl3s4lt f0ab06f8d69d3dafa06a5abd45460ace
Step 3 (md5):
d941117d8774b12e218650542af6af56

BIN Hash#

To generate a BIN hash, concatenate the following fields:
md5(apiPassphrase) + merchantUUID + bin
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)123456789abcd512346
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcd512346
Step 3 (md5):
d941117d8774b12e218650542af6af56

Settlement Hash#

To generate a Settlement hash, concatenate the following fields:
md5(apiPassphrase) + merchantUUID + settlementFrom + settlementTo
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)123456789abcd2017-05-01 2017-05-02
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcd2017-05-01 2017-05-02
Step 3 (md5):
d941117d8774b12e218650542af6af56

PAY Link Response Hash#

To generate a PAY Link response hash, concatenate the following fields:
md5(apiPassphrase) + merchantUUID + status + transactionID
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)123456789abcdApproved 1336-20be3569-b600-11e6-b9c3-005056b209e0
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcdapproved 1336-20be3569-b600-11e6-b9c3-005056b209e0
Step 3 (md5):
d941117d8774b12e218650542af6af56

Partner Type Hash#

To generate a partner type hash, concatenate the following fields:
md5(apiPassphrase) + partnerUUID + merchantCompanyLegalName + merchantCompanyRegNumber
Once concatenated, convert everything to lowercase, and then md5 the string:
Step 1 (concatenate):
md5(apiPassphrase)123456789abcdTest.com ABC123456
Step 2 (convert to lower):
md5(apiPassphrase)123456789abcdtest.com abc123456
Step 3 (md5):
d941117d8774b12e218650542af6af56

MW-MESSAGEHASH Hash (Form)#

To generate a MW-MESSAGEHASH, Assuming the original request form is as follows:
array ('method' => 'verifyCard','merchantUUID' => '4f9d2b4321cd5','apiKey' => 'sxtsmdbi','transactionCurrency' => 'AUD','transactionProduct' => 'Test Product','paymentCardNumber' => '2223000000000007','paymentCardExpiry' => '0139','paymentCardName' => 'Bob Jones','custom1' => '565ixijray','custom2' => 'vb3smz3aja','custom3' => '54t8ggw56j','transactionReferenceID' => 'pqqwmu3yfw','customerState'=>'');
To generate a MW-MESSAGEHASH, make sure you have removed all the empty fields in your request
array ('method' => 'verifyCard','merchantUUID' => '4f9d2b4321cd5','apiKey' => 'sxtsmdbi','transactionCurrency' => 'AUD','transactionProduct' => 'Test Product','paymentCardNumber' => '2223000000000007','paymentCardExpiry' => '0139','paymentCardName' => 'Bob Jones','custom1' => '565ixijray','custom2' => 'vb3smz3aja','custom3' => '54t8ggw56j','transactionReferenceID' => 'pqqwmu3yfw');
Step 1 Sort the request array in alphabetical order:
array ('apiKey' => 'sxtsmdbi','custom1' => '565ixijray','custom2' => 'vb3smz3aja','custom3' => '54t8ggw56j','merchantUUID' => '4f9d2b4321cd5','method' => 'verifyCard','paymentCardExpiry' => '0139','paymentCardName' => 'Bob Jones','paymentCardNumber' => '2223000000000007','transactionCurrency' => 'AUD','transactionProduct' => 'Test Product','transactionReferenceID' => 'pqqwmu3yfw');
Step 2 Build the http query strings (Do not URL encode the query string):
apiKey=sxtsmdbi&custom1=565ixijray&custom2=vb3smz3aja&custom3=54t8ggw56j&merchantUUID=4f9d2b4321cd5&method=verifyCard&paymentCardExpiry=0139&paymentCardName=Bob Jones&paymentCardNumber=2223000000000007&transactionCurrency=AUD&transactionProduct=Test Product&transactionReferenceID=pqqwmu3yfw
Step 3 hmac("sha256",the whole string,passphrase) and convert to lower case:
9ae6750528916c7a6acc249b605f5a54a2c03afd63e436a1d2818440d56540fc

MW-MESSAGEHASH Hash (JSON)#

To generate a MW-MESSAGEHASH, simply calculate hmac("sha256", the entire json body (unaltered), passphrase) and convert to lower case:
9ae6750528916c7a6acc249b605f5a54a2c03afd63e436a1d2818440d56540fc
Note: The JSON body used in the hash must be exactly the same as you submit to the API endpoint. For example, all spaces, line breaks and brackets must be preserved.

MW-MESSAGEHASH Hash (GET)#

To generate a MW-MESSAGEHASH for GET requests, simply calculate hmac("sha256", URL path (excluding domain), passphrase) and convert to lower case:
Step1: hmac("sha256", "/payout/f1de2e42-4340-439f-87ae-76758b04ff0e/status", passphrase)
9ae6750528916c7a6acc249b605f5a54a2c03afd63e436a1d2818440d56540fc

Signature Hash#

This is used to verify the file came from Merchant Warrior.
sha256(sha256(passphrase) + uuid + signature)
901227365aef1e2a3b57c712ab017555706037a10bd47360bfc331be3c3c9d33

Secure Hash#

Assuming the original request is as follows:
array(
'method' => 'addBlacklistedCard',
'merchantUUID' => '4a6709137ff78',
'apiKey' => 'mtd7ge7s',
'cardName' => 'Bob Jones',
'cardNumber' => '5123456789012346',
'cardExpiryYear' => '21',
'cardExpiryMonth' => '05',
'otherParameter' => '',
);
To generate a secure hash, make sure you have removed all the empty fields in your request and the secureHash itself:
array(
'method' => 'addBlacklistedCard',
'merchantUUID' => '4a6709137ff78',
'apiKey' => 'mtd7ge7s',
'cardName' => 'Bob Jones',
'cardNumber' => '5123456789012346',
'cardExpiryYear' => '21',
'cardExpiryMonth' => '05',
);
Step 1 Sort the request array in alphabetical order:
**array(
'apiKey' => 'mtd7ge7s',
'cardExpiryMonth' => '05',
'cardExpiryYear' => '21',
'cardName' => 'Bob Jones',
'cardNumber' => '5123456789012346',
'merchantUUID' => '4a6709137ff78',
'method' => 'addBlacklistedCard',
);**
Step 2 Build the http query strings (Do not URL encode the query string):
apiKey=mtd7gedt&cardExpiryMonth=05&cardExpiryYear=21&cardName=Bob Jones&cardNumber=5123456789012346&merchantUUID=4a6709137ff78&method=addBlacklistedCard
Step 3 Concatenate the SHA256 value of your API passphrase to the end of the query string:
apiKey=mtd7gedt&cardExpiryMonth=05&cardExpiryYear=21&cardName=Bob Jones&cardNumber=5123456789012346&merchantUUID=4a6709137ff78&method=addBlacklistedCard&apiPassphrase=SHA256(apiPassphrase)
Step 4 (SHA256 the whole string):
93f756204a8b185630f13eebc9c3fc538831a2e788c91d50c9a3240509fee34d

Responses#

Responses will be received in XML or JSON formatting (depending on if the JSON headers have been sent)

    0
    ...
   ...
{
"responseCode":0,
"responseMessage":"...",
...
}
Details about the specific contents of each response can be found with the corresponding method in this documentation.
Response Codes
There are three possible types of responseCode.
If the responseCode is >= 0, the responseMessage field will either contain a preset error or, if applicable, the direct error response given by the provider or MW Vault.
responseCodeMeaning
< 0MW validation error
= 0Transaction/Operation was successful
> 0Transaction/Operation was declined or delayed by the provider or service
Response Messages
All MW validation errors will contain a three-digit code prefix at the beginning of the responseMessage. This code will allow you to determine what specifically caused the MWE validation error to be returned, and allow you to deal with it accordingly.
responseCodePrefixDescription
-3001Required field missing
-2002Invalid amount
-2003Invalid currency
-2004Invalid email
-2005Invalid name
-2006Invalid expiry
-2007Invalid card number
-1008Invalid auth details
-1009Invalid merchantUUID
-1010Invalid passphrase
-2011Invalid transactionID
-2012Invalid transaction
-2013Currency mismatch
-2014Invalid refund amount
-2015Refund exceeds transaction amount
-2016Transaction already reversed
-2017Invalid verification hash
View Responses
Please select the set of responses
Transaction Responses
Partner Responses
Token Responses
Recurring Responses
Transaction responseCode
In the table below, the "Status" column shows that the only time money will have left the customer's account is when a responseCode of 0 is returned. The "Fees" column shows which transaction types have fees applied to them. No fees are ever applied to declines that are caused by provider timeouts, provider errors (except valid declines), or MW declines (due to invalid data, etc).
StatusCodeDescriptionFees
Failed-7Transaction not permitted by schemeNo
Failed-6Two or more fields contain PANNo
Failed-5Retry not permitted by card issuerNo
Failed-4Internal MW error (contact MW support)No
Failed-3One of the required fields was not submittedNo
Failed-2One of the submitted fields was invalidNo
Failed-1Invalid authentication credentials suppliedNo
Success0Transaction ApprovedYes
Failed1Transaction could not be processed (server error)No
Failed2Transaction declined - contact issuing bankYes
Failed3No reply from processing host (timeout)No
Failed3Provider unavailable or incorrectly setupNo
Failed4Card has expiredYes
Failed5Insufficient FundsYes
Failed6Error communicating with bankNo
Failed7Bank rejected requestYes
Failed8Bank declined transaction - type not supportedYes
Failed9Bank declined transaction - do not contact bankYes
-10Transaction pendingNo
Transaction responseMessage
All MW validation errors will contain a three-digit code prefix at the beginning of the responseMessage. This code will allow you to determine what specifically caused the MWE validation error to be returned, and allow you to deal with it accordingly.
responseCodeCode PrefixDescription
-3001Required field missing
-2002Invalid amount
-2003Invalid currency
-2004Invalid email
-2005Invalid name
-2006Invalid expiry
-2007Invalid card number
-1008Invalid auth details
-1009Invalid merchantUUID
-1010Invalid passphrase
-2011Invalid transactionID
-2012Invalid transaction
-2013Currency mismatch
-2014Invalid refund amount
-2015Refund exceeds transaction amount
-2016Transaction already reversed
-2017Invalid verification hash
-2018Invalid rebillID
-2019Invalid rebill (rebill inactive)
-2020Invalid date
-2021Invalid date period
-2022Invalid interval
-2023Invalid capture amount
-2024Capture exceeds transaction amount
-2025Invalid batchUUID
-2026Field contains PAN
-2027Reference ID is not unique
-2028Invalid integratorUUID
-2029Permission error
-2030Token error
-2031Invalid BSB
-2032Invalid Account Number
-2033Invalid CSC
2034Transaction exceeds limit
-2035Invalid field
3036No reply from processing host
-4037System Error
-3038Request syntax could not be parsed
-2050Invalid accountType
-2051Invalid cardID
-2052Invalid paymentFrequency
-2053Invalid amountType
-2054Invalid countType
-2055Invalid recurringPlanUUID
-2056Invalid recurringUUID
1057Recurring bill is being processed. Try again.
1058Recurring bill is currently suspended
-2059recurringPlanName already exists
1060Recurring bill status is not suspended
2061Recurring plan will update shortly. Recurring bills still running
2065Daily transaction limit reached
-2068Card Not Accepted
Token responseCode
In the table below, the "Status" column shows that the only time that an operation can complete on a customer's token id is when a responseCode of 0 is returned.
StatusCodeDescription
Failed-7Verify Card is disabled for this provider
Failed-4Internal MW error (contact MW support)
Failed-3One of the required fields was not submitted
Failed-2One of the submitted fields was invalid
Success0Operation Successful
Failed1Requested card has been removed
Failed2Requested card has expired
Failed3Card removal from global vault not permitted
Failed4Account verification failed
Partner responseCode
In the table below, the "Status" column shows that the only time that an operation can complete is when a responseCode of 0 is returned.
addMerchant:
StatusCodeDescription
Failed-4Internal MW error (contact MW support)
Failed-3One of the required fields was not submitted
Failed-2One of the submitted fields was invalid
Success0Operation Successful
checkMerchant:
StatusCodeDescription
Failed-4Internal MW error (contact MW support)
Failed-3One of the required fields was not submitted
Failed-2Request reference is invalid
Failed-1Invalid authentication credentials supplied
Success0Merchant created
Failed1Merchant creation request pending
Failed2Merchant creation request declined
Failed3Merchant creation request failed
Partner responseMessage
All MW validation errors will contain a three-digit code prefix at the beginning of the responseMessage. This code will allow you to determine what specifically caused the MWE validation error to be returned, and allow you to deal with it accordingly.
responseCodeCode PrefixDescription
-3001Required field missing
-2004Invalid email
-2005Invalid name
-1008Invalid auth details
-2048Invalid timezone
-2049Invalid country code
-2035All the other validation errors
Recurring responseCode
In the table below, the "Status" column shows that the only time a recurring operation is successful is when a responseCode of 0 is returned.
StatusCodeDescription
Failed-4Internal MW error (contact MW support)
Failed-3One of the required fields was not submitted
Failed-2One of the submitted fields was invalid
Success0Operation Successful

Sandbox Testing#

Sandbox testing requests are made to https://base.merchantwarrior.com/[endpoint]/, where [endpoint] is described in the introduction to each API section.
Prior to using the test credit card numbers below, ensure that you are aware of the test provider you have been setup with. If you submit incorrect test card numbers to your test provider, your transactions will be rejected.
The test cards below are the only valid card numbers that can be used for testing with CBA, ANZ, NAB, Bendigo & BankWest
Card NumberCard Security CodeBrand
5456789012345670123MasterCard
2223000000000007123MasterCard Series 2
4123456789012349123Visa
3714496353110381234American Express
30123400000000123Diners Club
3528000000000007N/AJCB
Changing the expiry date in your request will change the transaction response. Below are a list of expiries with their response descriptions.
Expiry DateDescription
10/24Transaction approved
01/24Refer Card Issuer
04/24Pick Up Card
05/24Do Not Honour
02/25Invalid Transaction
04/25Invalid Card Number
05/25No Such Issuer
05/27Card Acceptor Contact Acquirer
01/28Lost Card
02/28No Universal Account/Closed Account
03/28Stolen Card
01/29Insufficient Funds
04/29Invalid Expiry Date
02/30Restricted Card
08/30Transaction Timed Out/Response Received Too Late
01/33Card Issuer Unavailable
02/33Transaction Cannot Be Completed
Any other expiry used will result in an Approved transaction response.
The test cards below are only valid card numbers that can be used for testing with Westpac, St. George & Bank of Melbourne .
Card NumberExpiry DateCVNDescription
456471000000000402/29847Visa Approved
516320000000000808/30070MC Approved
456471000000001202/25963Visa Expired
456471000000002005/30234Visa Low Funds ($10 credit limit)
516320000000001612/29728MC Stolen
456472000000003709/29030Visa Invalid CVV2
37600000000000606/302349Amex
34340000000001601/299023Amex Restricted
3643000000000706/32348Diners
3643000000001508/31988Diners Stolen
All OthersN/AN/AAll unknown cards are rejected with 42 - No Universal Account

Simulator#

Merchant Warrior has developed a simulation engine to enable your testing to be as comprehensive as possible. Please use these cards if you have been told that you are connected to the MW Simulator. The cards listed here will only work in the sandbox environment, and will not function in production.
These cards will all give the specified response. Any card name, expiry and CVN can be used with these cards, as long as they are valid for the card. eg. Amex cards must have a 4 digit CVN, all other cards must have 3 digits, and the expiry needs to be in the future.
00 - Approved
Card TypeCard Number
Visa Debit4111111111111111
Visa4815647610000007
Mastercard Debit5204740000001002
Mastercard5553697900000004
Mastercard2223000000000007
Amex377852136856480
Diners3027285593502909
Discover6011868764043133
JCB3530111333300000
06 - Error
Card TypeCard Number
Visa4293189100000008
Mastercard5163200000000008
Amex377852884860965
Diners3811683979228075
JCB3562350000000003
Discover6452418944930969
01 - Refer Card Issuer
Card TypeCard Number
Visa4123456789012349
Mastercard5200000009915957
Amex379936619672205
Diners3001211836236774
JCB6444744652558994
Discover6444744652558994
04 - Pick Up Card
Card TypeCard Number
Visa4564710000000012
Mastercard5531934095646789
Amex377850264429575
Diners3032297652537935
JCB3566000020000410
Discover6557364173679717
05 - Do Not Honour
Card TypeCard Number
Visa4564710000000020
Mastercard5188680400000008
Amex377852393955355
Diners3627647201762817
JCB3566303999942285
Discover6557343573058797
12 - Invalid Transaction
Card TypeCard Number
Visa4564720000000037
Mastercard5100000000404390
Amex377851937065671
Diners3009589978161401
JCB3566023559743341
Discover6557343771747332
14 - Invalid Card Number
Card TypeCard Number
Visa4631728544548139
Mastercard5553016800092435
Amex377851167501973
Diners3028680198362072
JCB3562107819932234
Discover6557325784863321
15 - No Such Issuer
Card TypeCard Number
Visa4564726349130286
Mastercard5163200000000792
Amex377851530450205
Diners3010814190687935
JCB3562108735707197
Discover6557343662761160
35 - Card Acceptor Contact Acquirer
Card TypeCard Number
Visa4511776015533390
Mastercard5500000000101893
Amex377852274416022
Diners3606005251011335
JCB3562106573776829
Discover6557351187743191
41 - Lost Card
Card TypeCard Number
Visa4631712173502799
Mastercard5400000000501994
Amex377850859783295
Diners3876426173392665
JCB3562106567430433
Discover6557354512703609
03 - No Universal Account/Closed Account
Card TypeCard Number
Visa4631745132973214
Mastercard5551656096578803
Amex377852653186006
Diners3025114366410748
JCB3562103970090060
Discover6557338997283245
43 - Stolen Card
Card TypeCard Number
Visa4631713277495963
Mastercard5100000000432896
Amex377852612490622
Diners3815552602426388
JCB3562105197145221
Discover6557331328168284
** 51 - Insufficient Funds**
Card TypeCard Number
Visa4617579107297798
Mastercard5197657993376796
Amex377852831176358
Diners3005770347113984
JCB3562108930783977
Discover6557366309352739
54 - Invalid Expiry Date
Card TypeCard Number
Visa4715729787853300
Mastercard5200000000022498
Amex379936953734488
Diners3009979651398133
JCB3562103635164805
Discover6504427542576114
36 - Restricted Card
Card TypeCard Number
Visa4631749139175633
Mastercard5200000000830999
Amex377851312622278
Diners3812984506458717
JCB3562104173493747
Discover6509809571378535
91 - Transaction Timed Out / Response Received Too Late
Card TypeCard Number
Visa4631713707981210
Mastercard5446471538337571
Amex377852643992851
Diners3684930560973740
JCB3562107291467733
Discover6504515951405112
15 - Card Issuer Unavailable
Card TypeCard Number
Visa4631756502801653
Mastercard5446376540532533
Amex379936492885940
Diners3867263432361418
JCB3562109655469016
Discover6504486020047600
Specific Authorization Code Testing
If you need to simulate a specific issuer response code that is not covered by the above scenarios, use the following cards. You can include the exact issuer response code you want to receive by including it in the Card Name field, eg "08Bob Jones" will produce an "08 - Honour with identification" response.
Card TypeCard Number
Visa4661686268763776
Mastercard5149024938880250
Mastercard2222222222222224
Amex348559568792267
Diners3017559548368539
JCB3562424339608339
Discover6556356600257761
The simulator also supports the following cards for 3DS 2.0 testing. Choose which card to use to simulate the 3DS action you want to test. These cards also act like the cards above, so you can include the desired issuer response code in the card name to simulate a specific response.
Manual Challenge
Card TypeCard Number
Visa4631716043860311
Mastercard5167473595100592
Amex377851826358070
Diners3001192225137726
JCB3584145695882770
Discover6504498873552834
Successful Authentication (Automatic Challenge Pass)
Card TypeCard Number
Visa4511774324799679
Mastercard5161691610858193
Amex377851498541607
Diners3685416315533889
JCB3584142032882258
Discover6542477066608532
Failed Authentication (Automatic Challenge Fail)
Card TypeCard Number
Visa4293172753194849
Mastercard5166674851597758
Amex377851342111698
Diners3835441249560369
JCB3584142299672590
Discover6573244951172699
Attempts / Non-Participating (Frictionless (Attempts) with no 3DS Method (Non-Participating))
Card TypeCard Number
Visa4525114332086104
Mastercard5446476148092268
Amex377850113449337
Diners3014090285308564
JCB3562105106083182
Discover6509825415100836
Timeout (DS Timeout)
Card TypeCard Number
Visa4444333322221111
Mastercard5166679383949633
Amex376087778726102
Diners3038387605159954
JCB3584141042559740
Discover6570176244095787
Timeout (3DS Method Timeout)
Card TypeCard Number
Visa4444333322221111
Mastercard5166679383949633
Amex376087778726102
Diners3038387605159954
JCB3584141042559740
Discover6570176244095787
Not Enrolled
Card TypeCard Number
Visa4111111111111111
Mastercard5204740000001002
Amex377852136856480
Diners3027285593502909
JCB3530111333300000
Discover6011868764043133
Unavailable (Frictionless No 3DS Method)
Card TypeCard Number
Visa4525114332086104
Mastercard5446476148092268
Amex377850113449337
Diners3014090285308564
JCB3562105106083182
Discover6509825415100836
Authentication Unavailable (Card Not Enrolled)
Card TypeCard Number
Visa4111111111111111
Mastercard5204740000001002
Amex377852136856480
Diners3027285593502909
JCB3530111333300000
Discover6011868764043133
Bypass Authentication (Frictionless N)
Card TypeCard Number
Visa4631773642610977
Mastercard5459157606991464
Amex379936352094765
Diners3027687467474208
JCB3584145656262608
Discover6558428449903117
Successful Frictionless Authentication (Frictionless 3DS Method)
Card TypeCard Number
Visa4574357336019197
Mastercard5446373276171776
Amex377852201339230
Diners3006205140196422
JCB3562102804837241
Discover6573661911483462
Failed Frictionless Authentication (Frictionless N)
Card TypeCard Number
Visa4631773642610977
Mastercard5459157606991464
Amex379936352094765
Diners3027687467474208
JCB3584145656262608
Discover6558428449903117
Attempts Stand-In Frictionless Authentication (Frictionless A)
Card TypeCard Number
Visa4344161869960986
Mastercard5162795916646654
Amex377850212785789
Diners3831877772683397
JCB3584144622475303
Discover6542194754719071
Unavailable Frictionless Authentication from the Issuer (Frictionless U)
Card TypeCard Number
Visa4715722496185288
Mastercard5162279415160368
Amex377850367873398
Diners3677041135713873
JCB3584147698530646
Discover6558436501058241
Rejected Frictionless Authentication by the Issuer (Frictionless R)
Card TypeCard Number
Visa4631758482194299
Mastercard5163295523861761
Amex377850912829739
Diners3015554046656503
JCB3584147537400761
Discover6542263476960345
Successful Step Up Authentication (Automatic Challenge Pass)
Card TypeCard Number
Visa4511774324799679
Mastercard5161691610858193
Amex377851498541607
Diners3685416315533889
JCB3584142032882258
Discover6542477066608532
Failed Step Up Authentication (Automatic Challenge Fail)
Card TypeCard Number
Visa4293172753194849
Mastercard5166674851597758
Amex377851342111698
Diners3835441249560369
JCB3584142299672590
Discover6573244951172699
Step Up Authentication is Unavailable (Frictionless U)
Card TypeCard Number
Visa4715722496185288
Mastercard5162279415160368
Amex377850367873398
Diners3677041135713873
JCB3584147698530646
Discover6558436501058241
Error on Authentication (DS Timeout)
Card TypeCard Number
Visa4444333322221111
Mastercard5166679383949633
Amex376087778726102
Diners3038387605159954
JCB3584141042559740
Discover6570176244095787
Bypassed Authentication (Frictionless N)
Card TypeCard Number
Visa4631773642610977
Mastercard5459157606991464
Amex379936352094765
Diners3027687467474208
JCB3584145656262608
Discover6558428449903117
Refunds via Clearing
The following cards can be used to simulate a failed refund that will be automatically re-tried via clearing. This feature will need to be enabled on your account. The fields adviceRefundTransactionID and adviceRefundTransactionCode will be returned in your API response when these cards are used.
Card TypeCard Number
Visa4929108431067579
Mastercard5232487798161145
Amex373851048098250
Diners30297289257699
JCB3549124971547153
Discover6011866139800328
Consumer / Business
The following cards can be used to simulate a Consumer or Business card.
Card TypePlatformSourceCard Number
VisaBusinessDebit4639250000000002
VisaBusinessCredit4336870000000003
VisaConsumerDebit4809410000000006
VisaConsumerCredit4265340000000002
MastercardBusinessDebit5119390000000002
MastercardBusinessCredit2235780000000000
MastercardConsumerDebit5163610000000008
MastercardConsumerCredit5108370000000007
MAC Codes
The following card can be used to simulate a MAC code response. It allows you to specify which MAC code to receive in the response by specifying the code in the Card Name field. For example, to receive MAC 03 - Do not try again response, use this card and set the Card Name field to 03Tony Stark.
Card TypeCard Number
Mastercard5586228308308749
CVV Status Cards
The following cards can be used to simulate a particular cvvStatus.
CVV StatusVISAMCAMEXDiscoverJCBDiners
M461973000550000151481300055000013738510005500005657017000550000235841400055000063017550005500003
N461973000560000951481300056000093738510005600003657017000560000035841400056000043017550005600001
P461973000570000751481300057000073738510005700001657017000570000835841400057000023017550005700009
S461973000580000551481300058000053738510005800009657017000580000635841400058000003017550005800007

Authorization Response Codes#

The following table lists the Authorization Response Codes that are returned by an issuer and/or acquiring switch when processing credit/debit card transactions. These values are also returned in the authResponseCode value in a transaction response. American Express Direct Link and Discover Direct Link response codes are available below this table.
Authorization CodeDescription
00Approved
01Refer to Card Issuer
02Refer to Issuer's special conditions
03Invalid Merchant
04Pick Up Card
05Do Not Honor
06Error
07Pick Up Card, Special Conditions
08Honor with identification
09Request in Progress
10Partial Amount Approved
11VIP Approval
12Invalid Transaction
13Invalid Amount
14Invalid Card Number
15No Such Issuer
16Approved, update track 3
17Customer Cancellation
18Customer Dispute
19Re-enter Transaction
20Invalid Response
21No Action Taken (no match)
22Suspected Malfunction
23Unacceptable Transaction Fee
24File Update not Supported by Receiver
25Unable to Locate Record on File
26Duplicate File Update Record
27File Update Field Edit Error
28File Update File Locked Out
29File Update not Successful
30Format Error
31Bank not Supported by Switch
32Completed Partially
33Expired Card - Pick Up
34Suspected Fraud - Pick Up
35Contact Acquirer - Pick Up
36Restricted Card - Pick Up
37Call Acquirer Security - Pick Up
38Allowable PIN Tries Exceeded
39No CREDIT Account
40Requested Function not Supported
41Lost Card - Pick Up
42No Universal Amount
43Stolen Card - Pick Up
44No Investment Account
45Account Closed
46Identification Required
47Identification Cross-Check Required
48No Customer Record
49Reserved For Future Realtime Use
50Reserved For Future Realtime Use
51Insufficient Funds
52No Cheque Account
53No Savings Account
54Expired Card
55Incorrect PIN
56No Card Record
57Trans. not Permitted to Cardholder
58Transaction not Permitted to Terminal
59Suspected Fraud
60Card Acceptor Contact Acquirer
61Exceeds Withdrawal Amount Limits
62Restricted Card
63Security Violation
64Original Amount Incorrect
65Exceeds Withdrawal Frequency Limit
66Card Acceptor Call Acquirer Security
67Hard Capture - Pick Up Card at ATM
68Response Received Too Late
75Allowable PIN Tries Exceeded
76Previous message not found
77Data does not match original message
80Invalid Date
81Cryptographic failure
82Incorrect CVV
83Unable to verify PIN
84Invalid authorization life cycle
85No reason to decline
86ATM Malfunction
87No Envelope Inserted
88Unable to Dispense
89Administration Error
90Cut-off in Progress
91Issuer or Switch is Inoperative
92Financial Institution Not Found
93Trans Cannot be Completed
94Duplicate Transmission
95Reconcile Error
96System Malfunction
97Reconciliation Totals Reset
98MAC Error
99Reserved for National Use
N0Force STIP (VISA)
N3Cash Service Not Available (VISA)
N4Cash request exceeds issuer limit (VISA)
N7Decline for CVV2 failure (VISA)
P2Invalid biller information (VISA)
P5PIN Change Unblock Declined (VISA)
P6Unsafe PIN (VISA)
XAForward to issuer
XDForward to issuer
XXUnknown Code
5CTransaction not supported/blocked by issuer
9GBlocked by cardholder/contact cardholder
The table below lists the Authorization Response Codes that are returned if your American Express transactions are being processed via the American Express Direct Link.
Authorization CodeDescription
000Approved
001Approve with ID
002Partial Approval (Prepaid Cards only)
100Deny
101Expired Card / Invalid Expiration Date
106Exceeded PIN attempts
109Invalid merchant
110Invalid amount
111Invalid account / Invalid MICR (Travelers Cheque)
115Requested function not supported
117Invalid PIN
119Cardmember not enrolled / not permitted
122Invalid card security code (a.k.a., CID, 4DBC, 4CSC)
125Invalid effective date
130Additional customer identification required
181Format error
183Invalid currency code
187Deny - New card issued
189Deny - Canceled or Closed Merchant/SE
200Deny - Pick up card
400Reversal Accepted
900Accepted - ATC Synchronization
909System Malfunction (Cryptographic Error)
912Issuer not available
The table below lists the Authorization Response Codes that are returned if your Discover transactions are being processed via the Discover Direct Link.
Authorizatoin CodeDescription
000pin change successful
001honor with identification
081approved by Issuer
082approved by Xpress
083approved by Acquirer
084offline approved
085offline approved, Unable to go online
086card verification successful
100do not honor
101expired card
102suspected fraud
104restricted card
106allowable PIN tries exceeded
109invalid merchant
110invalid amount
111invalid card number
115requested function not supported
117incorrect PIN
118cycle range suspended
119Transaction not permitted to cardholder
122card validity period exceeded
124violation of law
125card not effective
129suspected counterfeit card
140offline declined, Merchant Forced Acceptance
141unable to go online, offline declined, Merchant Forced Acceptance
163security violations
181decline given by POS participant
182decline given by Issuer
183Domain Restriction Control Failure
184decline given by Xpress, no communication with Issuer
185decline given by Xpress, card is local use only
188Xpress unable to forward request to Issuer X
192Restricted Merchant
194PIN change or unblock failed
195new PIN not accepted
196chip information advice
197card verification failure
198TVR or CVR validation failed
200do not honor
201expired card
202suspected fraud
203card acceptor contact Acquirer
204restricted card
205card acceptor call Acquirers security department
206allowable PIN tries exceeded
207special conditions
208lost card
209stolen card
210suspected counterfeit card
280temporary status lost card
281temporary status stolen card
300successful
301not supporte by reciever
302unable to locate record on file
303duplicate record, old record replaced
304data element edit error
305file locked out
306not successful
307format error
308duplicate, new record rejected
309unknown file
380not successful, cross reference exists
382continutation data in next record
397card on Positive File
399VIP card with limits
400accepted
480function code not allowed
481account number invalid
482account number does not mod10
483no matching cycle range exists for this account
484invalid amount
680Forward to destination Participant
600accepted
800accepted
909destination not known
910destination not in service

Chargeback Reason Codes#

The following table lists the Visa chargeback reason codes and their descriptions.
Reason CodeDescription
10.1EMV Liability Shift
10.2EMV Liability Shift Non-counterfeit Fraud
10.3Card-Present Environment
10.4Card-Absent Environment
10.5Visa Fraud Monitoring Program
11.1Card Recovery Bulletin
11.2Declined Authorisation
11.3No Authorisation
12.1Late Presentment
12.2Incorrect Transaction Code
12.3Incorrect Currency
12.4Incorrect Account Number
12.5Incorrect Amount
12.6Duplicate Processing/Paid by Other Means
12.7Invalid Data
13.1Merchandise/Services Not Received
13.2Cancelled Recurring Transaction
13.3Not as Described or Defective Merchandise/Service
13.4Counterfeit Merchandise
13.5Misrepresentation
13.6Credit Not Processed
13.7Cancelled Merchandise/Services
13.8Original Credit Transaction Not Accepted
13.9Non-Receipt of Cash or Load Transaction Value
The following table lists the MasterCard chargeback reason codes and their descriptions.
Reason CodeDescription
4837No Cardholder Authorization
4840Fraudulent Processing of Transactions
4847Exceeds Floor Limit, Not Authorised
4849Questionable Merchant Activity
4862Counterfeit Transaction / Magnetic Stripe POS Fraud
4863Cardholder Does Not Recognize
4870Chip Liability Shift
4871Chip/PIN Liability Shift
4807Warning Bulletin File
4808Requested/Required Authorisation Not Obtained
4812Account Number Not On File
4831Transaction Amount Differs
4834Duplicate Processing / POS Error
4835Card Not Valid or Expired
4842Late Presentment
4846Correct Transaction Currency Code Not Provided
4850Installment Billing Dispute
4902Required Information Illegible or Missing
4999Domestic Chargeback Dispute (Europe Region Only)
4841Canceled Recurring or Digital Goods Transactions
4853Cardholder Dispute
4854Cardholder Dispute (U.S. Region Only)
4855Goods or Services Not Provided
4857Card-Activated Telephone Transaction
4859Addendum, No-show, or ATM Dispute
4860Credit Not Processed
The following table lists the American Express chargeback reason codes and their descriptions.
Reason CodeDescription
4507Incorrect Transaction Amount or Account Number Presented
4512Multiple Processing
4513Credit Not Presented
4515Paid through Other Means
4516Request for Support Not Fulfilled
4517Request for Support Illegible/Incomplete
4521Invalid Authorization
4523Unassigned C/M Account Number
4526Missing Signature
4527Missing Imprint
4530Currency Discrepancy
4534Multiple ROCs
4536Late Presentment
4540Card Not Present
4544Cancellation of Recurring Goods/Services Services
4553Not as Described or defective merchandise
4554Goods and Services Not Received
4750Car Rental Charge in Dispute
4752Credit/Debit Presentment Error
4754Local Regulatory/Legal Dispute
4755No Valid Authorization
4758Expired/Not Yet valid card
4763Fraud Full Recourse
4798Fraud Liability Shift - Counterfeit
4799Fraud Liability Shift - Lost/Stolen
The following table lists the EFTPOS chargeback reason codes and their descriptions.
Reason CodeShort Description
10201Consumer does not recognise the Merchant
10301Duplicate transaction
10302Incorrectly charged Transaction
10305Paid by another means
10401No-dispense or partial dispense of cash from self-service Merchant terminal only
10402Non-delivery or partial delivery of goods
10403Cash-out Transaction – non-dispense or partial dispense of cash from a Merchant terminal
10404Goods/Service not received – Refund not received
10501Goods/services not as described including goods damaged in transit
10502Goods/services not as described including goods damaged in transit
20201Split Transaction
20202Unauthorised transactions
20203Delayed, incorrect or incomplete Purchase/Reversal/Advice (short duration pre-auth)
20204Invalid Fallback
30101Card Not Present - Fraud
30201Card Not Present – Duplicate transaction
30202Card Not Present – Consumer does not recognise the Merchant
30203Card Not Present – Incorrectly charged
30204Card Not Present – Paid by other means
30205Card Not Present – Money Transfer – Payee not credited/credited incorrectly
30401Card Not Present – Non-delivery or partial delivery of Goods/services
30402Card Not Present – Refund not received
30403Card Not Present – Cancelled Delivery of Goods/Services
30501Card Not Present – Goods/services not as described
30601Card Not Present – Cancelled Recurring Transaction

MAC Codes#

Merchant Advice Codes (MACs) are short codes returned by card networks and issuing banks when a transaction is declined or flagged. They provide guidance on what action a merchant should take next, such as retrying the transaction, requesting updated card details, or stopping further attempts.
MACs are especially common with:
Recurring payments
Subscription billing
Stored card / card-on-file transactions
When a transaction is declined, the issuer may return:
1.
A decline reason
2.
A Merchant Advice Code
The decline reason explains why the transaction failed whilst the MAC explains what you should do next.
The following table lists the Merchant Advice Codes (MAC) and their descriptions. If a MAC code is returned to you in our response, its instructions must be followed. Failure to do so many incur a penalty fee.
MAC CodeDescription
1Updated information needed
2Try again later
3Do not try again
4Transaction not supported
21Stop recurring payment requests
24Retry after 1 hour
25Retry after 24 hours
26Retry after 2 days
27Retry after 4 days
28Retry after 6 days
29Retry after 8 days
30Retry after 10 days
40Consumer non-reloadable prepaid card
41Consumer single-use virtual card number
43Consumer multi-use virtual card number
By default, when a transaction receives a Merchant Advice Code (MAC), Merchant Warrior will block any subsequent attempts on the same card according to the issuing bank’s retry instructions as provided in the table above. This helps prevent unnecessary declines that incur penalty fees and ensures compliance with card network rules.
For example, if an issuing bank returns a MAC of 25, any attempts to charge the same card within the next 24 hours will be automatically Blocked. Once the 24-hour period has passed, the card can be tried again and the transaction will be processed normally. This behaviour ensures that retry attempts are handled correctly without requiring any additional configuration from your systems.

Direct Debit Responses#

The following table lists the direct debit response codes, for both Australia and New Zealand.
Australia
Response CodeDescription
1Invalid BSB number
2Payment stopped
3Account closed
4Customer deceased
5No account or incorrect account number
6Refer to customer
8Invalid User ID Number
9Technically invalid
New Zealand
Response CodeDescription
DISHONOUR-01Unauthorised. Your direct debit authority hasn’t been loaded at the payer’s bank.
DISHONOUR-02No Account. The account you’re trying to collect a payment from doesn’t exist.
DISHONOUR-03Insufficient funds. There’s not enough money in the payer’s account to collect the payment.
DISHONOUR-04Payment stopped. Contact the payer to find out why.
DISHONOUR-05Authority cancelled. The payer has cancelled your direct debit authority.
DISHONOUR-06Account closed. The account you’re trying to collect a payment from has been closed.
DISHONOUR-07Account transferred. The account you’re trying to collect a payment from has been moved (for example, if two companies merge and the customer number of the account has changed).
DISHONOUR-08Payment limit exceeded. You’re trying to collect more money than the payer has allowed for your direct debit authority.

CVV Response Codes#

A CVV Response Code is a value returned by the card-issuing bank during a card transaction to indicate whether the CVV provided by the cardholder matches the value on file with the issuer.
Please note, not all providers support this feature.
The following codes list the CVV Response codes you may get in your response.
Response CodeMeaningDescription
MMatchThe CVV provided matches the one on file.
NNo MatchThe CVV does not match.
PNot ProcessedCVV data was not processed.
SCVV Should Be on Card, but is MissingIssuer indicates the card should have a CVV but it wasn’t provided.
UIssuer Does Not Support CVVThe issuer doesn't support CVV validation.

NPP Reason Codes#

The following reason codes are defined under the New Payments Platform (NPP) framework and are applicable to NPP-related services such as PayTo, Payouts and PayID refunds.
Payment Decline Codes
If a reason code is classified as a soft decline, the transaction may be attempted again.
Reason CodeDescriptionSoft Decline
AB01Aborted Clearing TimeoutYes
AB02Aborted Clearing Fatal ErrorYes
AB03Aborted Settlement TimeoutYes
AB04Aborted Settlement Fatal ErrorYes
AB08Offline Creditor AgentYes
AC02The Debtor Account Number is invalid or missingNo
AC03The Payee is unable to accept a Clearing Request because the account to be credited does not existNo
AC05The original debtor account number is closed and a Payment Return (Unsolicited) cannot be madeNo
AC06The Account is blocked and cannot accept credits (e.g. suspected fraud, sanctions, or account type restrictions such as mortgage/term deposit)Yes
AC07The account to be credited is closedNo
AC13The account to be debited cannot debit funds within its typeNo
AC14Account exists but cannot accept funds (unreachable via NPP)No
AC15Payer account was changed to a different accountNo
AG01Account exists but does not support creditsNo
AG03The account to be credited is open, but cannot accept NPP credit for the NPP serviceNo
AG07Unsuccessful Direct DebitYes
AGNTThe account does not belong to the account servicer (incorrect agent/reference data or clearing/settlement agency relationship)No
AM01The service prohibits the use of zero dollar PaymentsNo
AM02The transaction is greater than the maximum NPP limit ($99,999,999,999) or exceeds service rulesNo
AM03Currency cannot be applied to the specified account (Interbank settlement currency not AUD)No
AM04Insufficient FundsYes
AM06Specified transaction amount is less than agreed minimumYes
AM09Amount received is not the amount agreed or expectedYes
AM12Clearing or Settlement Request amount is missing, invalid, or mismatchedYes
AM13Transaction amount exceeds limits set by clearing systemNo
AM18Number of transactions is invalidNo
AM19The number of transactions does not equal to ‘1’No
AM21Limit ExceededYes
AM22Unable to apply zero amount to designated accountNo
BE05Creditor is unknown to DebtorNo
BE06End customer specified is not known at associated Sort/National Bank Code or no longer exists in recordsNo
BE08Debtor name is missingNo
BE18Contact details missing or invalidNo
BE22Creditor Name is required but not providedNo
CH17Element is not allowedNo
CH20Number of decimal points not compatible with the currencyNo
CH21Mandatory element is missingNo
CURRThe currency included in the Clearing Request is incorrect (value other than AUD)No
CUSTCancellation requested by the DebtorYes
DT01Invalid date (e.g. wrong or missing settlement date)No
DT02GroupHeader CreationDateTime not in required format or outside acceptable timeframeNo
DT04Future dated NPP Payment Initiation Requests not supportedNo
E991Validate Mandate Service Unavailable Retry again after sometimeYes
E992Alias Resolution Service Unavailable Retry again after sometimeYes
E999Unexpected System ErrorNo
ED05Settlement of the transaction has failedYes
ED06NPPA direction to reject requests due to FSS being unavailableYes
FF01File format incomplete or invalidNo
FF04Service Level code invalid or not as per message type/membership formatNo
FF08End-to-End ID missing or invalidYes
FF10Unable to process due to back office issues or outageYes
FF11Clearing Request rejected as it was subject to a previous abort operationYes
FRADCancellation requested following a transaction that was originated fraudulentlyNo
G005Payment has been delivered to creditor agent with service levelNo
G006Payment has been delivered to creditor agent without service levelNo
M001Invalid or not applicable character setNo
M308Creditor Reference must be equal to End to End Id of payment instructionYes
M901Validate Mandate API Error Retry again after sometimeYes
M902Responding Participant is Unavailable Retry again after sometimeYes
M903Payer Participant is Unavailable Retry again after sometimeYes
M904Payee Participant is Unavailable Retry again after sometimeYes
M905Debtor PayId is InvalidNo
M906Creditor PayId is InvalidNo
M907Debtor BSB is not NPP reachableNo
M908Creditor BSB is not NPP reachableNo
M909Business Service Code InvalidNo
M910Business Service Code not present in MandateNo
M911Payer Participant is not NPP reachableNo
M912Payee Participant is not NPP reachableNo
M913Payee Account Details are missingYes
M914Payee Participant in Mandate and Creditor Alias Servicer are not matchingNo
M915Payer Participant in Mandate and Debtor Alias Servicer are not matchingNo
M916Creditor Account Details present in Mandate and Input Request are not matchingYes
M917Creditor Alias details present in Request and Mandate are not matchingYes
M918Creditor details not present in Request and MandateYes
M919Unable to locate Payment Instruction recordNo
M920Invalid MandateNo
M921Creditor account scheme present in request and Mandate are not matchingYes
M922Previous Instruction Status is invalid for Business retryNo
MD01The NPP Payment Initiation Request did not contain a MandateIdNo
MD02The Mandate Cryptogram contained in a Mandate NPP Payment Initiation Request did not verifyNo
MD20The Mandate Cryptogram contained in a Mandate NPP Payment Initiation Request was older than the allowed timeframe (24hrs)Yes
MS02Reason has not been specified by end customerYes
NARRNarrativeYes
RC05The BIC identifier is invalid or missingNo
RR04Regulatory ReasonNo
RR05Regulatory or Central Bank Reporting information missing, incomplete, or invalidNo
RR07Remittance information structure does not comply with rules for payment typeNo
SL01Specific Service offered by Debtor AgentNo
SL11The Creditor did not appear on the Debtor’s whitelistNo
SL12The Creditor appeared on the Debtor’s blacklistNo
SL13Maximum number of Direct Debit Transactions exceededYes
SL14Maximum Direct Debit Transaction Amount exceededYes
TD03The file format is incomplete or invalidYes
TM01Invalid Cut Off TimeYes
Participant Reason Codes
These reason codes are issued by NPP participants to report the status of their connectivity. They are commonly observed during maintenance windows, system recovery, or outages.
Reason CodeDescription
PA01Participant Available
PA02Participant Flooded
PA03Participant Recovering
PA04Participant Not Available
PA05Participant Under Stress

Supported Currencies#

The following currencies are supported, but are dependent on your setup. Please check with Merchant Warrior before attempting to process transactions in any currency other than AUD.
AUD
CAD
EUR
FJD
GBP
HKD
IDR
JPY
MYR
NZD
PHP
SGD
THB
USD
ZAR
Modified at 2026-07-29 07:13:29
Next
Guides
Built with