# MQRC 2048: Persistent messages not allowed

Source: https://wndsoftware.com/mainframe-errors/mqrc-2048

### MQRC 2048: Persistent messages not allowed

MQRC 2048 means the destination cannot accept a persistent message. Check temporary dynamic reply queues, inherited defaults and z/OS shared queues.


#### Other names for this code

Also written as `RC2048`, `reason code 2048`, `MQ error 2048`, `MQRC_PERSISTENT_NOT_ALLOWED`, `0800`, `0x0800`.


### What it means

The persistence setting is valid, but the destination does not support it. Temporary dynamic queues cannot hold persistent messages. Persistence inherited from the queue default can trigger the same mismatch as an explicit persistent setting.

On z/OS, IBM also documents persistent puts to a shared queue whose coupling-facility structure is configured with RECOVER(NO). Keep the platform-specific case separate from temporary reply-queue design.


#### A troubleshooting example

A server correctly preserves the persistence of a business request, but the requester supplies a temporary dynamic reply queue. The server's reply fails with 2048. Fixing only the server by forcing nonpersistent replies changes the delivery guarantee. Agree whether the requester needs durable replies; if it does, give it a suitable durable return destination and cleanup process. A meaningful test includes requester restart and delayed replies, not just a fast request-and-response exchange.


### Common causes

- A server copies a persistent request's persistence to a reply addressed to a temporary dynamic queue.
- Queue-default persistence changed while the producer still requests queue-default behavior.
- A z/OS shared-queue design uses a CF structure that does not support the required recovery behavior.


### How to find the problem

- Capture the effective message persistence, including whether MQMD requested the queue default. Read the actual destination definition.
- For replies, trace ReplyToQ back to the request sender and establish whether it created a temporary or permanent queue.
- Determine whether 2048 was returned locally or arrived in report or dead-letter information after remote delivery.
- For shared queues on z/OS, ask the systems programmer to inspect the associated CFSTRUCT recovery configuration and the application's durability requirement.


### How to fix it

- If durable replies are required, use an appropriate predefined or permanent dynamic reply queue with a supported lifecycle.
- Use nonpersistent delivery only when the application contract permits it. Do not weaken durability merely to make the put return success.
- Coordinate changes to queue defaults and shared-queue recovery with affected applications. Test request, reply and restart behavior together.


### What it looks like


```text
Illustrative diagnostic notes; not an IBM message template.
Request persistence: MQPER_PERSISTENT
Reply destination: temporary dynamic queue
Reply MQPUT Reason=2048
Reconcile durability and reply-queue lifetime.
```


### IBM documentation

[IBM MQ 9.4: 2048 MQRC_PERSISTENT_NOT_ALLOWED](https://www.ibm.com/docs/en/ibm-mq/9.4.x?topic=codes-2048-0800-rc2048-mqrc-persistent-not-allowed). Use the documentation for your installed release.

[Report a correction to WND Software](https://wndsoftware.com/contact#message).

Technical reviewer: [Albert Joseph](https://wndsoftware.com/authors/albert-joseph), WND Software.

Updated 2026-10-23. IBM documentation checked for this article. Written in our own words. For the full reference, check IBM’s MQ documentation for your version.


### Related codes

[MQRC 2047 MQRC_PERSISTENCE_ERROR Read →](https://wndsoftware.com/mainframe-errors/mqrc-2047)
[MQRC 2027 MQRC_MISSING_REPLY_TO_Q Read →](https://wndsoftware.com/mainframe-errors/mqrc-2027)
[MQRC 2057 MQRC_Q_TYPE_ERROR Read →](https://wndsoftware.com/mainframe-errors/mqrc-2057)

### Questions


#### How is 2048 different from 2047?

2047 means the persistence value itself is invalid. 2048 means a valid persistent setting is incompatible with the destination.


#### Can the queue default cause this?

Yes. A producer using queue-default persistence must still resolve to a value the destination supports.

[IBM MQ reason codes](https://wndsoftware.com/mainframe-errors/mq-reason-codes) · [MQRC 2047](https://wndsoftware.com/mainframe-errors/mqrc-2047) · [MQRC 2049](https://wndsoftware.com/mainframe-errors/mqrc-2049)

[← All error codes](https://wndsoftware.com/mainframe-errors/)
