I'm developing a PayPal chained payment app where
Primary receiver = the service provider, gets 90% of payment
Secondary receiver = marketplace, gets 10% of payment
It's all working in the Sandbox environment, but there's a snag - when the primary receiver logs into their PayPal account, and manually refunds a payment they received, the secondary receiver doesn't appear to return their 10% automatically.
E.g.:
Primary receiver was paid $100, passed $10 automatically to
secondary receiver.
Primary receiver decides to refund using PayPal
account interface.
Refund for $100 issued; but secondary receiver
keeps their $10. Primary receiver now out of pocket by $10.
I would like it so that the secondary receiver automatically refunds their portion of a payment if the primary receiver issues a refund.
From reading the documentation from the Refund API (https://developer.paypal.com/docs/classic/api/adaptive-payments/Refund_API_Operation/), I thought this was the default behaviour, no matter if the refund was initiated through an API call or manually through the PayPal account interface.
Do I have this wrong, or is it just a bug with the Sandbox environment?
Would be useful to have this cleared up, as couldn't find any existing threads on the matter.
Update
PayPal Technical Support have told me the following:
Thank you for contacting Merchant Technical Services.
From my understanding you would like to have when a primary receiver perform a refund, the secondary receiver will automatically issued a refund.
If you would like all the receiver to refund the amount, you have to pass the paykey. May I know how the payment was made? If it is using Pay API operation, you have to use Refund API in order to refund the transaction. The refund can't be done by using PayPal account.
Use the payKey of the original transaction in the refund API, it will solve your problem.
And in case if you wish to partially refund the amount, specify the amount to be deducted from primary and secondary receivers in the "receiverList" field.
For more, refer: https://developer.paypal.com/docs/classic/api/adaptive-payments/Refund_API_Operation/#table-3-additional-fields-for-refunds-of-specific-amounts-to-specific-receivers
Related
I am working on a web application for a client and he wants the payflow to work sorta like this:
Seller makes an offer for an item
Customer purchases the item
The seller sees the item is paid for but won't get the payment
When the item has been marked shipped the payment minus app fee and paypal fees will be sent to seller
App Fee is deposited into the application's paypal account
I have implemented it using paypal's express payment api and do the payouts manually. But this has caused double paypal fee's which are incorrect. My client wants to use adaptive payments but that isn't going to work since they require the seller to be the primary receiver and the merchant service be the secondary but for out desired flow that won't work. What other option do I have?
From the description you provide, the best approach is to use Adaptive Payment Delayed Chained Payment. The buyer will make a payment for the item and the seller will directly receive the amount. You can specify the merchant services to be the secondary receiver but when using the Delayed Chained Payment, primary receiver (seller) will always get the payment first and using the Pay API, secondary receiver (merchant services) will get their portion. If you required the seller to be the last person to receive the money then they (seller) should be the secondary receiver.
As title,
Is it able to change the secondary receiver? I am the primary receiver, i am intend to use delayed adaptive payment for my system, the thing is , before i want to release the payment, the secondary receiver might be happen doesn't complete the job i specified, another secondary receiver might completed the job, but i am intend to change the secondary receiver so the secondary receiver which doesn't complete the job cannot receive the money. Am i able to change the secondary receiver?
Nope. It is not allowed to change it.
Within 90 days, you are able to release the money until all the receivers have performed some actions, the money will be credited to all the secondary receivers together.
You will not be able to change the secondary receiver email in ExecutePaymentAPI as it takes only payKey as parameter.
The delayed chain payment expires after 90 days, if you fail to call the ExecutePayment API the transaction expires.
As a side note from personal experience: If you try using Express Checkout and then MassPay, PayPal will not approve your business application because, and I quote, "They don't have visibility of initial payments". The only option is to use Chained Payments or Parallel Payments.
I had Express Checkout and Implicit Adaptive Payments set and my business application was denied. So I suggest you stick to using chained payments.
https://developer.paypal.com/docs/classic/adaptive-payments/integration-guide/APIntro/
Once the secondary receiver is set in the PAY API, it is not possible to be changed later. To fulfill your requirement , I hereby suggest you firstly collecting the full funds from the payer, via PayPal's Adaptive Payment or Express Checkout. And then call MassPay API to send funds to your secondary receivers. Please refer to below page for more details about MassPay API.
https://developer.paypal.com/webapps/developer/docs/classic/api/merchant/MassPay_API_Operation_NVP/
Please also be noted that MassPay is a feature that needs to be requested access to and approved. Please use below links to contact PayPal's Customer Service teams to request this feature.
http://www.paypal.com/cgi-bin/webscr?cmd=_contact-general
http://www.paypal.com/cgi-bin/webscr?cmd=_contact-phone
We are using Adaptive Delayed Chained Payment method to transfer funds from one party to another party with ourselves as an intermediary merchant that takes a percentage. In this scenario we are the primary receiver and there is a secondary receiver as well. In case of a partial refund to the party sending the money (the client) we need to transfer the balance fee less our commission to the secondary receiver.
It seems that we cannot call the "Execute" function after the partial refund process to complete the transaction flow. i.e. once the the client is partially refunded, we as the intermediary and primary receiver hold the balance funds. The secondary receiver does not get paid since we cannot call the "Execute" function. So the balance fee is stuck at the primary receiver end. So how can we send the balance fee to the secondary receiver in this partial refunding process? Any help would be highly appreciated.
Two of us have searched this site and other sites, but cannot find anywhere that addresses this issue.
Thanks
You could just create a fresh Pay request with a single receiver on it to sends whatever funds you owe to whomever you owe it.
I have a question regarding chained payments and refunds. We are developing an application that sets up a chained payment, with ourselves as the primary receiver and the provider of the service as the secondary receiver. We provide a mechanism for the secondary receiver to refund the complete payment.
What we want to know is what happens when the secondary receiver has no funds in their paypal account? From testing this in the sandbox and from what we've read, it seems that the secondary receiver component of the refund becomes pending (we assume, as funds are pulled down from an associated bank account). Three things:
Has the primary receiver paid the refund in full and is now waiting to get the payment from the secondary receiver. Implying that, at this point in time, the primary receiver is out of pocket?
What happens if funds cannot be pulled down from the secondary receivers associated bank account?
What happens if we attempt a refund from an unverified user with no funds in their paypal account? Once again, does the primary receiver pay the refund in full and hope to collect the secondary receivers portion when they do have funds?
Extrapolating from the documentation:
The primary receiver does not initiate a refund until it receives the secondary receiver's refund.
If the funds cannot be pulled down from the secondary receiver's bank account (or the secondary user has no bank account linked) the refund request is cancelled.
The documentation is explicit in saying that it refunds the secondary to the primary before initiating a refund from the primary. Lack of documentation to the contrary suggests they handle the rest of the problems in this situation the same way they handle other refund problems.
When processing the Refund API to the payment made by AdaptivePayment Pay operation if the secondary receiver does not have enough money in their account
what happens to the API call? would it fail as whole or would the missing fees be draw out of primary receiver's account?
Testing this scenario with instant chained payment, and refund was cancelled. So obviously its all or none.