My use case: buyer buys service from seller, our app facilitates and guaranties the transaction. It should work in the way that buyer sends the money to us, we check if buyer received the service, in that case we send the money to seller. Otherwise we refund the buyer. Important is to have 2 payments solutions for the buyer: paypal account and card payment without account. The whole use case is international. I'm testing this in sandbox environment.
Possible solutions:
Adaptive payments - Delayed chained payments: Works fine. Disadvantage is that the seller must grant us permission so that the refund works. The problem here is that the permission api is under maintenance, so i am waiting for all the changes https://developer.paypal.com/docs/classic/permissions-service/integration-guide/PermissionsWhatsNew/ . Is this big deal?
Express checkout Authorize/Capture + Mass Pay: Works OK. Advantage here is that in case of refund (void after authorize) we don't have to pay the fee. Disadvantage here is that I'm not sure if authorize holds the funds, so that even buyer without account paying with card cannot touch the money and I can capture them in 3 days. Another issue is that when I authorize 40$ from PayPal account with 30$ balance, I capture the whole 40$. How come?
I have no previous experience with PayPal I now the app should work on international scale. Please if you have any tips, articles or practical experience with this use case share it!
EDIT: Delayed Chained Payment is great. I solved the issue by making my application the secondary receiver and the seller primary one. Seller must grant a permision to my app in case of refunds, but there is no better way.
However, now the issue is that when buyer pays without account (Guest Payment - with card) all receivers must be Business or Premier account holders:
Each receiver of a guest payment must be a verified PayPal business or premier account holder.
Source: https://developer.paypal.com/docs/classic/api/adaptive-payments/Pay_API_Operation/
The issue is that in sanbox it works even if the primary receiver (seller) is NOT Business or Premiere account. What is wrong?