Hi Steve,
I’m also from Spain, and I’ll use Stripe for my software. Currently, my software is targeted to the local market, so I’ve build it only for charging to spanish users, but I’ve designed all the workflow for international users.
IMHO, the best workflow is: User enters payment details (name, address, country, etc), you validate it, calculate the final price, and then the Stripe payment form is shown.
The important part is calculating the final price. As you may know, you have to charge VAT to all EU residents that haven’t a VAT Id. Also, for validating how much VAT you have to charge, you need at least two “proofs of origin”. They can be the address, the IP (using geolocation), the credit card number, among others. I’ve used the customer’s address and the computer IP. As you may know, you can’t have the credit card number, because if this number “touches” your server, you must comply the PCI regulations.
Now you have the customer address (country) and his IP. If the IP belongs to the same country as the address, you only have to lookup to a DB table storing the country and the VAT % to apply to the price and calculate the final price.
If the customer has a VAT Id, you should validate it using the VIES VAT Validation service (http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl), or something similar. If the validation is correct, you have to apply a VAT of 0% (AFAIK, in the invoice must appear the 0% VAT line).
And that’s all! It seems a lot of work but, IMO, it’s not so hard… The hard thing is to “imagine” the correct workflow and understand VAT rules. But because in Spain entrepreneurs should always charge and declare VAT, we are used to this!
I hope this helps you. And if you have any suggestion about how to improve the workflow, please share with us!