Give every business task and message a stable unique ID. Processing the same message twice should have the same effect as processing it once; software teams call this idempotency.
Record sent, received, accepted, completed, failed, cancelled, and timed-out events. Keep a reconciliation process that compares both systems and repairs differences after delays or outages.
Agree on retry ownership, timeout values, out-of-order messages, offline rules, units of measure, time zones, security, monitoring, and the maximum acceptable response delay before the test begins.