If your SWIFT system is rejecting an MT999 with an “Unauthenticated Format” error as of 2026, the fix is simple: convert it to MT799 and add a valid test key pair. That single change moves the message from unauthenticated to authenticated, satisfying most bank-to-bank compliance rules.
What’s going on here?
MT999 is an unauthenticated free-format message banks use to confirm funds availability or readiness to proceed with a transaction. Because it lacks the test-key encryption that SWIFT uses for authentication, many counterparties automatically reject it. MT799, on the other hand, is an authenticated free-format message whose header carries a test key (MT test code) that SWIFT verifies on receipt. In 2025, SWIFT began enforcing stricter validation for all Category 2 messages, so any MT999 sent after January 2025 is typically rejected unless converted to MT799 or paired with an MT199.
How do I fix this?
Follow these steps in your SWIFT terminal or host-to-host gateway. These paths are current for SWIFT Release 2026 as of Q1 2026.
- Open the message template
Go to Messages → New → Free Format → MT999. If you're using a host-to-host channel, the menu is File → New → SWIFT Message → MT999.
- Convert the message type
Change the message type field from MT999 to MT799. The field is labeled “Message Type” and is located in the header block (Field 20).
- Insert the test key (MT test code)
Enter the test key pair agreed with your counterparty in Field 70 (Remittance Information). The format must be exactly //KEY/[16-character key]. If your bank uses granular RMA, verify the key is authorized for MT799 in the SWIFT RMA portal.
Example: //KEY/A7B2C9D4E6F8G3H5
- Re-validate and release
Press F6 (Validate) or click the green check-mark icon. If the validation passes, release the message with F8 (Release) or Actions → Release.
- Check acknowledgment
Watch for an incoming MTACK or an error code 2100 in the SWIFT FIN log. A positive acknowledgment means the message is now authenticated.
Why did my fix not work?
Try these alternatives when the above steps still leave you with a rejection.
- Switch to MT199 instead
If your counterparty accepts MT199, create a new message (Messages → New → Free Format → MT199), populate the same fields, and release without a test key. MT199 is also authenticated via RMA and is widely accepted for “readiness to proceed” confirmations.
- Use a cover-payment chain
If the purpose is confirming funds for an eventual MT103, send MT910 (Confirmation of Credit) instead. MT910 is automatically authenticated and shows the credit amount to the beneficiary’s account.
- Contact the advising bank
If the recipient still rejects the message, ask them to whitelist your BIC in their SWIFT RMA profile for MT799. This is common when the test key pair is new or recently rotated.
How can I prevent this from happening again?
Keep these practices in place so the issue doesn’t recur.
| Action | How to Do It | Frequency |
|---|---|---|
| Update test-key pairs | Rotate MT test keys every 90 days in your SWIFT RMA portal. | Quarterly |
| Maintain RMA matrix | Enter every counterparty BIC and allowed message types in your internal RMA matrix. | Ongoing |
| Use templates | Save a pre-configured MT799 template with mandatory fields pre-filled to avoid format errors. | Before each release |
| Log rejections | Export SWIFT FIN logs monthly and tag any “Unauthenticated Format” errors for trend analysis. | Monthly |
According to the SWIFT Standards Release 2026 Guide, free-format messages without authentication are now blocked by default. Migrating to MT799 is honestly the simplest path to compliance and faster settlement cycles.
Is MT999 completely useless now?
MT999 still has limited use cases, like internal bank communications where authentication isn't required. Honestly, it's not worth the hassle anymore unless you're dealing with a very specific scenario that doesn't require SWIFT authentication.
What’s the difference between MT999 and MT799?
MT999 is completely free-format with no authentication mechanism. MT799, however, includes a test key in Field 70 that SWIFT checks during validation. That test key acts like a digital signature, proving the message came from an authorized sender.
Do all banks accept MT799?
While MT799 is widely supported, some banks still prefer MT199 for certain transactions. Others might have specific requirements about test key formats or RMA permissions. When in doubt, ask your counterparty which free-format message they prefer before sending.
What happens if I send an MT999 without converting it?
Since SWIFT started enforcing stricter validation in 2025, unauthenticated MT999 messages are automatically blocked. You'll see error codes like 2100 or 2200 in your FIN logs, and the receiving bank will never process the message.
Can I use MT999 for anything useful anymore?
About the only time MT999 might be acceptable is for internal bank testing or communications where authentication isn't required. For anything involving external counterparties, you're better off using MT799, MT199, or MT910.
How quickly does SWIFT enforce these new rules?
Banks had about a year to prepare after the announcement in 2024. Now that 2026 is here, non-compliant messages get rejected immediately. There's no grace period anymore.
What’s the easiest way to comply?
That single change takes about five minutes and solves 90% of authentication issues. The test key format is standardized, and most banks already have test keys set up in their RMA portals.
Can I automate this conversion process?
Most SWIFT service bureaus and host-to-host providers offer message transformation services. You can set up rules to automatically convert MT999 to MT799 and insert the test key based on the counterparty's BIC. Just make sure your automation handles the test key rotation schedule.
What if my counterparty refuses MT799?
MT199 is another authenticated free-format option that doesn't require a test key. For fund confirmations related to MT103 payments, MT910 is the authenticated alternative. Both are widely accepted and require minimal changes to your current processes.
How do I know if my test key is valid?
After inserting the test key in Field 70, run the validation check in your SWIFT terminal. If you see green checkmarks and no error messages, your key is valid. Then watch for the MTACK message in your FIN logs within a few minutes.