1

I'm using Express Checkout in Paypal and trying to pass discount as a separate item (according to manual this is supported).

I pass the following part (full discount on the item, but require to pay shipping):

&NOSHIPPING=0
&PAYMENTREQUEST_0_SHIPPINGAMT=2.00
&PAYMENTREQUEST_0_SHIPDISCAMT=0.00
&L_PAYMENTREQUEST_0_NAME0=Item1
&L_PAYMENTREQUEST_0_QTY0=1
&L_PAYMENTREQUEST_0_AMT0=25.90
&L_PAYMENTREQUEST_0_NAME1=Discount
&L_PAYMENTREQUEST_0_QTY1=1
&L_PAYMENTREQUEST_0_AMT1=-25.90
&PAYMENTREQUEST_0_ITEMAMT=0.00
&PAYMENTREQUEST_0_AMT=2.00

But I get "The totals of the cart item amounts do not match order amounts." I checked many cases and it seems that all other issues people had are already addressed in my example, but it still doesn't work.

Any hints? Thanks!

Volder
  • 972
  • 4
  • 13
  • 29

2 Answers2

1

As far as I know the "ITEMAMT" should not be zero . It must be greater than zero . So , if you use like this, it should work :

&NOSHIPPING=0

&PAYMENTREQUEST_0_SHIPPINGAMT=2.00

&PAYMENTREQUEST_0_SHIPDISCAMT=0.00

&L_PAYMENTREQUEST_0_NAME0=Item1

&L_PAYMENTREQUEST_0_QTY0=1

&L_PAYMENTREQUEST_0_AMT0=25.91

&L_PAYMENTREQUEST_0_NAME1=Discount

&L_PAYMENTREQUEST_0_QTY1=1

&L_PAYMENTREQUEST_0_AMT1=-25.90

&PAYMENTREQUEST_0_ITEMAMT=0.01

&PAYMENTREQUEST_0_AMT=2.01
Eshan
  • 3,647
  • 1
  • 11
  • 14
  • Yes, I just ran some tests and was about to respond with this same answer. If the ITEMAMT is 0 it's going to give you this error regardless of whether or not the math adds up. When I made a small adjustment so the ITEMAMT actually had a value then it worked fine. – Drew Angell Nov 14 '14 at 22:18
  • 1
    @AndrewAngell But is there any standard way to give a full discount to the customer and request to pay only for shipping? I think this is pretty straightforward business case which many merchants can ask for. Also this 0 for ITEMATM is not prohibited by paypal manuals, however AMT (total with shipping) cannot be 0, which makes sense. This is so strange that Paypal has those artificial limitation of real-life :( – Volder Nov 15 '14 at 09:43
  • It's a little surprising to me they're not allowing that, too. Seems like I've even done it before, but I guess not. The only thing I can think of off the top of my head is to leave the items out of the request so you don't need to send ITEMAMT. – Drew Angell Nov 15 '14 at 19:04
  • You could post a message to [PayPal MTS](http://www.paypal.com/mts) and see what they have to say. Include a sample of your request to show that ITEMAMT + SHIPPINGAMT + HANDLINGAMT + TAXAMT = AMT, but we're still getting the error saying it doesn't add up. I doubt they'll have any better solution, though, unfortunately. I've been begging for a true "discount" field to be added in EC for years now. – Drew Angell Nov 15 '14 at 19:10
  • @AndrewAngell thanks for your valuable comments. At the moment I just made discount less by 0.01 and then add additional discount to shipping 0.01 and end up with the same amount. Looks not good, but don't think it makes sense just to pass shipping, as the customer has to see the items listed on Paypal page. Will ask Paypal, but last time it took them several months to respond on my tickets. – Volder Nov 15 '14 at 20:41
  • I'll post something about it because I'm curious, too. I'm a PayPal Partner so I get priority support. ;) – Drew Angell Nov 16 '14 at 02:26
  • @Volder, Did you get any workaround for this issue? Item cost 0 and checkout with shipping price only thorough PayPal? – ramya Aug 09 '18 at 07:59
0

I received an answer from official support of Paypal:

PAYMENTREQUEST_0_ITEMAMT - cannot be zero.

Two options: Either reduce discount in main items section by 0.01 making the total value of goods ITEMAMT 0.01 and then additionally make a shipping discount of 0.01 (balancing the final sum).

PAYMENTREQUEST_0_PAYMENTACTION=Sale
<!-- Item 1-->
L_PAYMENTREQUEST_0_NAME0=Item1
L_PAYMENTREQUEST_0_QTY0=1
L_PAYMENTREQUEST_0_AMT0=25.90

<!-- Iteam 2-->
L_PAYMENTREQUEST_0_NAME1=Discount
L_PAYMENTREQUEST_0_QTY1=1
L_PAYMENTREQUEST_0_AMT1=-25.89
<!--Total of items amount-->
PAYMENTREQUEST_0_ITEMAMT=0.01

<!-- Shipping/tax/handling etc-->
PAYMENTREQUEST_0_SHIPPINGAMT=2.00
PAYMENTREQUEST_0_SHIPDISCAMT= -0.01
<!-- Total amount -->
PAYMENTREQUEST_0_AMT=2.00

Another option is to move shipping costs into items section:

L_PAYMENTREQUEST_0_NAME0=Item1
L_PAYMENTREQUEST_0_QTY0=1
L_PAYMENTREQUEST_0_AMT0=0.00
<!-- Iteam 2-->
L_PAYMENTREQUEST_0_NAME1=shipping cost
L_PAYMENTREQUEST_0_QTY1=1
L_PAYMENTREQUEST_0_AMT1=2.00
<!--Total of items amount-->
PAYMENTREQUEST_0_ITEMAMT=2.00
PAYMENTREQUEST_0_AMT=2.00

For my question - why don't they implement it properly, I've got no response.

So we are left to use one of this crazy workarounds ((

Volder
  • 972
  • 4
  • 13
  • 29