Status Codes

Payment status codes indicate the status of a payment transaction processed through MoneyHash payment API.

Transaction Operation Status Codes

Payment status codes indicate the status of a payment transaction processed through MoneyHash payment API. We offer a unified status code list that maps and connects to the original codes sent by the payment provider. MoneyHash ensures the raw original error code data sent by the provider is always available upon request.

You can retrieve the payment status codes in the transaction webhooks sent by MoneyHash API. Within the transaction status object, you will find a nested statuses array that includes detailed information about the transaction status.

Transaction webhook with status code
{
  "type": "transaction.purchase.failed",
  "status_id": "9KWQvGM",
  "operation_id": "ZpNP75L",
  "intent": {
    "id": "L50waMr",
    "created": "2025-01-22 09:47:25.234701+00:00",
    "custom_fields": null,
    "split_data": [],
    "custom_form_answers": null,
    "amount": { "value": 6500, "currency": "EGP" },
    "flow_data": null
  },
  "account": { "id": "gy0y7KL" },
  "transaction": {
    "type": "payment",
    "id": "99f22c3d-372f-494d-a7fc-b5edb75d275b",
    "created": "2025-01-22 09:47:25.599773+00:00",
    "status": "purchase.failed",
    "billing_data": {
      "name": "John Doe",
      "first_name": "John",
      "last_name": "Doe",
      "email": "[email protected]",
      "phone_number": "+201064610000",
      "address": "Ahmed Fakhry street, Building 22",
      "address1": null,
      "apartment": null,
      "floor": null,
      "building": null,
      "street": null,
      "city": "Nasr City",
      "state": "Cairo",
      "country": null,
      "postal_code": "11828",
      "mobile_wallet_number": null
    },
    "external_action_message": [],
    "provider_transaction_fields": {
      "checkoutdotcom_payment_id": "pay_dbfrnibxzpqenhnymneojpt3qa",
      "checkoutdotcom_payment_auth_code": null,
      "checkoutdotcom_increase_auth_code": null,
      "checkoutdotcom_increase_auth_action_id": null,
      "checkoutdotcom_acquirer_reference_number": null,
      "checkoutdotcom_processing_object": null,
      "checkoutdotcom_operation_fields": {
        "ZpNP75L": {
          "action_id": null,
          "auth_code": null,
          "acquirer_transaction_id": null,
          "retrieval_reference_number": null
        }
      }
    },
    "provider_unique_reference": {
      "key": "checkoutdotcom_payment_id",
      "value": "pay_dbfrnibxzpqenhnymneojpt3qa"
    },
    "operations": [
      {
        "id": "ZpNP75L",
        "type": "purchase",
        "status": "failed",
        "amount": { "value": 6500, "currency": "EGP" },
        "latest_status": {
          "id": "9KWQvGM",
          "value": "failed",
          "code": "7708",
          "provider_error_code": "P-NA",
          "provider_error_message": "P-NA",
          "message": "MH: Unknown error",
          "localized_message": "MH: Unknown error"
        },
        "statuses": [
          {
            "id": "9JD0vE5",
            "value": "pending",
            "code": "8000",
            "provider_error_code": null,
            "provider_error_message": null,
            "message": "Pending",
            "localized_message": "Pending",
            "created": "2025-01-22 09:47:25.633922+00:00"
          },
          {
            "id": "ZpraR1q",
            "value": "pending_authentication",
            "code": "8001",
            "provider_error_code": null,
            "provider_error_message": null,
            "message": "Pending Authentication",
            "localized_message": "Pending Authentication",
            "created": "2025-01-22 09:47:38.424474+00:00"
          },
          {
            "id": "9KWQvGM",
            "value": "failed",
            "code": "7708",
            "provider_error_code": "P-NA",
            "provider_error_message": "P-NA",
            "message": "MH: Unknown error",
            "localized_message": "MH: Unknown error",
            "created": "2025-01-22 09:47:49.537235+00:00"
          }
        ],
        "refund_type": null,
        "custom_fields": null,
        "extra": {}
      }
    ],
    "fraud_decision": null,
    "custom_message": "",
    "method": {
      "id": "9831BJZ",
      "display_name": "CheckoutDotCom - Card",
      "service_provider": { "id": "97d4pnL", "display_name": "Checkout.com" }
    },
    "payment_method_details": { "type": "CARD", "data": null },
    "authentication_data": {
      "version": "2.2.0",
      "eci_value": null,
      "ds_trans_id": null,
      "acs_trans_id": null,
      "threeds_status_code": "R",
      "authentication_value": null,
      "threeds_interaction_mode": null
    },
    "paying_card_token": null,
    "authorization_code": null,
    "merchant_reference": null,
    "shipping_data": {
      "first_name": "John",
      "last_name": "Doe",
      "email": "[email protected]",
      "phone_number": "+201064610000",
      "address": "Ahmed Fakhry street, Building 22",
      "country": "SA",
      "city": "Nasr City",
      "street": "street name",
      "floor": "1",
      "building": "8028",
      "state": "Cairo",
      "postal_code": "11828",
      "apartment": "803",
      "description": "Second building",
      "shipping_method": "EM"
    },
    "trx_rrn": null,
    "ip": {
      "ip_address": "84.170.200.78",
      "country": { "iso_code": "DE", "name": "Germany" }
    },
    "full_capture": false
  },
  "api_version": "1.1"
}

        

Payment Status Codes

MoneyHash defines multiple code ranges to help you identify the status of each operation, and we group status codes as the following:

Status Code RangeDescription
6000Payment successful - The payment has been successfully completed.
7000Payment failure - The payment request has failed due to an error or invalid data.
8000Payment pending - The payment request has been received and is awaiting further processing.

❗️

MoneyHash reserves the right to add more error codes or change the existing one, but we will notify you with enough time to make the necessary changes on your end.

Additionally, we use specific status codes to provide more detailed information about the payment status. When a specific status is available, we replace the trailing zeros (000) in the general status code with a different number referring to the detailed status.

To make handling these responses easier, MoneyHash groups all detailed status codes into two categories:

  • Soft Declines: temporary or PSP-specific issues that may succeed if retried or routed to another provider.
  • Hard Declines: deterministic failures where retrying or rerouting will not change the outcome.

Below is the full list of MoneyHash status codes, grouped into Soft Declines and Hard Declines.

Soft Decline Codes

Status CodeStatus MessageDescription
7000PSP_FAILED_ERRORA generic payment processing error occurred.
7001PSP_BANK_DECLINE_ERRORTransaction declined by the bank.
7003PSP_INVALID_REQUEST_ERRORThe request contains invalid parameters or is improperly formatted.
7023PSP_FEE_ERRORError related to the transaction fees applied.
7024PSP_FILE_ERRORError related to file processing or updates.
7031PSP_BANK_NOT_SUPPORTED_ERRORThe payment instrument bank is not supported.
7035PSP_ACQUIRER_ERRORError originating from the payment acquirer.
7040PSP_CONFIGURATION_ERRORConfiguration issue at the payment gateway or provider.
7051PSP_INSUFFICIENT_FUNDS_ERRORThe account lacks sufficient funds to complete the transaction.
7061PSP_AMOUNT_LIMIT_ERRORThe transaction amount exceeds the allowed limits.
7063PSP_SECURITY_ERRORSecurity violation or issue during processing.
7092PSP_FINANCIAL_NETWORK_UNAVAILABLE_ERRORFinancial network unavailable or unable to route the transaction.
7094PSP_DUPLICATION_ERRORDuplicate transaction or request detected.
7098PSP_SHIPPING_ADDRESS_ERRORThe provided shipping address is invalid.
7099PSP_SENDER_ERRORError related to the transaction sender.
7100PSP_SYSTEM_BUSY_ERRORUnable to process the transaction at this time.
7101PSP_RECIPIENT_ERRORError with recipient details or account.
7102PSP_VALIDATION_ERRORValidation failed for transaction parameters.
7105PSP_LIMIT_EXCEEDEDSome limits were exceeded on the provider side.
7151PSP_AUTHENTICATION_FAILED_ERRORAuthentication process for the transaction failed.
7152PSP_TRANSACTION_TIMEOUT_ERRORTransaction timed out during processing.
7153PSP_MALFUNCTION_ERRORSystem or network malfunction during transaction processing.
7154PSP_AUTHENTICATION_REQUIRED_ERRORAuthentication is required to complete the transaction.
7503PSP_CURRENCY_ERRORUnsupported or invalid currency specified.
7702MH_BILLING_DATA_ERRORMH: Missing or invalid billing data for the transaction.
7705MH_PSP_UNAVAILABLE_ERRORMH: The PSP service is unavailable at the time of the request.
7707MH_PROVIDER_CONNECTION_PARSING_ERRORMH: Couldn't parse the provider response.
7708MH_PROVIDER_CONNECTION_UNKNOWN_ERRORMH: Unknown error.
7709MH_PSP_CONFIGURATION_ERRORMH: Configuration issue with the PSP connection.
7710MH_PROVIDER_ERROR_MAPPING_NOT_SUPPORTEDMH: This provider error mapping is not supported yet, please refer to provider interactions for more details on the error code.

Hard Decline Codes

Status CodeStatus MessageDescription
7078PSP_PAYMENT_INSTRUMENT_ERRORThe payment instrument provided is invalid or unsupported.
7004PSP_CARD_PICKUP_ERRORCard flagged for pickup due to restrictions or fraud suspicion.
7055PSP_PAYMENT_INSTRUMENT_CREDENTIALS_ERRORIncorrect or missing credentials for the payment instrument.
7013PSP_INVALID_AMOUNT_ERRORThe transaction amount is invalid.
7015PSP_ISSUER_ERRORError originating from the payment issuer.
7017PSP_CUSTOMER_CANCELLATIONThe transaction was cancelled by the customer.
7018PSP_TRANSACTION_DISPUTED_ERRORTransaction flagged due to a customer dispute.
7057PSP_TRANSACTION_NOT_PERMITTED_ERRORThe transaction is not permitted.
7059PSP_SUSPECTED_FRAUD_ERRORTransaction flagged for suspected fraudulent activity.
7103PSP_DECLINE_LIST_ERRORDeclined due to being on a block or decline list.
7104PSP_RISK_DECLINE_ERRORDeclined due to exceeding risk thresholds.
7387PSP_EXPIRY_DATE_ERRORThe card's expiration date is invalid or has expired.
7488PSP_TRANSACTION_EXPIRED_ERRORThe transaction has expired.
7500PSP_BILLING_DETAILS_ERRORInvalid or incomplete billing details provided.
7511PSP_ACCOUNTS_ERRORIssues with the accounts related to the payment.
7700MH_INTENT_EXPIRED_ERRORMH: The transaction or intent has expired.
7701MH_TOO_MANY_FAILED_TRANSACTIONS_ERRORMH: The number of failed transactions exceeded the threshold.
7703MH_INTENT_CLOSED_ERRORMH: The intent has already been closed.
7704MH_PAYMENT_INSTRUMENT_CREDENTIALS_ERRORMH: Incorrect or missing credentials provided for the payment method.
7706MH_INVALID_REQUEST_ERRORMH: The request is invalid or contains incorrect data.
7711MH_TRANSACTION_EXPIRED_ERRORMH: The Transaction has expired.

Handling Response Codes

When integrating our online payment API, it is important to handle payment status code. This involves checking the response code and taking appropriate actions or error handling based on the specific scenario.