Notice of non-liability:
PayPal, Inc. is providing the information i n this document t o you “AS-IS” with all faults. PayPal, Inc. makes no warranties of any kind (whether express,
implied or statutory) with respect to the information co ntained herein. PayPal, Inc. assumes no liability for damages (whether direct or indirect), caused
by errors or omissions, or resulting from the use of this document or the information contained in this document or resulting f rom the application or use
of the product or service described herein. PayPal, Inc. reserves the right to make changes to any information herein without further notice.
This document describes the Instant Payment Notification (IPN) message service.
Documentation Feedback
Help us improve this guide by sending feedback to:
documentationfeedback@paypal.com
IPN GuideJuly 10, 20125
Documentation Feedback
6July 10, 2012IPN Guide
1
Instant Payment Notification (IPN) is a message service that notifies you of events related to
PayPal transactions. You can use it to automate back-office and administrative functions, such
as fulfilling orders, tracking customers, and providing status and other information related to a
transaction.
IPN Overview
IPN Protocol and Architecture
A Sample IPN Message and Response
Non-IPN Notification Mechanisms
IPN Overview
IPN notifies you when an event occurs that affects a transaction. Typically, these events
represent various kinds of payments; however, the events may also represent authorizations,
Fraud Management Filter actions and other actions, such as refunds, disputes, and
chargebacks.
Introducing IPN
IPN is a message service that PayPal uses to notify you about events, such as:
Instant payments, including Express Checkout, Adaptive Payments, and direct credit card
payments, and authorizations, which indicate a sale whose payment has not yet been
collected
eCheck payments and associated status, such as pending, completed, or denied, and
payments pending for other reasons, such as those being reviewed for potential fraud
Recurring payment and subscription actions
Chargebacks, disputes, reversals, and refunds associated with a transaction
In many cases, the action that causes the event, such as a payment, occurs on your website;
however, your website is not the only source of events. In many cases, events can be generated
by Website Payment Standard buttons, the PayPal API, or by PayPal itself.
You detect and process IPN messages with a listener, sometimes called a handler, which is a
script or program that you write. It waits for messages and passes them to various back-end or
administrative processes that respond the messages. PayPal provides sample code that you can
modify to implement a listener that detects IPN messages.
The actions to take when your listener is notified of an event are specific to your needs.
Examples of the kinds of actions you might take when your listener receives an IPN message
include the following:
IPN GuideJuly 10, 20127
Introducing IPN
IPN Overview
Trigger order fulfillment or enable media downloads when a check clears or a payment is
made
Update your list of customers
Update accounting records
Create specialized “to do” lists based on the kind of event
You are typically notified of events by email as well, but the IPN message service enables you
to automate your response to events. The following diagram shows how events can occur and
how PayPal responds with IPN messages that it sends to your listener:
8July 10, 2012IPN Guide
Introducing IPN
IPN Protocol and Architecture
The diagram shows requests and responses, which are the result of processing button clicks or
API operations on PayPal. PayPal sends an IPN message when it sends a response to a request.
The IPN message is not actually part of the response sent to your website. Rather, the IPN
message is sent to the your listener, which allows you to take actions that are not directly tied
to the operation of your website.
NOTE: The diagram does not show the IPN authen tication protocol messages that validate the
IPN message.
IPN is an asynchronous message service, meaning that messages are not synchronized with
actions on your website. Thus, listening for an IPN message does not increase the time it takes
to complete a transaction on your website.
The IPN message service does not assume that all messages will be received by your listener
in a timely manner. Because the internet is not 100% reliable, messages can become lost or
delayed. To handle the possibility of transmission and receipt delays or failures, the IPN
message service implements a retry mechanism that resends messages at various intervals
until you acknowledge that the message has successfully been received. Messages may be
resent for up to four days after the original message.
NOTE: Unless you are certain that a failure occurred on the the Internet, the most likely cause
of lost, delayed, or duplicate IPN messages is faulty logic in the listener itself.
Because messages can be delivered at any time, your listener must always be available to
receive and process messages; however, the retry mechanism also handles the possibility that
your listener could become swamped or stop responding.
The IPN message service should not be considered a real-time service. Your checkout flow
should not wait on an IPN message before it is allowed to complete. If your website waits for
an IPN message, checkout processing may be delayed due to system load and become more
complicated because of the possibility of retries.
IPN Protocol and Architecture
IPN is designed to be secure, reliable, and asynchronous. To meet these requirements, the
protocol requires you to acknowledge receipt of IPN messages. The IPN service provides a
retry mechanism to handle cases in which a message is not acknowledged; for example, when
a transmission or receipt failure occurs.
When you enable IPN, PayPal sends messages to the IPN listener at the URL you specify in
your account’s profile. You can override the URL to associate other IPN listeners with specific
transactions. In this case, you specify the listener’s URL when you set up a Website Payment
Standard button or a PayPal API operation.
The IPN protocol consists of three steps:
1. PayPal sends your IPN listener a message that notifies you of the event
IPN GuideJuly 10, 20129
Introducing IPN
IPN Protocol and Architecture
2. Your listener sends the complete unaltered message back to PayPal; the message must
contain the same fields in the same order and be encoded in the same way as the original
message
3. PayPal sends a single word back, which is either VERIFIED if the message originated with
PayPal or INVALID if there is any discrepancy with what was originally sent
Your listener must respond to each message, whether or not you intend to do anything with it.
If you do not respond, PayPal assumes that the message was not received and res ends the
message. PayPal continues to resend the message periodically until your listener sends the
correct message back, although the interval between resent messages increases each time. The
message can be resent for up to four days.
This resend algorithm can lead to situations in which PayPal resends the IPN message while
you are sending back the original message. In this case, you should send your response again,
to cover the possibility that PayPal did not actually receive your response the first time. You
should also ensure that you do not process the transaction associated with the message twice.
IMPORTANT:PayPal expects to receive a response to an IPN message within 30 seconds.
Your listener should not perform time-consuming operations, such as creating
a process, before responding to the IPN message.
After PayPal verifies the message, there are additional checks that your listener or back-end or
administrative software must take:
Verify that you are the intended recipient of the IPN message by checking the email address
in the message; this handles a situation where another merchant could accidentally or
intentionally attempt to use your listener.
Avoid duplicate IPN messages. Check that you have not already processed the transaction
identified by the transaction ID returned in the IPN message. You may need to store
transaction IDs and the last payment status returned by IPN messages in a file or database
so that you can check for duplicates. If the transaction ID sent by PayPal is a duplicate, you
should not process it again.
NOTE: You must track the last payment status returned by IPN messages because PayPal
could send an IPN for a pending payment and a second one for the completed
payment, both of which would have the same transaction ID. Relying on just the
transaction ID could lead to the completed payment being treated as a duplicate.
Because IPN messages can be sent at various stages in a transaction’s progress, make sure
that the transaction’s payment status is “completed” before enabling shipment of
merchandise or allowing the download of digital media.
Verify that the payment amount actually matches what you intend to charge. Although not
technically an IPN issue, if you do not encrypt buttons, it is possible for someone to capture
the original transmission and change the price. Without this check, you could accept a
lesser payment than what you expected.
10July 10, 2012IPN Guide
IPN Protocol and Architecture
IPN Messages Generated by PayPal Payments Standard
PayPal generates an IPN message when your customer clicks a PayPal Payments Standard
(previously known as Website Payments Standard) payment button, such as a Buy Now
button, and completes the transaction on PayPal. You can use this notification to kick-off order
fulfillment, enable digital media downloads, store information in a customer relationship
management (CRM) or accounting system, and so on.
The following diagram shows both the web flow and the IPN message authentication protocol:
Introducing IPN
The numbers in diagram correspond to the following steps:
1. The button action initiates a payment that completes on PayPal
2. PayPal sends your IPN listener a message that notifies you of the event
3. Your listener sends the complete unaltered message back to PayPal; the message must
contain the same fields in the same order and be encoded in the same way as the original
message
4. PayPal sends a single word back, which is either VERIFIED if the message originated with
PayPal or INVALID if there is any discrepancy with what was originally sent
Your IPN listener must implement the IPN authentication protocol (steps 2, 3, and 4 in this
diagram). After successfully completing the protocol, your back-office or administrative
process vets the contents of the message and responds appropriately. For example, if the
payment status for the transaction is “Completed,” your system can print a packing list or
email a password to your customer for downloading digital media.
IPN GuideJuly 10, 201211
Introducing IPN
IPN Protocol and Architecture
IPN Messages Generated by APIs
PayPal generates an IPN message when you invoke an API operation, such as
DoExpressCheckoutPayment of DoDirectPayment during checkout or an Adaptive
Payments Pay, Preapproval, or ExecutePayment API operation. You can use this
notification to kick-off order fulfillment, enable digital media downloads, store information in
a customer relationship management (CRM) or accounting system, and so on.
The following diagram shows both the web flow and the IPN message authentication protocol:
The numbers in the diagram correspond to the following steps:
1. The API operation initiates a payment on PayPal.
2. PayPal sends your IPN listener a message that notifies you of the event
3. Your listener sends the complete unaltered message back to PayPal; the message must
contain the same fields in the same order and be encoded in the same way as the original
message
4. PayPal sends a single word back, which is either VERIFIED if the message originated with
PayPal or INVALID if there is any discrepancy with what was originally sent
Your IPN listener must implement the IPN authentication protocol (steps 2, 3, and 4 in this
diagram). After successfully completing the protocol, your back-office or administrative
process vets the contents of the message and responds appropriately. For example, if the
payment status for the transaction is “Completed,” your system can print a packing list or
email a password to your customer for downloading digital media.
12July 10, 2012IPN Guide
IPN Messages Generated by a Back-Office Procedure
PayPal generates an IPN message when you perform actions that invoke the PayPal API,
regardless of whether it is from your website or from a back-office or administrative
procedure. You can use this notification to trigger an email to your customer, store information
in a CRM or accounting system, and so on.
The following diagram shows both an administrative web flow and the IPN message
authentication protocol:
Introducing IPN
IPN Protocol and Architecture
The numbers in diagram correspond to the following steps:
1. Your back-office or administrative process invokes a PayPal API operation; for example, it
could invoke the RefundTransaction API operation when your employee issues a
refund.
2. PayPal sends your IPN listener a message that notifies you of the event
3. Your listener sends the complete unaltered message back to PayPal; the message must
contain the same fields in the same order and be encoded in the same way as the original
message
4. PayPal sends a single word back, which is either VERIFIED if the message originated with
PayPal or INVALID if there is any discrepancy with what was originally sent
Your IPN listener implements the IPN authentication protocol (steps 2, 3, and 4 in this
diagram). After successfully completing the protocol, your listener or back-office or
administrative process vets the contents of the message and responds appropriately. For
example, your system can notify the customer of the refund by email.
IPN GuideJuly 10, 201213
Introducing IPN
A Sample IPN Message and Response
PayPal-Initiated IPN Messages
Some IPN messages generated by PayPal are not directly associated with a web flow. PayPal
generates an IPN message when external events arise that might affect a transaction, such as
disputes, chargebacks, echeck clearing, and various recurring payment and subscription
events.
In this case, events that trigger IPN messages are not directly related to actions on your
website. The following diagram shows the steps your listener must take:
The numbers in diagram correspond to the following steps, which implement the IPN message
authentication protocol:
1. PayPal sends your IPN listener a message that notifies you of the event
2. Your listener sends the complete unaltered message back to PayPal; the message must
contain the same fields in the same order and be encoded in the same way as the original
message
3. PayPal sends a single word back, which is either VERIFIED if the message originated with
PayPal or INVALID if there is any discrepancy with what was originally sent
After successfully completing the protocol, your back-office or administrative process vets the
contents of the message and responds appropriately. For example, the IPN messages may
trigger you to print shipping labels for items whose payments have cleared, investigate
disputes and chargebacks, store information in an accounting system, and so on.
A Sample IPN Message and Response
An IPN message consists of variables that describe the transaction. These variables contain
information about you, your customer, and the details of the transaction itself.
PayPal sends a message, similar to the following one, for a $19.95 purchase made by Express
Checkout:
receiver_email = gm_1231902686_biz@paypal.comCheck email address to make sure that this is not a spoof
receiver_id = S8XGHLYDW9T3S
residence_country = US
Information about the transaction:
test_ipn = 1Testing with the Sandbox
transaction_subject =
txn_id = 61E67681CH3238416Keep this ID to avoid processing the transaction twice
txn_type = express_checkoutType of transaction
Information about your buyer:
payer_email = gm_1231902590_per@paypal.com
payer_id = LPLWNMTBWMFAY
payer_status = verified
first_name = T est
last_name = User
address_city = San Jose
address_country = United States
address_country_code = US
address_name = Test User
address_state = CA
address_status = confirmed
IPN GuideJuly 10, 201215
Introducing IPN
A Sample IPN Message and Response
Variable Notes
address_street = 1 Main St
address_zip = 95131
Information about the payment:
custom = Your custom field
handling_amount = 0.00
item_name =
item_number =
mc_currency = USD
mc_fee = 0.88
mc_gross = 19.95
payment_date = 20:12:59 Jan 13, 2009 PST
payment_fee = 0.88
payment_gross = 19.95
payment_status = CompletedStatus, which determines whether the transaction is
notify_version = 2.6IPN version; can be ignored
charset = windows-1252
verify_sign = AtkOfCXbDm2hu0ZELryHFjY-
Vb7PAUvS6nMXgysbElEn9v-1XcmSoGtf
Before you can trust the contents of the message, you must first verify that the message came
from PayPal. To verify the message, you must send back the contents in the exact order they
were received and precede it with the command _notify-validate, as follows:
PayPal will then send one single-word message, VERIFIED, if the message is valid; otherwise,
it will send another single-word message, INVALID.
IMPORTANT:After you receive the VERIFIED message, there are several important checks
you must perform before you can assume that the message is legitimate and
not already processed:
Non-IPN Notification Mechanisms
You can use IPN with other notification mechanisms. For example, you can use PDT or the
API to determine real-time information about a transaction and let IPN notify you of any
changes after the transaction occurs.
Introducing IPN
Non-IPN Notification Mechanisms
If you are using PayPal Payments Standard, you can use PDT to obtain information about the
transaction. If you are using Express Checkout or Direct Payment, the PayPal API notifies you
of the status and details of the transaction immediately and automatically. In either case, you
can immediately display to your customer the information being returned from PayPal. You
should not use IPN for this purpose.
IPN GuideJuly 10, 201217
Introducing IPN
Non-IPN Notification Mechanisms
18July 10, 2012IPN Guide
2
Implementing an IPN Listener
You write your IPN listener in the scripting or programming language of your choice and host
it on your web server. You can use sample code provided by PayPal as a starting point.
The PayPal SDKs for PayPal Payments Standard contain sample code in various programming
languages that you can modify to create your own listener. As a good programming practice,
as well as to keep things simple, your IPN listener should listen for a post from PayPal and
dispatch it immediately to another routine or process that handles the business logic associated
with the message. If your listener is structured in this way, it will be a simple and tight loop
that listens for a message and dispatches it for processing by your application logic.
For a list of code samples for IPN, refer to the following link:
Code Samples - Instant Payment Notification
IPN GuideJuly 10, 201219
Implementing an IPN Listener
20July 10, 2012IPN Guide
Identifying Your IPN Listener to
3
PayPal
After you implement and test your IPN listener, you make your listener known to PayPal by
specifying the listener’s URL in your account’s pro file. Optio nally, you can override the URL
to specify another listener for specific payments.
Setting Up IPN Notifications on PayPal
Dynamically Setting the Notification URL
Setting Up IPN Notifications on PayPal
After you implement and test your IPN listener, you identify the listener to PayPal by selecting
Instant Payment Notification Preferences from your account’s profile. You then specify
your listener’s URL and click the box to activate it.
Your listener must be located at the URL that you specify in the profile. Before you activate
your listener on PayPal, you should test the listener using the IPN simulator in the Sandbox.
IMPORTANT:
The steps to set up your listener for Sandbox testing and to set up your listener for live
operation on PayPal are the same. The only difference is that you log into the Sandbox to set
up your listener for Sandbox testing and you log into PayPal to set up your listener for live
operation.
NOTE: Sandbox testing goes beyond simply using the IPN simulator. The IPN simulator only
sends IPN messages to a listener; it does not perform the complete operation; for
example, it does not complete a transaction. Sandbox testing involves performing the
same actions in the Sandbox as you expect to be performed when the listener goes
live.
After you log in, follow these instructions to set up your listener:
1. Click Profile on the My Account tab.
2. Click Instant Payment Notification Preferences in the Selling Preferences column.
3. Click Choose IPN Settings to specify your listener’s URL and activate the listener.
The following screen appears:
IPN GuideJuly 10, 201221
Identifying Your IPN Listener to PayPal
Setting Up IPN Notifications on PayPal
4. Specify the URL for your listener in the Notification URL field.
5. Click Receive IPN messages (Enabled) to enable your listener.
6. Click Save.
The following screen appears:
7. Click Back to Profile Summary to return to the Profile after activating your listener.
You also can click Edit settings to modify your notification URL or disable your listener.
You can click T u rn Off IPN to reset your IPN preferences.
22July 10, 2012IPN Guide
Identifying Your IPN Listener to PayPal
Dynamically Setting the Notification URL
Dynamically Setting the Notification URL
You can specify an IPN listener for a specific payment; this is the only way to receive IPNs
associated with Adaptive Payments. In this case, PayPal sends the IPN message to the listener
specified in the notification URL for a specific button or API operation instead of the listener
specified in your Profile.
To specify a notification URL
For a/an ...specify your IPN Listener’s URL in the ...
PayPal Payments Standard buttonnotify_url HTML form variable
NVP API operationNOTIFYURL field of the DoDirectPayment,
DoExpressCheckoutPayment, or DoReferenceTransaction request
SOAP API operationNotifyURL field of the DoDirectPayment,
DoExpressCheckoutPayment, or DoReferenceTransaction request
Adaptive Payments API operationipnNotificationUrl field of the Pay or Preapproval request
NOTE: The IPN message will always be sent to your notification URL unless receiving IPNs
have been disabled. Even though you have not enabled receiving IPN messages in
your Profile or you have reset your preference by turning off IPN messages, PayPal
still sends IPN messages to the notification URL you specify for a specific payment.
IPN messages not sent because you disabled the preference in your Profile will appear
in the IPN history when you enable receiving IPNs. After they appear in the history,
you can choose whether or not to resend them.
IPN GuideJuly 10, 201223
Identifying Your IPN Listener to PayPal
Dynamically Setting the Notification URL
24July 10, 2012IPN Guide
IPN Testing
4
After you implement your listener and start it running on your web server , you can use the IPN
simulator in the Sandbox to send IPN messages to the URL at which your listener is running.
This tool allows you to verify that you are receiving IPN messages correctly.
Testing Your Listener
IPN Troubleshooting Tips
Testing Your Listener
The first level of testing is to ensure that your IPN listener receives messages and handles
them appropriately . This level of testing requires you to have your IPN listener running at your
notification URL; however, it does not require you to set up the listener in the Profile.
You must be logged into the Sandbox to use the IPN simulator. Not all API operations are
available using the IPN simulator.
To set up and send an IPN message using the simulator:
1. Select Instant Payment Notification (IPN) simulator from Test Tools.
2. Enter the URL to receive the notification and the kind of notification you want to test on
the following screen:
When you select the kind of transaction that you want to test, a form containing test data
appears:
IPN GuideJuly 10, 201225
IPN Testing
Testing Your Listener
3. Keep or modify the values of fields that you want to include in the IPN.
By default, only populated fields are displayed. You can check the Show all fields box to
view all fields. The simulator does not check the validity of fields that you change.
26July 10, 2012IPN Guide
4. Click Send IPN.
The IPN message is sent to the specified URL and the results of the operation are displayed
at the top of the page.
After Completing This Task:
If your IPN listener receives a message, you know that it is properly installed on your web
server. The default messages sent by the IPN simul ator are valid, thus, if your listener responds
correctly to the message, it should receive a VERIFIED message. If you do not receive any
message or if you receive an INVALID message after responding to the original message from
PayPal, you will need to troubleshoot your listener.
IPN Troubleshooting Tips
IPN failures fall into three categories: not receiving any IPN messages from PayPal, receiving
some but not all IPN messages, and receiving INVALID messages from PayPal after
responding to a message.
IPN Testing
IPN Troubleshooting Tips
If you do not receive any IPN messages from PayPal
Check the IPN History page on PayPal. It tells you whether PayPal sent the IPN message
and whether your listener responded to it. It may also provide information about the status
of the server on which your listener is running. If necessary, from this page you can also
request that PayPal resend the IPN message.
Check that the path to your IPN listener is correct and you are using that path correctly in
your IPN notification URL; for example, the file path is often similar to, but not the same
as, the URL.
Verify that your firewall settings are not blocking HTTP POST messages from PayPal.
If the logs for your web server are available, check the logs to confirm that messages are
being sent to your web server and check for any errors that may have occurred.
If you receive some messages but not others
Verify that your IPN listener is responding to all messages, even those you do not intend to
process.
Check that the account is valid and confirmed; for example, if you send money to an
unconfirmed account, PayPal does not send an IPN message.
If you receive an INVALID message
Check that your are posting your response to the correct URL, which is
https://www.sandbox.paypal.com/cgi-bin/webscr or
https://www.paypal.com/cgi-bin/webscr, depending on whether you are testing
in the Sandbox or you are live, respectively.
Verify that your response contains exactly the same IPN variables and values in the same
order, preceded with cmd=_notify-validate.
IPN GuideJuly 10, 201227
IPN Testing
IPN Troubleshooting Tips
Ensure that you are encoding your response string and are using the same character
encoding as the original message.
NOTE: If you receive multiple IPN messages for the same transaction or if messages appear
to be out of order, this is not necessarily an indication that your listener is
malfunctioning. For example, if you do not respond in time, PayPal resends the
message. You should investigate these situations; however, because they could be
caused by a logic errors or performance problems as well.
28July 10, 2012IPN Guide
IPN Operations on PayPal
5
The IPN History page on PayPal provides additional information to help you troubleshoot IPN
messages. You can use the IPN History page to determine the status of IPN messages and to
resend them, if necessary.
Using the IPN History
Resending IPN Messages
Using the IPN History
Use the IPN History page on PayPal to view IPN messages sent to you from PayPal and
request that messages be resent. You can select the IPN messages to review by date range, by
delivery status, and by PayPal transaction
IPN GuideJuly 10, 201229
IPN Operations on PayPal
Using the IPN History
The search results contain the following information:
The date and time that PayPal created the IPN message
Whether this IPN message was the original message or whether it was resent, which is
indicated in the Date/time created column
The IPN message ID assigned by PayPal
The current status, which is one of the following values:
– Sent indicates that PayPal sent the message to your IPN listener
– Failed indicates that PayPal did not receive an acknowledgement to the message
30July 10, 2012IPN Guide
IPN Operations on PayPal
Using the IPN History
– Queued indicates that PayPal is ready to send the message
– Retrying indicates that message was resent between 1 and 15 times and PayPal
continues to be resend the message
– Disabled indicates that the message will not be resent because the merchant’s account
has been disabled
NOTE: If you have requested that PayPal resend the IPN message and the status has not
been updated for the attempt, resending is appended to the status, e.g. Failed
- resending.
Your server’s response to the HTTP POST that delivered the IPN message to your listener.
For more information about these codes, see
HTTP/1.1.
If the message is related to a PayPal transaction, the ID of the PayPal transaction associated
with the message; you can
T o see more information about an IPN message, click on the message ID. The IPN details page
appears:
RFC 2616: Hypertext Transfer Protocol --
IPN GuideJuly 10, 201231
IPN Operations on PayPal
Using the IPN History
In addition to the information on the IPN History page, the details contain the following
information:
Whether this IPN message was the original message or whether it was resent
The last time the message was resent
The URL on which your listener was running when the message was sent
The number of retries before the message was successfully acknowledged
The type of IPN message
32July 10, 2012IPN Guide
Resending IPN Messages
You can use the IPN History page to request that PayPal resend one or more IPN messages.
You can search the IPN message history for the messages that may need to be resent and then
select them.
T o make a request that PayPal resend IPN messages, mark one or more messages for PayPal to
resend and click the Resend selected button to make the request:
IPN Operations on PayPal
Resending IPN Messages
If you check the box for To send an IPN again to a profile URL..., the message will be resent
to the current profile URL instead of the URL associated with the original message. If you do
IPN GuideJuly 10, 201233
IPN Operations on PayPal
Resending IPN Messages
not check this option, PayPal sends the message to the same URL to which the original
message was sent, which is not necessarily the current profile URL.
You may receive a confirmation notice alerting you to the possibility that you will receive
duplicate messages. Click Confirm to resend; otherwise click Cancel:
After you make the request, PayPal notifies you that the messages have been resent and
updates the status. The status indicates that PayPal is resending the message until it actually
has been resent:
34July 10, 2012IPN Guide
IPN Operations on PayPal
Resending IPN Messages
When the message has been sent, your server’s response to the HTTP POST is used to update
the HTTP response code field. A value of 200 indicates that your server successfully received
the IPN message. Other values typically indicate a server configuration error for the server that
hosts your IPN listener. For more information about these codes, see
Transfer Protocol -- HTTP/1.1. If you do not see a response code, you should check that your
RFC 2616: Hypertext
sever is running.
IPN GuideJuly 10, 201235
IPN Operations on PayPal
Resending IPN Messages
36July 10, 2012IPN Guide
6
Using Fraud Management Filters
With IP N
Fraud Management Filter actions are reported in IPN payment messages only when a filter
causes the payment to be pended awaiting your review or a when you accept or deny a filterpended payment. Filter actions are not reported when filters flag payments for review, allow
payments to be accepted, or cause them to be denied.
When a payment occurs, an IPN message shows the transaction’s payment status as
Completed, regardless of whether a Fraud Management Filter was activated or not. There is
no special notification for transactions that are flagged by a Fraud Management Filter. If a
Fraud Management Filter is set to Deny, PayPal does not send an IPN message when the filter
actually causes the payment to be denied.
When a transaction is pended, however, PayPal sends an IPN message containing one or more
fraud_management_pending_filters_
the payment to be pended, where n=1 specifies the first filter, and so on. In addition, the
payment_status variable is set to Pending. The following example shows an IPN message
in which two filters cause the transaction to be pended:
n variables, which identify the filters that caused
NOTE: If the transaction is for an authorization or an order, the auth_status variable may
also be set to Pending.
If a transaction has been pended, PayPal sends an IPN message when the payment has been
accepted or denied. The following example shows an IPN message indicating that a pended
transaction has been accepted:
Typically, your back-end or administrative processes will perform specific actions based on
the kind of IPN message received. You can use the txn_type variable in the message to
trigger the kind of processing you want to perform.
Transaction Type
(txn_type)Description
—Credit card chargeback if the case_type variable contains chargeback
adjustmentA dispute has been resolved and closed
cartPayment received for multiple items; source is Express Checkout or the PayPal
Shopping Cart.
express_checkoutPayment received for a single item; source is Express Checkout
masspayPayment sent using MassPay
mp_signupCreated a billing agreement
merch_pmtMonthly subscription paid for PayPal Payments Pro
IPN GuideJuly 10, 201241
IPN Variable Reference
Transaction and Notification-Related Variables
Transaction Type
(txn_type)Description
new_caseA new dispute was filed
recurring_paymentRecurring payment received
recurring_payment
_expired
recurring_payment
_profile_created
recurring_payment
_skipped
send_moneyPayment received; source is the Send Money tab on the PayPal website
subscr_cancelSubscription canceled
subscr_eotSubscription expired
subscr_failedSubscription payment failed
subscr_modifySubscription modified
subscr_paymentSubscription payment received
subscr_signupSubscription started
virtual_terminalPayment received; source is Virtual Terminal
web_acceptPayment received; source is a Buy Now, Donation, or Auction Smart Logos button
Recurring payment expired
Recurring payment profile created
Recurring payment skipped; it will be retried up to a total of 3 times, 5 days apart
Transaction and Notification-Related Variables
Transaction and notification-related variables identify the merchant that is receiving a
payment or other notification and transaction-spe cific information.
Variable NameDescription
businessEmail address or account ID of the payment recipient (that is, the
merchant). Equivalent to the values of receiver_email (if payment is
sent to primary account) and business set in the Website Payment
HTML.
NOTE: The value of this variable is normalized to lowercase characters.
Length: 127 characters
charsetCharacter set
customCustom value as passed by you, the merchant. These are pass-through
variables that are never presented to your customer
Length: 255 characters
42July 10, 2012IPN Guide
IPN Variable Reference
Buyer Information Variables
Variable NameDescription
ipn_track_idInternal; only for use by MTS and DTS
notify_versionMessage’s version number
parent_txn_idIn the case of a refund, reversal, or canceled reversal, this variable
contains the txn_id of the original transaction, while txn_id contains a
new ID for the new transaction.
Length: 19 characters
receipt_idUnique ID generated during guest checkout (payment by credit card
without logging in).
receiver_emailPrimary email address of the payment recipient (that is, the merchant). If
the payment is sent to a non-primary email address on your PayPal
account, the receiver_email is still your primary email.
NOTE: The value of this variable is normalized to lowercase characters.
Length: 127 characters
receiver_idUnique account ID of the payment recipient (i.e., the merchant). This is
the same as the recipient's referral ID.
Length: 13 characters
resendWhether this IPN message was resent (equals true); otherwise, this is the
original message.
residence_countryISO 3166 country code associated with the country of residence
Length: 2 characters
test_ipnWhether the message is a test message. It is one of the following values:
1 – the message is directed to the Sandbox
txn_idThe merchant’s original transaction identification number for the payment
from the buyer, against which the case was registered.
txn_typeThe kind of transaction for which the IPN message was sent.
verify_signEncrypted st ring used to validate the authenticity of the transaction
Buyer Information Variables
Buyer information identifies the buyer or initiator of a transaction by payer ID or email
address. Additional contact or shipping information may be provided.
Variable NameDescription
address_countryCountry of customer’s address
Length: 64 characters
IPN GuideJuly 10, 201243
IPN Variable Reference
Payment Information Var iables
Variable NameDescription
address_cityCity of customer’s address
Length: 40 characters
address_country_codeISO 3166 country code associated with customer’s address
Length: 2 characters
address_nameName used with address (included when the customer provides a Gift
Address)
Length: 128 characters
address_stateState of customer’s address
Length: 40 characters
address_statusWhether the customer provided a confirmed address. It is one of the
following values:
confirmed – Customer provided a confirmed address.
unconfirmed – Customer provided an unconfirmed address.
address_streetCustomer’s street address.
Length: 200 characters
address_zipZip code of customer’s address.
Length: 20 characters
contact_phoneCustomer’s telephone number.
Length: 20 characters
first_nameCustomer’s first name
Length: 64 characters
last_nameCustomer’s last name
Length: 64 characters
payer_business_nameCustomer’s company name, if customer is a business
Length: 127 characters
payer_emailCustomer’s primary email address. Use this email to provide any credits.
Length: 127 characters
payer_idUnique customer ID.
Length: 13 characters
Payment Information Variables
Payment information identifies the amount and status of a payment transaction, including fees.
Variable NameDescription
auth_amountAuthorization amount
44July 10, 2012IPN Guide
IPN Variable Reference
Payment Information Variables
Variable NameDescription
auth_expAuthorization expiration date and time, in the following format:
auth_statusStatus of authorization
echeck_time_processedThe time an eCheck was processed; for example, when the status changes
to Success or Completed. The format is as follows: hh:mm:ss MM DD,
YYYY ZONE, e.g. 04:55:30 May 26, 2011 PDT.
exchange_rateExchange rate used if a currency conversion occurred.
fraud_managment_pending_fil
ters_
x
One or more filters that identify a triggering action associated with one of
the following payment_status values: Pending, Completed, Denied,
where
x is a number starting with 1 that makes the IPN variable name
unique;
x is not the filter’s ID number. The filters and their ID numbers
are as follows:
invoicePassthrough variable you can use to identify your Invoice Number for this
purchase. If omitted, no variable is passed back.
Length: 127 characters
item_name
xItem name as passed by you, the merchant. Or, if not passed by you, as
entered by your customer. If this is a shopping cart transaction, PayPal
will append the number of the item (e.g., item_name1, item_name2,
and so forth).
Length: 127 characters
item_number
xPass-through variable for you to track purchases. It will get passed back to
you at the completion of the payment. If omitted, no variable will be
passed back to you. If this is a shopping cart transaction, PayPal will
append the number of the item (e.g., item_number1, item_number2,
and so forth)
Length: 127 characters
mc_currency
For payment IPN notifications, this is the currency of the payment.
For non-payment subscription IPN notifications (i.e., txn_type=
signup, cancel, failed, eot, or modify), this is the currency of the
subscription.
For payment subscription IPN notifications, it is the currency of the
payment (i.e., txn_type = subscr_payment)
mc_feeTransaction fee associated with the payment. mc_gross minus mc_fee
equals the amount deposited into the receiver_email account.
Equivalent to payment_fee for USD payments. If this amount is
negative, it signifies a refund or reversal, and eit h er of those payment
statuses can be for the full or partial amount of the original transaction fee.
IPN GuideJuly 10, 201245
IPN Variable Reference
Payment Information Var iables
Variable NameDescription
mc_grossFull amount of the customer's payment, before transaction fee is
subtracted. Equivalent to payment_gross for USD payments. If this
amount is negative, it signifies a refund or reversal, and either of those
payment statuses can be for the full or partial amount of the original
transaction.
mc_gross_
xThe amount is in the currency of mc_currency, where x is the shopping
cart detail item number. The sum of mc_gross_
x should total
mc_gross.
mc_handlingTotal handling amount associated with the transaction.
mc_shippingTotal shipping amount associated with the transaction.
mc_shipping
xThis is the combined total of shipping1 and shipping2 Website
Payments Standard variables, where
number. The shipping
x variable is only shown when the merchant
x is the shopping cart detail item
applies a shipping amount for a specific item. Because profile shipping
might apply, the sum of shipping
x might not be equal to shipping.
memoMemo as entered by your customer in PayPal Website Payments note
field.
Length: 255 characters
num_cart_itemsIf this is a PayPal Shopping Cart transaction, number of items in cart.
option_name1Option 1 name as requested by you. PayPal appends the number of the
item where
x represents the number of the shopping cart detail item (e.g.,
option_name1, option_name2).
Length: 64 characters
option_name2Option 2 name as requested by you. PayPal appends the number of the
item where
x represents the number of the shopping cart detail item (e.g.,
option_name2, option_name2).
Length: 64 characters
option_selection1Option 1 choice as entered by your customer.
PayPal appends the number of the item where
x represents the number of
the shopping cart detail item (e.g., option_selection1,
option_selection2).
Length: 200 characters
option_selection2Option 2 choice as entered by your customer.
PayPal appends the number of the item where
x represents the number of
the shopping cart detail item (e.g., option_selection1,
option_selection2).
Length: 200 characters
payer_statusWhether the customer has a verified PayPal account.
verified – Customer has a verified PayPal account.
unverified – Customer has an unverified PayPal account.
46July 10, 2012IPN Guide
IPN Variable Reference
Payment Information Variables
Variable NameDescription
payment_dateTime/Date stamp generated by PayPal, in the following format:
HH:MM:SS Mmm DD, YYYY PDT
Length: 28 characters
payment_feeUSD transaction fee associated with the payment. payment_gross
minus payment_fee equals the amount deposited into the receiver
email account. Is empty for non-USD payments. If this amount is
negative, it signifies a refund or reversal, and eit h er of those payment
statuses can be for the full or partial amount of the original transaction fee.
NOTE: This is a deprecated field. Use mc_fee instead.
payment_fee_
xIf the payment is USD, then the value is the same as that for mc_fee_x,
where
x is the record number; if the currency is not USD, then this is an
empty string.
NOTE: This is a deprecated field. Use mc_fee_x instead.
payment_grossFull USD amount of the customer’s payment, before transaction fee is
subtracted. Will be empty for non-USD payments. This is a legacy field
replaced by mc_gross. If this amount is negative, it signifies a refund or
reversal, and either of those payment statuses can be for the full or partial
amount of the original transaction.
payment_gross_
xIf the payment is USD, then the value for thi s is the same as that for the
mc_gross_
x, where x is the record number the mass pay item. If the
currency is not USD, this is an empty string.
NOTE: This is a deprecated field. Use mc_gross_x instead.
IPN GuideJuly 10, 201247
IPN Variable Reference
Payment Information Var iables
Variable NameDescription
payment_statusThe status of the payment:
Canceled_Reversal: A reversal has been canceled. For example, you
won a dispute with the customer, and the funds for the transaction that was
reversed have been returned to you.
Completed: The payment has been completed, and the funds have been
added successfully to your account balance.
Created: A German ELV paym ent is made using Express Checkout.
Denied: You denied the payment. This happens on ly if the paym ent was
previously pending because of possible reasons described for the
pending_reason variable or the Fraud_Management_Filters_
variable.
Expired: This authorization has expired and cannot be captured.
Failed: The payment has failed. This happens only if the payment was
made from your customer’s bank account.
Pending: The payment is pending. See pending_reason for more
information.
Refunded: You refunded the payment.
Reversed: A payment was reversed due to a chargeback or other type of
reversal. The funds have been removed from your account balance and
returned to the buyer. The reason for the reversal is specified in the
ReasonCode element.
Processed: A payment has been accepted.
Voided: This authorization has been voided.
x
payment_typeecheck: This payment was funded with an eCheck.
instant: This payment was funded with PayPal balance, credit card, or
Instant Transfer.
48July 10, 2012IPN Guide
IPN Variable Reference
Payment Information Variables
Variable NameDescription
pending_reasonThis variable is set only if payment_status = Pending.
address: The payment is pending because your customer did not include
a confirmed shipping address and your Payment Receiving Preferences is
set yo allow you to manually accept or deny each of these payments. To
change your preference, go to the Preferences section of your Profile.
authorization: You set the payment action to Authorization and have
not yet captured funds.
echeck: The payment is pending because it was made by an eCheck that
has not yet cleared.
intl: The payment is pending because you hold a non-U.S. account and
do not have a withdrawal mechanism. You must manually accept or deny
this payment from your Account Overview.
multi-currency: You do not have a balance in the currency sent, and
you do not have your Payment Receiving Preferences set to
automatically convert and accept this payment. You must manually accept
or deny this payment.
order: You set the payment action to Order and have not yet captured
funds.
paymentreview: The payment is pending while it is being reviewed by
PayPal for risk.
unilateral: The payment is pending because it was made to an email
address that is not yet registered or confirmed.
upgrade: The payment is pending because it was made via credit card
and you must upgrade your account to Business or Premier status in order
to receive the funds. upgrade can also mean that you have reached the
monthly limit for transactions on your account.
verify: The payment is pending because you are not yet verified. You
must verify your account before you can accept this payment.
other: The payment is pending for a reason other than those listed above.
For more information, contact PayPal Customer Service.
protection_eligibilityExpandedSellerProtection: Seller is protected by Expanded seller
protection
SellerProtection: Seller is protected by PayPal’s Seller Protection
Policy
None: Seller is not protected under Expanded seller protection nor the
Seller Protection Policy
quantityQuantity as entered by your customer or as passed by you, the merchant .
If this is a shopping cart transaction, PayPal appends the number of the
item (e.g. quantity1, quantity2).
IPN GuideJuly 10, 201249
IPN Variable Reference
Auction Variables
Variable NameDescription
reason_codeThis variable is set if payment_status =Reversed, Refunded, or
Canceled_Reversal.
adjustment_reversal: Reversal of an adjustment
buyer-complaint: A reversal has occurred on this transaction due to a
complaint about the transaction from your customer.
chargeback: A reversal has occurred on this transaction due to a
chargeback by your customer.
chargeback_reimbursement: Reimbursement for a chargeback
chargeback_settlement: Settlement of a chargeback
guarantee: A reversal has occurred on this transaction due to your
customer triggering a money-back guarantee.
other: Non-specified reason.
refund: A reversal has occurred on this transaction because you have
given the customer a refund.
NOTE: Additional codes may be returned.
remaining_settleRemaining amount that can be captured with Authorization and Capture
settle_amountAmount that is deposited into the account’s primary balance after a
currency conversion from automatic conversion (through your Payment
Receiving Preferences) or manual conversion (through manually
accepting a payment).
settle_currencyCurrency of settle_amount.
shippingShipping charges associated with this transaction.
Format: unsigned, no currency symbol, two decimal places.
shipping_methodThe name of a shipping method from the Shipping Calculations section of
the merchant's account profile. The buyer selected the named shipping
method for this transaction.
taxAmount of tax charged on payment. PayPal appends the number of the
item (e.g., item_name1, item_name2). The tax
only if there was a specific tax amount applied to a particular shopping
cart item. Because total tax may apply to other items in the cart, the sum
of tax
x might not total to tax.
transaction_entityAuthorization and Capture transaction entity
x variable is included
Auction Variables
Auction information identifies the auction for which a payment is made and additional
information about the auction.
50July 10, 2012IPN Guide
IPN Variable Reference
Mass Pay Variables
Variable NameDescription
auction_buyer_idThe customer’s auction ID.
Length: 64 characters
auction_closing_dateThe auction’s close date, in the following format: HH:MM:SS DD Mmm
YY, YYYY PST
Length: 28 characters
auction_multi_itemThe number of items purchased in multi-item auction payments. It allows
you to count the mc_gross or payment_gross for the first IPN you
receive from a multi-item auction (auction_multi_item), since each
item from the auction will generate an Instant Payment Notification
showing the amount for the entire auction.
for_auctionThis is an auction payment—payments made using Pay for eBay Items or
Smart Logos—as well as Send Money/Money Request payments with the
type eBay items or Auction Goods (non-eBay).
Mass Pay Variables
Mass pay information identifies the amounts and status of transactions related to mass
payments, including fees.
Variable NameDescription
masspay_txn_id_
mc_currency_
mc_fee_
mc_gross_
xFor Mass Payments, the transaction fee associated with the payment,
xThe gross amount for the amount, where x is the record number the mass
mc_handling
payment_dateFor Mass Payments, the first IPN is the date/time when the record set is
xFor Mass Payments, a unique transaction ID generat ed by the PayPal
system, where
x is the record number of the mass pay item
Length: 19 characters
xFor Mass Payments, the currency of the amount and fee, where x is the
record number the mass pay item
where
x is the record number the mass pay item
pay item
xThe x is the shopping cart detail item number. The handling_cart cart-
wide Website Payments variable is also included in the mc_handling
variable; for this reason, the sum of mc_handling
x might not be equal to
mc_handling
processed. Format: HH:MM:SS DD Mmm YYYY PST
Length: 28 characters
IPN GuideJuly 10, 201251
IPN Variable Reference
Recurring Payments Variables
Variable NameDescription
payment_statusCompleted: For Mass Payments, this means that all of your payments
have been claimed, or after a period of 30 days, unclaimed payments have
been returned to you.
Denied: For Mass Payments, this means that your funds were not sent
and the Mass Payment was not initiated. This may have been caused by
lack of funds.
Processed: Your Mass Payment has been processed and all payments
have been sent.
reason_codeThis variable is only set if status = Failed.
1001: Invalid UserID.
1003: Country of Residence check failure
1004: Country of Funding Source check failure
receiver_email_
status_
unique_id_
xFor Mass Payments, the status of the payment, where x is the record
xFor Mass Payments, the primary email address of the payment recipient,
where
x is the record number of the mass pay item.
Length: 127 characters
number
Completed: The payment has been processed, regardless of whether this
was originally a unilateral payment
Failed: The payment failed because of insufficient PayPal balance.
Returned: Payment has been returned after 30 days.
Reversed: This is for unilateral payments that were not claimed after 30
days and have been returned to the sender. Or the funds have been
returned because the Receiver’s account was locked.
Unclaimed: This is for unilateral payments that are unclaimed.
xFor Mass Payments, the unique ID from input, where x is the record
number. This allows the merchant to cross-reference the payment
Length: 13 characters
Recurring Payments Variables
Recurring payments information identifies the amounts and status associated with recurring
payments transactions.
Variable NameDescription
amountAmount of recurring payment
amount_per_cycleAmount of recurring payment per cycle
initial_payment_amountInitial payment amount for recurring payments
next_payment_dateNext payment date for a recurring payment
52July 10, 2012IPN Guide
IPN Variable Reference
Recurring Payments Variables
Variable NameDescription
outstanding_balanceOutstanding balance for recurring payments
payment_cyclePayment cycle for recurring payments
period_typeKind of period for a recurring payment
product_nameProduct name associated with a recurring payment
product_typeProduct name associated with a recurring payment
profile_statusProfile status for a recurring payment
recurring_payment_idRecurring payment ID
rp_invoice_idThe merchant’s own unique reference or invoice number, which can be
used to uniquely identify a profile.
Length: 127 single-byte alphanumeric characters
time_createdWhen a recurrng payment was created
IPN GuideJuly 10, 201253
IPN Variable Reference
Recurring Payments Variables
Summary of recurring payment variables
VariablesProfile created messageRecurring payment mes sage
Subscription information identifies the amounts and parameters associated with subscription
transactions.
Variable NameDescription
amount1Amount of payment for trial period 1 for USD payments; otherwise blank
(optional).
IPN GuideJuly 10, 201255
IPN Variable Reference
Subscription Variables
Variable NameDescription
amount2Amount of payment for trial period 2 for USD payments; otherwise blank
(optional).
amount3Amount of payment for regular subscription period for USD payments;
otherwise blank.
mc_amount1Amount of payment for trial period 1, regardless of currency (optional).
mc_amount2Amount of payment for trial period 2, regardless of currency (optional).
mc_amount3Amount of payment for regular subscription period, regardless of
currency.
password(optional) Password generated by PayPal and given to subscriber to access
the subscription (password will be encrypted).
Length: 24 characters
period1(optional) Trial subscription interval in days, weeks, months, years
(example: a 4 day interval is “period1: 4 D”).
period2(optional) Trial subscription interval in days, weeks, months, or years.
period3Regular subscription interval in days, weeks, mo nths, or years.
reattemptIndicates whether reattempts should occur upon payment failures (1 is
yes, blank is no).
recur_timesThe number of payment installments that will occur at the regular rate.
recurringIndicates whether regular rate recurs (1 is yes, blank is no).
retry_atDate PayPal will retry a failed subscription payment.
subscr_dateStart date or cancellation date depending on whether transactio n is
subscr_signup or subscr_cancel.
Time/Date stamp generated by PayPal, in the following format:
HH:MM:SS DD Mmm YY, YYYY PST
subscr_effectiveDate when the subscription modification will be effective (only for
txn_type = subscr_modify).
Time/Date stamp generated by PayPal, in the following format:
HH:MM:SS DD Mmm YY, YYYY PST
subscr_idID generated by PayPal for the subscriber.
Length: 19 characters
username(optional) Username generated by PayPal and given to subscriber to
Format: PP-nnn-nnn-nnn-nnn where n is any numeric character.
case_type
chargeback: A buyer has filed a chargeback with his credit card
company, which has notified PayPal of the reason for the chargeback.
complaint: A buyer has logged a complaint through the PayPal
Resolution Center.
dispute: A buyer and seller post communications to one another
through the Resolution Center to try to work out issues without
intervention by PayPal.
IPN GuideJuly 10, 201259
IPN Variable Reference
Pay Message Variables
Variable NameDescription
reason_codeReason for the case.
Values for case_type set to complaint:
non_receipt: Buyer claims that he did not receive goods or service.
not_as_described: Buyer claims that the goods or service received
differ from merchant’s description of the goods or service.
Values for case_type set to chargeback:
unauthorized
adjustment_reimburse: A case that has been resolved and close
requires a reimbursement.
non_receipt: Buyer claims that he did not receive goods or service.
duplicate: Buyer claims that a possible duplicate payment was
made to the merchant.
merchandise: Buyer claims that the received merchandise is
unsatisfactory, defective, or damaged.
special: Some other reason. Usually, special indicates a credit card
processing error for which the merchant is not responsible and for
which no debit to the merchant will result. PayPal must review the
documentation from the credit card company to determine the nature
of the dispute and possibly contact the merchant to resolve it.
Pay Message Variables
PayPal generates an IPN message that contains information about the pay request or payment
in response to the Adaptive Payments Pay and ExecutePayment API operations.
VariableDescription
transaction_typeThe type of transaction. Possible values are:
Adaptive Payment PAY
This notification occurs when is a payment is made due to a PayRequest.
The variables for the Adaptive Payment Pay notification are similar to
the PaymentDetailsResponse fields.
Adjustment
This can be for a chargeback, reversal, or refund; check the reason_code
to see which it is.
60July 10, 2012IPN Guide
IPN Variable Reference
Pay Message Variables
VariableDescription
statusThe status of the payment. Possible values are:
CREATED – The payment request was received; funds will be transferred
once the payment is approved
COMPLETED – The payment was successful
INCOMPLETE – Some transfers succeeded and some failed for a parallel
payment or, for a delayed chained payment, secondary receivers have not
been paid
ERROR – The payment failed and all attempted transfers failed or all
completed transfers were successfully reversed
REVERSALERROR – One or more transfers failed when attempting to
reverse a payment
PROCESSING – The payment is in progress
PENDING – The payment is awaiting processing
sender_emailSender’s email address.
action_typeWhether the Pay API is used with or without the SetPaymentOptions and
ExecutePayment API operations. Possible values are:
PAY – If you are not using the SetPaymentOptions and
ExecutePayment API operations
CREATE – If you are using the SetPaymentOptions and
ExecutePayment API operations
payment_request_dateThe date on which the payment request was initiated.
reverse_all_parallel_pay
ments_on_error
Whether the payment request specified to reverse parallel payments if an error
occurs. Possible values are:
true – Each parallel payment is reversed if an error occurs
false – Only incomplete payments are reversed (default)
transaction[n].idThe transaction ID, where [n] is a number from 0 to 5. For simple, single
receiver payments, this number will be 0. Numbers larger than 0 indicate the
payment to a particular receiver in chained and parallel payments.
transaction[n].statusThe transaction status, where [n] is a number from 0 to 5. For simple single-
receiver payments, this number will be 0. Numbers larger than 0 indicate the
payment to a particular receiver in chained and parallel payments.
Possible values are:
Completed
Pending
Refunded
transaction[n].id_for_se
nder
The transaction ID for the sender, where [n] is a number from 0 to 5. For
simple, single receiver payments, this number will be 0. Numbers larger than 0
indicate the payment to a particular receiver in chained and parallel payments.
IPN GuideJuly 10, 201261
IPN Variable Reference
Pay Message Variables
VariableDescription
transaction[n].status_fo
r _sender_txn
The transaction status, where [n] is a number from 0 to 5. For simple singlereceiver payments, this number will be 0. Numbers larger than 0 indicate the
payment to a particular receiver in chained and parallel payments.
Possible values are:
COMPLETED – The sender’s transaction has completed
PENDING – The transaction is awaiting further processing
CREATED – The payment request was received; funds will be transferred
once approval is received
PARTIALLY_REFUNDED– Transaction was partially refunded
DENIED – The transaction was rejected by the receiver
PROCESSING – The transaction is in progress
REVERSED – The payment was returned to the sender
REFUNDED – The payment was refunded
FAILED – The payment failed
transaction[n].refund_idThe identification number for the refund
transaction[n].refund_am
The amount that was refunded.
ount
transaction[n].refund_ac
The email address of the debit account of the refund.
count_charged
transaction[n].receiverThe receiver’s email address for the transaction
transaction[n].invoiceIdThe invoice number for this transaction
transaction[n].amountThe payment amount of the transaction
transaction[n].is_primar
y_receiver
Whether there is a primary receiver for this transaction, which indicates
whether the transaction is a chained payment.
Possible values are:
true – There is a primary receiver (chained payment)
false – There is no primary receiver (simple or parallel payment)
return_urlThe URL to which the sender’s browser is redirected after approving a
payment on paypal.com. Use the pay key to identify the payment as follows:
payKey=${payKey}.
cancel_urlThe URL to which the sender’s browser is redirected if the sender cancels the
approval for a payment on paypal.com. Use the pay key to identify the
payment as follows: payKey=${payKey}.
ipn_notification_urlThe URL to which all IPN messages for this payment are sent.
pay_keyThe pay key that identifies this payment. This is a token that is assigned by the
Pay API after a PayRequest message is received and can be used in other
Adaptive Payments APIs as well as the cancelURL and returnURL to
identify this payment. The pay key is valid for 3 hours.
memoA note associated with the payment.
62July 10, 2012IPN Guide
IPN Variable Reference
Preapproval Message Variables
VariableDescription
fees_payerThe payer of PayPal fees. Possible values are:
SENDER – Sender pays all fees (for personal, implicit simple/parallel
payments; do not use for chained or unilateral payments)
PRIMARYRECEIVER – Primary receiver pays all fees (chained payments
only)
EACHRECEIVER – Each receiver pays their own fee (default, personal and
unilateral payments)
SECONDARYONLY – Secondary receivers pay all fees (use only for chained
payments with one secondary receiver)
trackingIdThe tracking ID that was specified for this payment in the
PaymentDetailsRequest message.
preapproval_keyThe preapproval key returned after a PreapprovalRequest, or the
preapproval key that identifies the preapproval key sent with a PayRequest.
reason_codeWhether this transaction is a chargeback, partial, or reversal. Possible values
are:
Chargeback Settlement – Transaction is a chargeback
Admin reversal – Transaction was reversed by PayPal administrators
Refund – Transaction was partially or fully refunded
Preapproval Message Variables
PayPal generates an IPN message that contains information about a preapproval in response to
the Adaptive Payments Preapproval API operation.
VariableDescription
transaction_typeThe type of transaction. For a preapproval, this variable returns Adaptive
Payment Preapproval.
NOTE: If this variable is set to Adaptive Payment Pay or Adjustment,
refer to the Pay Message Variable section.
preapproval_keyThe preapproval key returned after a PreapprovalRequest.
approvedWhether the preapproval request was approved. Possible values are:
true – The preapproval was approved
false – The preapproval was denied
cancel_urlThe URL to which the sender’s browser is redirected if the sender decides to
cancel the preapproval as requested. Use the preapproval key to identify the
payment as follows: preapprovalKey=${preapprovalKey}
current_number_of_paymen
ts
The current number of payments made for this preapproval.
IPN GuideJuly 10, 201263
IPN Variable Reference
Preapproval Message Variables
VariableDescription
current_total_amount_of_
all_payments
current_period_attemptsThe current number of attempts this period for this preapproval.
The current total of payments made for this preapproval.
64July 10, 2012IPN Guide
VariableDescription
currencyCodeThe currency code. Possible values are:
Australian Dollar – AUD
Brazilian Real – BRL
NOTE: The Real is supported as a payment currency and currency balance
only for Brazilian PayPal accounts.
Canadian Dollar – CAD
Czech Koruna – CZK
Danish Krone – DKK
Euro – EUR
Hong Kong Dollar – HKD
Hungarian Forint – HUF
Israeli New Sheqel – ILS
Japanese Yen – JPY
Malaysian Ringgit – MYR
NOTE: The Ringgit is supported as a payment currency and currency balance
only for Malaysian PayPal accounts.
Mexican Peso – MXN
Norwegian Krone – NOK
Ne w Zealand Dollar – NZD
Philippine Peso – PHP
Polish Zloty – PLN
Pound Sterling – GBP
Singapore Dollar – SGD
Swedish Krona – SEK
Swiss Franc – CHF
Taiwan New Dollar – TWD
Thai Baht – THB
Turkish Lira – TRY
IPN Variable Reference
Preapproval Message Variables
NOTE: The Turkish Lira is supported as a payment currency and currency
balance only for Turkish PayPal accounts.
U.S. Dollar – USD
Australian Dollar – AUD
Brazilian Real – BRL
NOTE: The Real is supported as a payment currency and currency balance
only for Brazilian PayPal accounts.
Canadian Dollar – CAD
Czech Koruna – CZK
Danish Krone – DKK
Euro – EUR
Hong Kong Dollar – HKD
Hungarian Forint – HUF
Israeli New Sheqel – ILS
Japanese Yen – JPY
Malaysian Ringgit – MYR
IPN GuideJuly 10, 201265
NOTE: The Ringgit is supported as a payment currency and currency balance
only for Malaysian PayPal accounts.
Mexican Peso – MXN
Norwegian Krone – NOK
Ne w Zealand Dollar – NZD
IPN Variable Reference
Adaptive Accounts IPN Messages
VariableDescription
date_of_monthThe day of the month on which a monthly payment is to be made. A number
between 1 and 31 indicates the day of the month. A value of 0 indicates that
the payment can be made on any day.
day_of_weekThe day of the week that a weekly payment is to be made. Possible values are:
starting_dateFirst date for which the preapproval is val id.
ending_dateLast date for which the preapproval is valid. Time is currently not supported.
max_total_amount_of_all_
The preapproved maximum total amount of all payments.
payments
max_amount_per_paymentThe preapproved maximum amount of all paym ents.
max_number_of_paymentsThe maximum number of payments that is preapproved.
payment_period The payment period.
pin_typeWhether a personal identification number (PIN) is required. It is one of the
following values:
NOT_REQUIRED – A PIN is not required
REQUIRED – A PIN is required
sender_emailThe sender’s email address.
Adaptive Accounts IPN Messages
PayPal sends an IPN message whenever a PayPal account is created using the
CreateAccount API operation.
66July 10, 2012IPN Guide
IPN Variable Reference
Adaptive Accounts IPN Messages
FieldDescription
notify_versionMessage’s version number
first_nameAccount holder’s first name
last_nameAccount holder’s last name
verify_signEncrypted string used to validate the authenticity of the transaction
charsetCharacter set
account_keyAccount key returned by the CreateAccount API operation
confirmation_codeConfirmation code
event_typeThe kind of event:
ACCOUNT_CONFIRMED indicates that the account holder has set a password
and the account has been created.
LOGIN_CONFIRMED indicates that the account holder logged into the
account.
Example IPN message in response to CreateAccount request
If PayPal places a payment under review, PayPal sends messages containing the
payment_status and pending_reason variables. In addition, it sends a
protection_eligibility variable that identifies the kind of protection in force for the
transaction.
The initial IPN or PDT message indicates that the payment is under review:
The payment_status variable is set to Pending.
The pending_reason variable is set to PaymentReview.
A subsequent IPN message indicates the resolution of the payment review:
If the transaction was successful and the payment was accepted, PayPal sends a notification
whose payment_status variable is set to Completed.
If the transaction failed and the payment was rejected, PayPal sends a notification whose
payment_status variable is set to Reversed.
NOTE: PDTs are only available for the initial status.
68July 10, 2012IPN Guide
Revision History
Revision history for PayPal Instant Payment Notification Guide.
Date Published Description
07/10/12Maintenance release.
05/22/12Maintenance release.
05/02/12Maintenance release.
04/03/12Updated references to W ebsite Payments Standard and Website Payments Pro to
PayPal Payments Standard and PayPal Payments Pro, respectively.
02/14/12Maintenance release.
07/26/11Added additional IPN variables and transaction types; echeck_time_processed
is new for revision 78.0.
07/17/10Updated information about IPN messages for Adaptive Payments and added
information for Adaptive Accounts.
04/01/10Updated IPN history and resend information and added information about IPN
messages for Adaptive Payments.
06/26/09Added information about IPN messages related to payment review. Updated the
section about setting up IPN notifications on PayPal and added a note about the
delivery of IPN messages to the notify URL.
06/10/09Added IPN history and resend information and added information to the
troubleshooting section.
03/16/09Made additions to sample code.
02/16/09First draft.
IPN GuideJuly 10, 201269
70July 10, 2012IPN Guide
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.