On this page
No Headings
Last updated: June 12, 2026
Important: NVP/SOAP is a legacy integration method. We accept new integrations and support existing integrations, but there are newer solutions. If you're starting an integration, we recommend our latest solutions.
You can use Direct Payment and Express Checkout to authorize payments to be captured later. These payments are known as authorizations.
Note: Express Checkout provides an additional option, called an Order, which you use when a single authorization is insufficient. You can create multiple authorizations and capture them as part of the same order. This would be useful, for example, when an order is split into multiple shipments and you need to capture a payment each time part of the order is shipped.
| 1. | Optional | Review support for authorizations and limitations. |
| 2. | Required | Authorize and capture a payment. |
| 3. | Optional | Reauthorize and capture a payment. |
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.
Use these API operations to authorize and capture a payment:
The example calls DoDirectPayment to authorize a credit card
payment and DoCapture to capture the payment.
In your DoDirectPayment request, set the payment action to
Authorization.
<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>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
Use the authorization ID in the DoCapture request to specify the
authorization that you want to capture.
<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.
If the capture is successful, the payment status is Completed.
AUTHORIZATIONID=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=IneligibleNote: The DoCapture response returns a new
transaction ID as well as the authorization ID. The authorization ID becomes
the parent transaction ID for the captured transaction.
Use these API operations to reauthorize and capture a payment:
DoReauthorization (NVP, SOAP) DoVoid (NVP, SOAP) 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.
In your DoDirectPayment request, set the payment action to
Authorization.
<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>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
To reauthorize a transaction, specify the transaction ID in the
DoReauthorization request.
<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>The response contains the new authorization ID.
AUTHORIZATIONID=&TIMESTAMP=2010%2d03%2d08T20%3a37%3a48Z&CORRELATIONID=797da6e380c0&ACK=Success&VERSION=62%2e0&BUILD=1218643&PAYMENTSTATUS=Pending&PENDINGREASON=authorization&PROTECTIONELIGIBILITY=IneligibleTo capture the payment, specify the new authorization ID in the
DoCapture request.
<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>A successful capture has the Completed payment status.
AUTHORIZATIONID=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=IneligibleLearn about card verifications.