Initiate future transactions
Last updated: May 7th, 1:48am
Website Payments Pro merchants can initiate future transactions using a transaction ID
Use your payer's original transaction ID to charge them later with reference transactions. A reference transaction is a transaction you initiate through an established contract with the payer and from which you can derive subsequent payments.
Important: Reference transactions are only available to Website Payments Pro merchants who have migrated to an Advanced Credit and Debit Card integration.
Know before you code
This server-side integration uses Orders REST API. To complete this integration, you will need:
- An advanced credit and debit card payments integration.
- The original transaction ID for the payer and amount of the transaction.
- A previous order ID.
Reference transactions are also available if you have previously integrated with the DoReferenceTransactionAPI operation (NVP, SOAP).
Use Postman to explore and test PayPal APIs.
How it works
- The payer generates a transaction ID when they purchase an item on your site.
- The payer agrees to a reference transaction.
- Use the transaction ID in future reference transactions using the same payment method.
Use cases
Use reference transactions to:
- Save payers' card details for a future payer-initiated transaction.
- Initiate transactions to charge the payment method based on a previously agreed contract.
Create an order
Provide an order ID from a previous transaction or generate a new one.
API endpoint used: Create order
1curl -v -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders2-H "Content-Type: application/json"3-H "Authorization: Bearer Access-Token"4-H "PayPal-Auth-Assertion: PAYPAL-AUTH-ASSERTION"5-H "PayPal-Partner-Attribution-Id: BN-CODE"6-d '{7 "intent": "CAPTURE",8 "purchase_units": [9 {10 "amount": {11 "currency_code": "USD",12 "value": "100.00"13 }14 }15 ]16}'
Modify the code
After you copy the code in the sample request, modify the following:
Access-Token: Your access token.PAYPAL-AUTH-ASSERTION: Your PayPal-Auth-Assertion token.BN-CODE: Your PayPal Attribution ID to receive revenue attribution. To find your BN code, see Code and Credential Reference.intent: The value ofintentin this sample isCAPTURE, which captures the payment immediately. You can choose to separate the authorize and capture actions by changing the intent toAUTHORIZE.
Step result
A successful request results in the following:
- A return status code of HTTP
201 Created. - A JSON response body that contains an order ID, for example,
5O190127TN364715T.
1{2 "id": "5O190127TN364715T",3 "status": "CREATED",4 "links": [5 {6 "href": "https://api-m.paypal.com/v2/checkout/orders/5O190127TN364715T",7 "rel": "self",8 "method": "GET"9 },10 {11 "href": "https://www.paypal.com/checkoutnow?token=5O190127TN364715T",12 "rel": "approve",13 "method": "GET"14 },15 {16 "href": "https://api-m.paypal.com/v2/checkout/orders/5O190127TN364715T",17 "rel": "update",18 "method": "PATCH"19 },20 {21 "href": "https://api-m.paypal.com/v2/checkout/orders/5O190127TN364715T/capture",22 "rel": "capture",23 "method": "POST"24 }25 ]26 }
Modify the code
After you copy the code in the sample request, modify the following:
Access-Token: Your access token.PAYPAL-AUTH-ASSERTION: Your PayPal-Auth-Assertion token.BN-CODE: Your PayPal Attribution ID to receive revenue attribution. To find your BN code, see Code and Credential Reference.- Order ID: In the URI for the API call, replace the sample ID with your order ID. In the example, the order ID is
5O190127TN364715T. payment_source: Replace thepayment_sourcesample ID with your transaction ID. In the example, the transaction ID is67N9717781765035V.
Step result
A successful request results in the following:
- A return status code of HTTP
201 Created. - A JSON response body that contains the order ID and a status of
COMPLETED.
Capture payment
Capture payment for an order using a previous transaction ID and an order ID.
API endpoint used: Capture payment for order
- PayPal transaction ID
- PNREF
1curl -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders/5O190127TN364715T/capture2 -H 'Content-Type: application/json'3 -H 'PayPal-Request-ID: 7b92603e-77ed-4896-8e78-5dea2050476a'4 -H 'Authorization: Bearer Access-Token'5 -H 'Accept-Language: en_US'6 -H 'PayPal-Auth-Assertion: PAYPAL-AUTH-ASSERTION'7 -H 'PayPal-Partner-Attribution-Id: BN-CODE'8 -d '{9 "payment_source": {10 "token": {11 "id": "67N9717781765035V",12 "type": "PAYPAL_TRANSACTION_ID"13 }14 }15 }'
Modify the code
After you copy the code in the sample request, modify the following:
Access-Token: Your access token.PAYPAL-AUTH-ASSERTION: Your PayPal-Auth-Assertion token.BN-CODE: Your PayPal Attribution ID to receive revenue attribution. To find your BN code, see Code and Credential Reference.- Order ID: In the URI for the API call, replace the sample ID with your order ID. In the example, the order ID is
5O190127TN364715T. PayPal-Request-ID: Replace the sample ID with a unique ID you generate. This ID helps prevent duplicate authorizations if the API call gets disrupted. For more information, see API idempotency.payment_source: Replace thepayment_sourcesample ID with your transaction ID. In the example, the transaction ID is67N9717781765035V.
Step result
A successful request results in the following:
- A return status code of HTTP
201 Created. - A JSON response body that contains the order ID and a status of
COMPLETED.