Capture payments for order
Last updated: Oct 24th, 1:12am
Capturing a payment moves funds from the buyer's account to your merchant account and completes the transaction. You can capture the full authorized amount or partial amounts based on your business needs.
Choose the capture approach that matches your fulfillment workflow:
- Complete capture: Capture the full authorized amount when shipping the entire order. Use this for single-item orders or when fulfilling complete orders at once.
- Partial capture: Capture portions of the authorized amount as you fulfill items. Use this for multi-item orders, backorders, split shipments, or when final pricing varies.
Complete capture
Use a valid access token and send a POST request to /v2/payments/authorizations/{authorization_id}/capture to capture the full authorized amount. You can either send an empty request body or set final_capture to true to indicate this is the final capture for the authorization.
After capture completes, you'll receive a PAYMENT.CAPTURE.COMPLETED webhook notification with capture details and transaction information.
- Sample request
- Sample response
1curl -X POST https://api.sandbox.paypal.com/v2/payments/authorizations/9RN122029T021534A/capture \2 -H "Content-Type: application/json" \3 -H "PayPal-Request-Id: YOUR-PAYPAL-REQUEST-ID" \4 -H "Authorization: Bearer ACCESS-TOKEN" \5 -H "PayPal-Partner-Attribution-Id: BN-CODE" \6 --d '{}'
Partial capture
Use a valid access token and send a POST request to /v2/payments/authorizations/{authorization_id}/capture to capture a portion of the authorized amount. Set final_capture to false to allow additional captures from the same authorization.
- Sample request
- Sample response
1curl -X POST https://api.sandbox.paypal.com/v2/payments/authorizations/6A8715427W114745J/capture \2 -H "Content-Type: application/json" \3 -H "Authorization: Bearer <ACCESS_TOKEN>" \4 -H "PayPal-Request-Id: <UNIQUE_REQUEST_ID>" \5 -d '{6 "amount": {7 "value": "10.00",8 "currency_code": "USD"9 },10 "invoice_id": "ARG0-1761283036",11 "final_capture": false12}'