I have passed the following request (full discount on an item, but required to pay shipping):
$nvstr = "
&L_PAYMENTREQUEST_0_NAME0=IOB+Joining+Package+Fee
&L_PAYMENTREQUEST_0_QTY0=3
&L_PAYMENTREQUEST_0_AMT0=.1
&L_PAYMENTREQUEST_0_NAME1=Discount
&L_PAYMENTREQUEST_0_QTY1=1
&L_PAYMENTREQUEST_0_AMT1=-.1
&PAYMENTREQUEST_0_ITEMAMT=0.2
&PAYMENTREQUEST_0_TAXAMT=0
&PAYMENTREQUEST_0_SHIPDISCAMT=0
&MAXAMT=0
&PAYMENTREQUEST_0_SHIPPINGAMT=0.3
&PAYMENTREQUEST_0_HANDLINGAMT=0
&PAYMENTREQUEST_0_AMT=0.5
&PAYMENTREQUEST_0_PAYMENTACTION=Sale
&CUSTOM=.1
&SOLUTIONTYPE=Sole";
after payment I see that the discount price is multiplied by quantity.
That's intended. Express checkout supports Discount by Passing negative amount in the line item. It works as other line items and it will be multiplied by quantity. You could change your quantity to adjust with your discount amount.