So i was integrating my app with paypal for express checkout and could not figure out how to add in my gst/hst number for Canada to the receipt.
it is mandatory if i am to charge taxes in Canadian shipment, that the gst/hst number be visible in the receipt, but cant seem to figure this out.
any help would be appreciated!
below is an example of my receipt but i want to add some additional content for the gst/hst number. where would i be able to and how.
references:
https://developer.paypal.com/docs/api/orders/v2
https://turbotax.intuit.ca/tips/self-employed-business-win-creating-cra-compliant-invoice-8827#:~:text=It%20is%20very%20important%20that,you%20cannot%20charge%20GST%2FHST.
ANSWER:
so this is just a trick around it since i couldnt find a proper solution, but i just add in another item with the GST/HST Number. i leave the cost of it to 0 so it does not affect the total price but the buyer is still able to get the gst/hst number on their receipt.
The amount key can include a breakdown key, which is an object of type amount_breakdown documented here: https://developer.paypal.com/docs/api/orders/v2/#definition-amount_breakdown
tax_total is the key name of one of the objects you can include in the breakdown.
The breakdown's subtotals must add up to the actual amount value.
Related
I was helping a customer figure out an issue and creating test invoices in the sandbox.
After the 4th one I started getting this error:
{
"name": "BUSINESS_ERROR",
"message": "Number is too long.",
"information_link":
"https://developer.paypal.com/docs/api/invoicing/#errors",
"debug_id": "2ca1d32e1fed3"
}
What number is too long? I've tried looking through all the info and nothing appears too long our out of spec.
Hopefully somoene at Paypal can use the debug ID to track this. This test program has worked without issue for months.
So, after dealing with PayPal support the number that is too long was the invoice number.
When I started my testing in the sandbox I always had PayPal auto-generate the invoice number. It gave something like:
INV2-UR7F-35N45-DGQZ-BYDE
So, after a few tests, the invoice number was incremented (by PayPal) and eventually reached:
INV2-UR7F-35N99-DGQZ-BYDE
Now, on one more call the invoice would be incremented to:
INV2-UR7F-35N100-DGQZ-BYDE
Which is 26 characters, and the maximum length for invoice number is 25.
The solution? I was told to use smaller invoice numbers. ;)
I feel this is a possible bug in the auto-incrementation of the PayPal Invoice, but I am posting this so when others run into this they know what to do.
What I did was in my sandbox account call the Create Invoice Draft API with an invoice number like "Test001" so that there will be plenty of increments left in the invoice number. After that call there should be no need to supply an invoice number, at least for a very long time.
I am using PayPal's express checkout authorisation and capture API, the documentation describes the following limits.
AMT
(Required) Amount to capture.
Character length and limitations:
Value is typically a positive number that cannot exceed 10,000.00 USD
and
An authorization enables you to capture multiple payments up to 115% of, or USD $75 more than, the amount you specify in the DoExpressCheckoutPayment request.
I've spent a great deal of time looking as to what these limits would be in other currencies (specifically GBP) with no success. Does anyone know if these are documented somewhere ?
The limit for any other currency except for JPY is any amount in that currency that equivalent to 10,000 USD.
I have experienced a problem similar to this question, while trying to make my discounts work with SetExpressCheckout.
I've resolved to use the method the accepted answer's author suggests: creating an additional product named "discount" with a negative value.
This is not too bad, but I'm getting fed up to have to accommodate Paypal with all the changes I make on my cart, and basically send the whole cart to Amazon when the customer has already had plenty of opportunities to check it while on my website and he now just wants to pay.
I would prefer to send the customer to a blank Paypal payment page, without the cart on the left.
Is this possible with Paypal Express Checkout? Any alternative?
If you go thru Paypal Express Checkout then it possible to give discount
(1) – Item name. The item name can identify this item to distinguish it from other line items in the order.
(2) – Item description. This field identifies which of several items the buyer is purchasing. For example, you may be offering an item in different sizes. Knowing the size helps the buyer decide whether the one they selected was appropriate. If the item is an eBay auction item, it is recommended that you provide the phrase "eBay item" in this field.
(3) – Item number. Each item can be further identified by an item number. If the item is an eBay auction item, it is recommended that you provide the eBay item number in this field.
(4) – Item unit price. This field specifies exactly how much one unit of the item costs. It can be a positive or negative value but not zero.
(5) – Item unit quantity. This field identifies the number of units the buyer is ordering. PayPal calculates the value in the Amount (6) column as the product of line-item unit price and line-item unit quantity. You can also show other detailed information about the order:
(7) – Item total and tax, which are the total of all items in the order and the tax, respectively.
(8) – Shipping and handling, which is the sum of the shipping and handling amounts.
Note: You must determine actual shipping and handling amounts.
(9) – Shipping discount. If the buyer is receiving a discount on shipping, the value appears as a credit in this field.
(10) – Insurance. This field shows the insurance fee when there is insurance on shipping.
(11) – Total. This is the total of the order, including shipping, handling, tax, and other price adjustment-related items.
visit the link ...to get more info https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECCustomizing/
NO, you can not send to the customer to a blank Paypal payment page, without the cart on the left. Because you can not say: I'm not selling anything and give me your money.
But alternative, you can do this way:
Change your coffee = $200 instead of $20 for total prize. And you don't need to list anything else after.
Why do we have to repeat the fields like L_PAYMENTREQUEST_0_NAME0 or L_PAYMENTREQUEST_0_DESC0 or PAYMENTREQUEST_0_DESC or even PAYMENTREQUEST_0_AMT in DoExpressCheckoutPayment if we already set them in SetExpressCheckout? Shouldn't they be stored in the session that we've created in the first step?
SEC simply prepares the system for a checkout and gives you a token. Much could change between the SEC and the DECP call, so it's left up to DECP to finalize everything.
For example, with SEC you might pass a shipping address, but then during checkout the buyer changes it to one of their PayPal addresses. Then when you call GetExpressCheckoutDetails you'd get back this address, so then the system wouldn't know which one you wanted to actually include with the order. It would use whatever you pass into DECP.
Same with tax information, shipping, etc. which of course adjusts the final amount, too. Maybe you don't have any address during SEC so you have to wait for GECD to get an address and calculate shipping and tax based on that. Then the values for those parameters and the total would be different between SEC and DECP.
Those are just a couple of examples, but again, there are lots of things that could change between SEC and DECP depending on your application, so you just need to make sure that whatever you want to be included in the final payment details is included in DECP.
I have, in my opinion, pretty complex order case to implement. Paypal was choosen as a solution, but I can't figure it out how to implement it properly using express checkout (or anything else, but I am not sure what is proper to use).
Final order that can consist of (most complex example here):
subscription A with 1 month free trial - 100$/year
subscription B without free trial - 200$/year
initial payment for entire order - 50$
Requirements:
start of the whole order can be postponed due to some factors (I can set PROFILESTARTDATE to the given date)
all subscriptions in the order can be either monthly or yearly, so case where subscription A is paid per year and subscription B per month IS NOT ALLOWED
whole order must be processed in one paypal redirect (paypal page with products listed where client can login to confirm the order)
My problem:
in that order subscription A starts 1 month later than B but I can only set one PROFILESTARTDATE
I could use TRIAL*** parameters (like TRIALBILLINGPERIOD) for subscription B but I can only set one such parameter per paypal request for express checkout, so same problem as above
What would be a best option for such case ?