Paypal Standard Payments Setup with IPN
This How-to will run through the steps to setup Paypal Standard Payments with IPN Notification.
I was having trouble and there was scattered information on the forums. Turns out the problem I had was simple and related to using the wrong URL for the IPN. Follow these steps and you should be able to get it up and running.
Note: so far I have only tested this on Paypal’s Sandbox (development area)
Note: so far nobody I have spoke to has successfully got this to work in Live mode. It does not change an order to ‘processing’ once payment has been confirmed by paypal. The order stays as ‘pending paypal payment’ and returns and ‘invalid IPN’ statement. This bug has been raised and remains unanswered by Magento
PayPal Sandbox |
First, sign up for a Paypal Developer Account. Then under Test Accounts on the left create one buyer and one seller/premier (store) test account. The buyer account should have a fake credit card added to it and some money in the fake Paypal account.
Note: emails sent from the PayPal Sandbox testing environment don’t actually go to the designated email addresses. The “Test Email” link shows you all the messages that were sent and received by the test e-mail addresses.
Magento |
In Magento let’s setup PayPal Standard.
Under System–> Configuration–> PayPal Accounts:
Enter the Business/Store Name. The name you enter in this field is used when all the items in the Magento shopping cart are aggregated into a lump sum on the Paypal invoice (see below).
Enter the test e-mail address that you used for the seller/premier/business PayPal account representing your web store account in the Paypal Sandbox.
Turn on the Sandbox option to enable testing in the PayPal Sandbox (no real transactions). Note: you must be separately logged in to the Paypal sandbox environment during the entire testing period.
Next go to: System–> Configuration–> Payment Methods–> PayPal Standard
Add these settings:
- Enabled: Yes
- Payment Action: Sale (actual transfer of funds)
- New Order Status: Processing (the order will be paid instantly through Paypal)
- Transaction Type: select “Individual Item” to have all the items in the Magento shopping cart listed separately on the Paypal invoice, or “Aggregate Order” when you just want a lump sum for the whole order on the Paypal invoice.
Turning On IPN in PayPal |
Go back to your Paypal Developer Account and login if necessary. Click on to “Test Accounts”: Choose your “seller account” (this should be a premier account) Click the button to “Enter Sandbox Test Site” This will log you in as that user.
You need to go to Profile and turn on IPN (My Account>Profile)
URL Rewriting and IPN |
Note: the problem I had was that I was using the IPN Address with a ReWrite Search Engine friendly structure without URL Re-Write turned on in the Admin. To turn it on (or off) go to System–>Configuration–>General–>Web
If using URL ReWrite (Search Engine Friendly URLs) our IPN Url will be:
http://www.storename.com/paypal/standard/ipn/
If your are not using URL ReWrites your address should be:
(I think this is correct, have not tried it fully)
http://www.storename.com/index.php/paypal/standard/ipn/
Disable HTTP Password Protection |
Warning: Any HTTP password-protection on your website must be disabled in order for IPN to work. Disable the password protection in your .htaccess file to allow the IPN response to come through to your store from PayPal.
Configure Auto Return in PayPal |
Go to Website Payments under Profile on the PayPal website. Setup your return URL as, (again if using URL Rewrites): http://www.storename.com/paypal/standard/success/ If your are not using URL Rewrites your address should be: (I think this is correct, have not tried it fully) http://www.storename.com/index.php/paypal/standard/success/
Observe that in PayPal, Auto Return is not the same as IPN (Instant Payment Notification). IPN is what PayPal uses to tell your store that the payment has gone through. Auto Return is the URL that PayPal sends your customer back to at your store after they have paid on PayPal’s website.
The Paypal Identity Token |
You don’t need to enable Payments Data Transfer in your Website Payment Preferences to integrate Magento with Paypal Standard Payments. If you do this anyway, you will get a so-called “identity token” from Paypal. This token isn’t used in the Magento/Paypal integration and you should ignore it.
Testing The Magento/Paypal Integration |
Before you start testing your integration using the Paypal Sandbox, ensure that you are logged in to your Paypal Developer Account.
For your test orders, it may be convenient to use the same postal address that Paypal made up for your test buyer account. To pay for your test orders, you can log in to the test Paypal account and pay the Magento order from the balance. You may also want to test using the fake credit card number that you have been given for the test Paypal account. Use any CVC code, it isn’t verified in the sandbox.
Automatically Creating The Paid Invoice |
Now when you complete an order, a Sales Order will be created with the Pending Status. If you check your Orders in Magento before submitting the PayPal payment, you will see this order status. But then, when you complete the PayPal Payment and are returned to the Checkout Complete page on Magento, your Order should move to Processing and an Invoice should be created showing the Order as Paid.
This way you should know if the payment was successfully made. As always, test this fully to make sure it is working: you don’t want to be fulfilling orders without the PayPal payments actually being made!
Note in the bottom left corner, the updated status showing that an invoice has been created and the total now due is 0.00. Before the payment was made this showed as pending with the full amount due.
If an Invoice is Not Created |
If an invoice is not created, but the Order history does display a line indicating “Received IPN verification”, then this means that PayPal indicated to Magento that the payment’s status was still pending (in this case, the PayPal IPN POST data field payment_status=”Pending”). Check to make sure that Payment Review is turned off in your seller settings on the PayPal website. In the PayPal Developer sandbox, this setting can be found to the right of your account listed on the Test Accounts page.
Further Testing |
Once you’ve managed to get this to work, you may want to test all the various possible situations in the Magento end:
- Your customer checks out without registering as a member.
- Your customer is logged in as a member.
And the various ways to make a payment with Paypal:
- Your customer logs into the fake Paypal account and makes the payment from the balance.
- Your customer makes the payment using a credit card without creating or logging in to a Paypal account.






