Peter,
Normally, your scenario is very common for any web distributed application, and the most common approach is, let the subsystem manage the transaction to you, and provide only an code the signals the transaction.
For example, your application could call an web service to process a credit card shopping, and if the web service call return 102 code, means that the credit card processing has been failed. Your application based on this code should rollback any operations that could be done.
But, there is some cases the an transactions must be started by one application and propagated for others web services. To meet this requirement, you must use some SOA infrastrcture like ESB (Enterprise Service Bus) that take care of this transaction propagation.
The ESB service do this creating a common tunnel that every incomming and outcomming web services must pass by it. And an transaction could be remaining during some business service execution.
But honestly, at the most cases, the called web service takes care of the processing transaction and signals are shared among the business processes. SOA and ESB is a emerging industry technology that do not have many cases using this approach. But this story tends to change as Gartner has said a few months ago
Best Regards,