Skip to main content

Do Not Honor

Decline code: do_not_honor Error type: card_error HTTP status: 201 Created (payment status becomes failed asynchronously)

What it means

The card issuer has declined the transaction without providing a specific reason. “Do not honor” is a catch-all decline that the issuing bank uses when it does not want to disclose the exact reason for the rejection.

Why it happens

  • The issuer’s fraud detection system flagged the transaction as suspicious.
  • The cardholder has restrictions on their account (e.g., international transactions disabled).
  • The issuer has internal policies that block certain merchant categories or transaction amounts.
  • The card may have temporary holds or restrictions that the issuer does not disclose.
  • The cardholder’s account status may have changed (e.g., under review).
This is one of the most common decline codes and is often frustrating because the specific reason is not shared with the merchant.

API response

The payment is created with status: "pending". After processing, it transitions to failed with decline details:
{
  "id": "pay_abc123",
  "status": "failed",
  "decline_code": "do_not_honor",
  "decline_message": "The card was declined. Contact your card issuer for details."
}

What to tell the customer

Your card was declined by your bank. Please try a different payment method, or contact your bank for more information.
Do not speculate about the reason — the issuer intentionally withheld it. Direct the customer to their bank for specifics.

What the merchant should do

  1. Show a generic, helpful decline message — do not guess the reason.
  2. Let the customer try again with the same card (sometimes a retry works, especially if the decline was triggered by a temporary fraud flag).
  3. Offer alternative payment methods — a different card may succeed.
  4. Suggest the customer contact their bank — the issuer can provide the actual reason and may unblock the transaction.
  5. Do not retry excessively — one automatic retry may be reasonable, but repeated attempts can trigger additional fraud flags.
  6. Log the request_id for support investigation if the customer escalates.

Testing

Use this test card number to simulate a do_not_honor decline:
4000000000000002
Any future expiration date and any CVC will work.
curl -X POST https://api.flowlix.dev/v1/payments \
  -H "Authorization: Bearer fl_test_sk_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 5000,
    "currency": "eur",
    "card": {
      "number": "4000000000000002",
      "exp_month": 12,
      "exp_year": 2027,
      "cvc": "123",
      "holder_name": "Test User"
    },
    "customer": {
      "email": "test@example.com",
      "first_name": "Test",
      "last_name": "User",
      "country": "DE",
      "phone": "+491234567890",
      "address": "100 Main St",
      "city": "Berlin",
      "zip": "10115"
    }
  }'