I'm back with a paypal issue. I've managed to finally capture payments where I've set a platform_fee to be deducted from the total sale. It does deduct the set platform_fee from the amount that the seller receives (listed as platform fee). The completed transaction's response (as well as the GET order's response) show that the transaction fee was sent to the merchant_id of the marketplace platform's sandbox account. However it looks strange to me that the email address attached to it is correct except it is prefixed with "cs-".
Here's a snippet from the response when I capture the payment:
"payment_instruction": {
"platform_fees": [
{
"amount": {
"currency_code": "GBP",
"value": "50.00"
},
"payee": {
"email_address": "cs-sb-5ncon7179067#business.example.com",
"merchant_id": "3P2BRV2QKVZ22"
}
}
],
"disbursement_mode": "INSTANT"
},
Now, the money is all accounted for EXCEPT for the platform fee; I can't see it in my expected sandbox account. I've tried this on a fresh developer account/platform as well, with the same result. One of the accounts I've tried this on is also an approved paypal partner.
I've also tried changing the parameters (as it solved my previous issue) by setting the payee to email, to merchant id, and to default. It all points to the platform's sandbox account, but it doesn't appear in the wallet. I've also made sure my sellers are onboarded with the PARTNER_FEE feature.
Do you have an idea of where I can check this? I don't see it in the activities area of the sandbox account. Thank you.
In the sandbox environment, the partner fee disappears. It goes nowhere and you won't see it end up anywhere.
For the live environment, the partner fee does not go to the partner PayPal account. Rather, it goes directly to the bank account that the partner has set up for this settlement. Contact your partner relationship manager at PayPal for details on changing the bank if needed.
Related
How can I sent money in INR using Paypal business account (REST API)
I have created an account from India in Paypal .But when I tried to sent money using sandbox account.Got error.
{
"name": "PAYOUT_NOT_AVAILABLE",
"message": "You live in a country that is not allowed to send this payout.",
}
Then I found this answer and created a new account with country as UK.
Now I can call my payout API with
"currency": "GBP"
How can I do transactions in INR?
I have created an account from India in Paypal .But when I tried to sent money using sandbox account.Got error.
Are you referring to the live account that you used to sign in to https://www.paypal.com/signin?intent=developer&returnUri=https%3A%2F%2Fdeveloper.paypal.com%2Fdeveloper%2Faccounts%2F
Or are you referring to the sandbox Business account on that list?
When testing in sandbox mode, the important thing is the country of the sandbox account on that list. You may need to create a new Indian Business account in the sandbox environment, and use that for Payouts.
I am setting up a payment integration with PayPal Checkout Buttons and Paypal Orders API V2, which I test in the sandbox environment (no fancy shop system in use).
When an order is paid and status is completed, the Paypal Orders API V2 returns a valid response, but I do not completely receive the payer address from my sandbox buyer account.
Payer looks like this:
"payer": {
"name": {
"given_name": "<given_name>",
"surname": "<surname>"
},
"email_address": "<email>",
"payer_id": "HEU6X43KU231",
"address": {
"country_code": "DE"
}
}
but the payer definition says that the payer should also contain:
address_line_1,
address_line_2,
admin_area_1,
postal code
I would like to use this information to send an invoice to the customer after payment is completed.
First, I thought, the address information is not available in my sandbox buyer account, because you do not find this information in the paypal dashboard (in the details of the respective sandbox account), but the address information is available at https://www.sandbox.paypal.com/businessprofile/settings/address
The whole thing would work with a shipping address, but this look like conceptual mismatch. My order item has the "category": 'DIGITAL_GOODS' and I've set the "shipping_preference": 'NO_SHIPPING', because I sell a digital product, which is automatically delivered after the payment process.
As a workaround I could also ask for the address information in the dialog in our part of the order process (in our GUI, before checkout), and prefill the paypal payment dialog with the userdata entered in our GUI, but in terms of user experience I would prefer to use the paypal data.
Does someone have a clue how to receive the payer address data?
Thanks a lot in advance
I will get the documentation clarified.
But to just answer your question, by default the address of the payer is not shared, just the country_code - to get the complete payer.address you will need to call your account manager or merchant support and they can enable it for your account if you meet their criteria.
I'm trying to accept Paypal payments and i used Express Checkout C# SDK.
But when i'm trying to do a payment, i'm getting a paypal page with this message
"We are not able to process payment using PayPal account at this time. Please return to the merchant" and a button to return to merchant site (cancel url)".
Automatically created accounts (country FR) are not working so i tried to create US accounts not working too. All my accounts are verified.
I tried also to clean my browser cookies (see this post)
Does anyone have a guess ?
Thanks
I am having a similar problem. What I noticed is that if the buyer test account only has a credit card as funding option, then I get the error as soon as I login with the test account. If, on the other hand, the test account also has a Banking Account funding option, then the login succeeds, but I can only choose the Banking Account option and not the credit card to complete the payment.
If in your case you don't need to test the credit card option, perhaps this could be a solution.
Also, on the official PayPal documentation I read that, in order to accept credit cards, you need to upgrade the business account to a Pro account:
https://developer.paypal.com/docs/classic/lifecycle/sb_about-accounts/
I tried that, but it did not help in my case
The simple solution is add "allowed_payment_method": "INSTANT_FUNDING_SOURCE"
"transactions": [
{
"amount": {
"total": data.grandTotal,
"currency": "AUD",
"details": {
"subtotal": (data.subTotal - totalDiscount).toFixed(2),
"shipping": data.shipping,
"handling_fee": data.handling,
"insurance": data.insurance
}
},
"description": "My orders",
"payment_options": {
"allowed_payment_method": "INSTANT_FUNDING_SOURCE"
},
We are using the python package for Paypal.
The sandbox key is working fine, but when we switch to the live key, only the payout feature stops working:
Error message:
{"name":"AUTHORIZATION_ERROR","message":"Authorization error occurred","debug_id":"87fe36dc5d7a7","information_link":""}
I'm assuming it is because this feature is disabled on live accounts and we can request it, we need this feature for our site to work.
heres the code we're using:
payout = Payout({
"sender_batch_header": {
"sender_batch_id": sender_batch_id,
"email_subject": "Payment Sent"
},
"items": [
{
"recipient_type": "EMAIL",
"amount": {
"value": '{:.2f}'.format(payout),
"currency": "GBP"
},
"receiver": payee_paypal,
# "note": "Thank you.",
},
]
})
if payout.create():
payout_sent.send(promise, payment_id=payout.batch_header.payout_batch_id)
else:
payment_error.send(promise, reason=payout.error)
You need to have Mass Payments enabled on your PayPal account. Easiest way to check to see if you do indeed do have Mass Payments enabled is to visit 'my account' area at https://developer.paypal.com/webapps/developer/applications/myapps
If you do have a green check next to Payouts, then you are enabled. For both RESTful Payouts and Mass Payments. If you do not, then click through the Enable link. You kick off an application if you have a US PayPal account. If not, you'll have to contact your local Customer Support team.
I just spent a few days on this particular problem, and despite everything in all the documentation, none of it is really explicit about what this error means.
The documentation at paypal says that this is an 'Authorization Error' with frustratingly few details.
So, in order to save folks time and frustration and submitting tickets:
Payouts need to be enabled for the live environment. They work in the sandbox but until you actually go to the account status page and click on the link to enable it you will get the AUTHORIZATION_ERROR. It will ask you some questions. Answer them and get ready for them to email you back for a more complete description of how you are going to use their services. This can take a few days.
Do all the steps to verify your account as mentioned here.
After verifying your account. VERIFY YOUR BANK ACCOUNT! Your PayPal account is labelled as verified once you hook up that bank account and put money in, but you will still get a frustrating AUTHORIZATION_ERROR when trying to use Payouts. Because your bank account is not verified. Do the song and dance to verify your bank account. This can also take a few days. (I don't know what this looks like, they don't let me play with real bank accounts.)
Fund your account. Note, you will still get an AUTHORIZATION_ERROR (and not INSUFFICIENT_FUNDS) if your account is insufficiently funded to cover the amount you want to payout plus fees. (At least until you've funded your account the first time, since we've put money in we're getting successes and I've not fully tested all the failure cases in the live environment.)
That's it. But do not be in a hurry, it has been four days since we started trying to test the live environment before we got 'It Worked!' back. Aside from the ticket turn around time. Mind you, you can do a bunch of this in parallel so you might be able to cut it down to two days.
This is Avi from PayPal. I think you are correct in guessing that it is likely an issue with account credentials. Have you tried reaching out to Paypal's Technical Support and filing a ticket? To debug this, account credentials would be necessary and it would not be advisable to put live account credentials in public.
In my case the issue was that my PayPal business account was not 100% verified. I followed this guide (business option) and it worked straight away.
https://www.paypal.com/us/selfhelp/article/how-do-i-verify-my-paypal-account-faq444#business
In a few words, to verify your account simply go to the Profile icon next to "Log out" and complete the steps on your To-do list.
I've just started looking at Paypal's REST api. One thing I can't seem to see is a feature paypal call Adaptive Payments. This allows me to register my app with my developer account, but not be involved in the actual payments. e.g. my app allows my users to accept payment for their services, which they sell through my app.
I have been through Paypals REST API documents. I have worked out how to complete a payment, but all the transactions get sent through to my developer paypal account. I can't find where i would change the receiver details, i.e. the seller, to allow payments to be sent to a different paypal account.
Ok, after some extensive googling, I managed to find the answer here
This general model enables us to easily add support for variety of payment models in the future (Parallel, Chained, etc). The Payee could be a funding instrument (like a Credit/Debit Card,) or a PayPal account (wallet) itself. The Payee could be set explicitly if the Payee is not the same as the Payment Facilitator ( in this current release we only support the case where the Payee is same as the Facilitator) so this is not currently required.
So looks like a payee is just added to the transactions array, but this is not currently implemented as of the date of this answer.
As of January 3rd 2017, PayPal has now added the ability to set the payee to anyone you wish.
Notice the new payee object below:
{
'intent':'sale',
'redirect_urls':{
'return_url':'http://localhost:3000/process',
'cancel_url':'http://localhost:3000/cancel'
},
'payer':{
'payment_method':'paypal'
},
'transactions':[{
'amount':{
'total':'10',
'currency':'USD'
},
'payee':{
'email': 'payee#test.com'
},
'description':'My amazing product'
}]
}
However, there doesn't seem to be an ability to have multiple payee's.
Additional info here: https://devblog.paypal.com/setting-payee/