Website Payments Pro Authorization and Capture
Last updated: Sept 19th, 12:43am
You can use Direct Payment and Express Checkout to authorize payments to be captured later. These payments are known as authorizations.
- An authorization places a hold on the funds and is valid for 29 days.
- After a successful authorization, PayPal recommends that you capture the funds within the three-day honor period.
- Success of the capture is subject to risk and availability of funds on the authorized funding instrument.
- Within the 29-day authorization period, you can issue multiple re-authorizations after the honor period expires. A re-authorization generates a new Authorization ID and restarts the honor period and any subsequent capture should be performed on the new Authorization ID. If you do a re-authorization on the 27th day of the authorization, you get only two days of honor period.
- You can capture less than the original authorization, full authorization amount, or even more than the authorization amount (up to 115% of the original authorization or $75 USD more, whichever is less).
Integration steps
1. | Optional | Review support for authorizations and limitations. |
2. | Required | Authorize and capture a payment. |
3. | Optional | Reauthorize and capture a payment. |
Support for authorizations and limitations
The honor period is the three-day period during which authorized funds are held.
The valid period is the 29-day period during which the authorization is valid.
After the honor period expires, you can re-authorize the payment, which restarts the three-day honor period. You can re-authorize a payment multiple times during the valid period.
Captures attempted outside of the honor period result in PayPal contacting the card issuer to reauthorize the payment; however, the reauthorization and, thus, the capture might be declined. If you know that you will capture after the honor period expires, PayPal recommends that you explicitly reauthorize the honor period before attempting to capture the payment.
Authorizations become holds on a buyer's account that typically last 3 days for debit cards and 7 to 10 days for credit cards, depending on the issuer and region. If you decide not to capture an authorization, you should void the transaction, which triggers an authorization reversal.
You can explicitly void an authorization, in which case, the uncaptured part of the amount specified in the request becomes void and can no longer be captured. If no part of the payment has been captured, the entire payment becomes void and nothing can be captured. For Visa and Mastercard, a hold caused by the authorization is reversed; a bank hold might remain for 7 to 10 days until reversed by the card issuer.
Authorize and capture a payment
Use these API operations to authorize and capture a payment:
-
DoDirectPayment
(NVP, SOAP)
Set the payment action field toAuthorization
. -
DoCapture
(NVP, SOAP)
Capture all or part of the authorized payment in one single capture transaction or in multiple transactions.
Authorize a credit card
The example calls DoDirectPayment
to authorize a credit card
payment and DoCapture
to capture the payment.
Request
In your DoDirectPayment
request, set the payment action to
Authorization
.
1<form method=post action=https://www.sandbox.paypal.com/nvp> <input type=hidden name=USER value=...> <input type=hidden name=PWD value=...> <input type=hidden name=SIGNATURE value=...> <input type=hidden name=VERSION value= 58.0> <input type=hidden name=PAYMENTACTION value=> <input type=hidden name=CREDITCARDTYPE value=Visa> <input type=hidden name=ACCT value=...> <input type=hidden name=STARTDATE value=112000> <input type=hidden name=EXPDATE value=112020> <input type=hidden name=CVV2 value=123> <input type=hidden name=AMT value=20.00> <input type=hidden name=CURRENCYCODE value=USD> <input type=hidden name=FIRSTNAME value=...> <input type=hidden name=LASTNAME value=...> <input type=hidden name=STREET value=...> <input type=hidden name=STREET2 value=> <input type=hidden name=CITY value="San Francisco"> <input type=hidden name=STATE value=CA> <input type=hidden name=Zip value=94121> <input type=hidden name=COUNTRYCODE value=US> <input type=hidden name=EMAIL value=... > <input type=submit name=METHOD value=DoDirectPayment> </form>
Response
A successful authorization returns the authorization ID in the transaction ID field.
TIMESTAMP=2010%2d03%2d08T19%3a35%3a18Z&CORRELATIONID=ab12f37f9566&ACK=Success&VERSION=58%2e0&BUILD=1218643&AMT=20%2e00&CURRENCYCODE=USD&AVSCODE=X&CVV2MATCH=M&TRANSACTIONID=6RH38738S17889722
Capture the payment
Request
Use the authorization ID in the DoCapture
request to specify the
authorization that you want to capture.
1<form method=post action=https://www.sandbox.paypal.com/nvp> <input type=hidden name=USER value=...> <input type=hidden name=PWD value=...> <input type=hidden name=SIGNATURE value=...> <input type=hidden name=VERSION value= 58.0> <input type=hidden name=AUTHORIZATIONID value=> <input type=hidden name=AMT value=5> <input type=hidden name=CURRENCYCODE value=USD> <input type=hidden name=COMPLETETYPE value=> <input type=hidden name=INVNUM value=> <input type=hidden name=NOTE value= March 08 2010> <input type=hidden name=SOFTDESCRIPTOR value=> <input type=submit name=METHOD value=DoCapture> </form>
The total capture amount should not exceed 115% or $75 USD more than the
authorization amount. When you call DoCapture
for the final
payment, you must set the complete type field to Complete
. Prior
calls to DoCapture
must set this field to
NotComplete
. When payments are complete, any remaining uncaptured
amount of the original authorization is automatically voided and nothing more
can be captured.
Response
If the capture is successful, the payment status is Completed
.
1AUTHORIZATIONID=6RH38738S17889722&TIMESTAMP=2010%2d03%2d08T19%3a47%3a39Z&CORRELATIONID=d1e8043ae0a12&ACK=Success&VERSION=58%2e0&BUILD=1218643&TRANSACTIONID=5F62121256435650V&PARENTTRANSACTIONID=6RH38738S17889722&RECEIPTID=0078%2d2642%2d6061%2d5728&TRANSACTIONTYPE=webaccept&PAYMENTTYPE=instant&EXPECTEDECHECKCLEARDATE=1970%2d01%2d01T00%3a00%3a00Z&ORDERTIME=2010%2d03%2d08T19%3a47%3a38Z&AMT=5%2e00&FEEAMT=0%2e45&TAXAMT=0%2e00&CURRENCYCODE=USD&PAYMENTSTATUS=&PENDINGREASON=None&REASONCODE=None&PROTECTIONELIGIBILITY=Ineligible
Reauthorize and capture a payment
Use these API operations to reauthorize and capture a payment:
-
DoReauthorization
(NVP, SOAP)
To capture a payment after the three-day honor period and before the 29-day authorization period, you can explicitly reauthorize the payment before capturing it. -
DoVoid
(NVP, SOAP)
Optionally, void the entire authorization or void the remaining amount that has not been captured.
Authorize a card
This example authorizes a credit card payment using the
DoDirectPayment
API operation and then reauthorizes the payment
using the DoReauthorization
API operation before capturing it
with the DoCapture
API operation.
Request
In your DoDirectPayment
request, set the payment action to
Authorization
.
1<form method=post action=https://www.sandbox.paypal.com/nvp> <input type=hidden name=USER value=...> <input type=hidden name=PWD value=...> <input type=hidden name=SIGNATURE value=...> <input type=hidden name=VERSION value= 58.0> <input type=hidden name=PAYMENTACTION value=> <input type=hidden name=CREDITCARDTYPE value=Visa> <input type=hidden name=ACCT value=...> <input type=hidden name=STARTDATE value=112000> <input type=hidden name=EXPDATE value=112020> <input type=hidden name=CVV2 value=123> <input type=hidden name=AMT value=500> <input type=hidden name=CURRENCYCODE value=USD> <input type=hidden name=FIRSTNAME value=...> <input type=hidden name=LASTNAME value=...> <input type=hidden name=STREET value=...> <input type=hidden name=STREET2 value=> <input type=hidden name=CITY value="San Francisco"> <input type=hidden name=STATE value=CA> <input type=hidden name=Zip value=94121> <input type=hidden name=COUNTRYCODE value=US> <input type=hidden name=EMAIL value=... > <input type=submit name=METHOD value=DoDirectPayment> </form>
Response
A successful authorization returns the authorization ID in the transaction ID field.
TIMESTAMP=2010%2d03%2d05T03%3a55%3a13Z&CORRELATIONID=2f8b1e854983e&ACK=Success&VERSION=62%2e0&BUILD=1218643&AMT=500%2e00&CURRENCYCODE=USD&AVSCODE=X&CVV2MATCH=M&TRANSACTIONID=4HS1916972552122T
Reauthorize a card
Request
To reauthorize a transaction, specify the transaction ID in the
DoReauthorization
request.
1<form method=post action=https://www.sandbox.paypal.com/nvp> <input type=hidden name=USER value=...> <input type=hidden name=PWD value=...> <input type=hidden name=SIGNATURE value=...> <input type=hidden name=VERSION value= 62.0> <input type=hidden name=AUTHORIZATIONID value=> <input type=hidden name=AMT value=23> <input type=hidden name=CURRENCYCODE value=USD> <input type=submit name=METHOD value=DoReauthorization> </form>
Response
The response contains the new authorization ID.
1AUTHORIZATIONID=&TIMESTAMP=2010%2d03%2d08T20%3a37%3a48Z&CORRELATIONID=797da6e380c0&ACK=Success&VERSION=62%2e0&BUILD=1218643&PAYMENTSTATUS=Pending&PENDINGREASON=authorization&PROTECTIONELIGIBILITY=Ineligible
Capture the reauthorized payment
Request
To capture the payment, specify the new authorization ID in the
DoCapture
request.
1<form method=post action=https://www.sandbox.paypal.com/nvp> <input type=hidden name=USER value=...> <input type=hidden name=PWD value=...> <input type=hidden name=SIGNATURE value=...> <input type=hidden name=VERSION value= 62.0> <input name=AUTHORIZATIONID value=> <input name=AMT value=45> <input name=CURRENCYCODE value=USD> <input name=COMPLETETYPE value=Complete> <input name=INVNUM value=> <input name=NOTE value=> <input name=SOFTDESCRIPTOR value=> <input type=submit name=METHOD value=DoCapture> </form>
Response
A successful capture has the Completed
payment status.
1AUTHORIZATIONID=6HB59926VL998415S&TIMESTAMP=2010%2d03%2d08T21%3a06%3a01Z&CORRELATIONID=8955b8704da91&ACK=Success&VERSION=62%2e0&BUILD=1218643&TRANSACTIONID=2BG77878LE143642C&PARENTTRANSACTIONID=4HS1916972552122T&RECEIPTID=1115%2d8794%2d3120%2d6892&TRANSACTIONTYPE=webaccept&PAYMENTTYPE=instant&EXPECTEDECHECKCLEARDATE=1970%2d01%2d01T00%3a00%3a00Z&ORDERTIME=2010%2d03%2d08T21%3a06%3a00Z&AMT=45%2e00&FEEAMT=1%2e61&TAXAMT=0%2e00&CURRENCYCODE=USD&PAYMENTSTATUS=&PENDINGREASON=None&REASONCODE=None&PROTECTIONELIGIBILITY=Ineligible
Next
Learn about card verifications.