Skip to the tool
MoveAheadPayments Toolbox

ISO 8583 response code: 12

The issuer understood the message but will not accept this kind of transaction on this account. It usually means the processing code, the message type, or the combination of the two is one the issuer does not support.

Invalid transactionHard decline

Retrying the same request will fail the same way.

What it means

A 12 is a structural refusal rather than a financial one. The card may be perfectly good and funded, but the issuer does not permit the operation being attempted — a cash advance on a card that does not allow one, a refund against an original it cannot find, a pre-authorisation on a product that does not support it. The processing code in field 3 is what most often triggers it, since that is where the transaction type and the account types are declared.

Common causes

  • The processing code in field 3 names a transaction type or account type the issuer does not support for this card.
  • A reversal, refund or capture that does not match an original the issuer can locate.
  • A message type indicator that is wrong for the operation — sending a 0200 where the acquirer expects a 0100, or the reverse.
  • A transaction attempted against a card product that does not permit it at all, such as a cash withdrawal on a credit card configured without a PIN.

How to fix it

  1. Decode field 3 and check all three pairs: the transaction type, the from-account type and the to-account type. A cash advance sent as 01 where the issuer expects 00 for a purchase fails here.
  2. Check the message type indicator matches the flow your acquirer specified. Authorisation, financial and reversal messages are not interchangeable.
  3. For a reversal or refund, confirm the original's retrieval reference number and system trace audit number are echoed exactly. A mismatch means the issuer cannot find what you are reversing.
  4. Parse the message end to end. A 12 is common when a field is misaligned, because the issuer reads a valid-looking but wrong processing code.

Tools that help

Frequently asked questions

How is 12 different from 57?
They overlap, but the emphasis differs. A 12 says the transaction as constructed is not valid — usually a message or processing-code problem. A 57 says the transaction is well formed but this cardholder is not permitted to do it. In practice issuers are inconsistent about which they send, so investigate both possibilities regardless of which one you got.
Can a bitmap error cause a 12?
Yes, and it is worth checking early. If the bitmap declares a field you did not send, or omits one you did, every subsequent field is read from the wrong offset and the issuer parses nonsense out of a structurally valid message. Decoding the bitmap and confirming the fields present match the fields declared will catch it.