Stripe fits a lot of your criteria — you can accept credit card payments without a merchant account. You also get to control the payment flow without having to worry about PCI compliance.
A clean and well-structured REST API
The API is based entirely on REST — you can even use curl to charge cards:
curl https://api.stripe.com/v1/charges
-u <YOUR_API_KEY>:
-d amount=400
-d currency=usd
-d "description=Charge for user@example.com"
-d "card[number]=4242424242424242"
-d "card[exp_month]=12"
-d "card[exp_year]=2012"
-d "card[cvc]=123"
Excellent developer tools and a sandbox
You can test your payment form integration with test API keys before going live. More info: https://stripe.com/docs/testing
Good example API implementations, preferably in in Python or Ruby
Stripe has official libraries in Python, Ruby, PHP and Java, and there are more community-supported ones here: https://stripe.com/docs/libraries
Worldwide credit/debit card coverage
You can charge all international credit and debit cards with Stripe.
Rates cheaper than PayPal (or the possibility to chose a payment plan)
You pay one standard rate of 2.9% + 30¢ per transaction. Unlike PayPal, there’s no extra charge for American Express or international payments. Details here: https://stripe.com/help/pricing
I am an engineer at Stripe. Feel free to drop by our chatroom if you have more questions. You can also email us at support@stripe.com.