Two successful APIs do not make one transaction
If a service commits order state and then publishes to Kafka, a crash between those operations loses the event. Publishing first creates the inverse failure. A transactional outbox stores the state change and an event record in one local database transaction; a relay publishes committed records later.