This paper presents the design and implementation of a transaction service that complies with the WS-Coordination and WS-AtomicTransaction standards. Such service builds upon XActor, a distributed transaction manager that supports an open-ended set of transports, and enhances it with full support for atomic transactions over Web services. The paper summarizes the main lessons we learned from implementing those standards. It also identifies weaknesses in the WS-AtomicTransaction specification and presents advice for implementors of any systems based upon WSCoordination.