Capture a PayPal order
tenantKeyX-Tenant-Key<token>The public store key (pk_live_…). Required on every call.
X-Cart-Token*stringThe cart token from POST /api/v1/cart.
X-Client-IP?stringOptional. IP address of the shopper (one IPv4/IPv6, no port, no list). Honoured only together with a valid X-Tenant-Secret; ignored otherwise. Used for rate limits and recorded with form submissions.
X-Tenant-Secret?stringOptional here. Server secret of the store: server-to-server only, never from a browser. Enables X-Client-IP.
Idempotency-Key?stringOptional; recommended (a UUID made once per user action, reused only to retry that action). Only a success is stored (24 hours): the same key with the same body, URI and credentials (Authorization, X-Cart-Token, X-Chat-Token) replays it (Idempotent-Replayed: true); anything else under that key is 422 IDEMPOTENCY_KEY_REUSED. An error is never stored: after a 4xx or 5xx, retrying with the same key runs the request again.
X-Session-Id?stringOptional. The shopper's sid cookie value (8-128 of letters, digits, . _ : -). Recorded on the basket as a SHA-256 hash only (never the raw value), so the order can be checked against the consent in force when it is placed, even when Stripe or PayPal settle it later without a request. Send it on every basket write; an absent header keeps the stored hash, and a malformed one is ignored.
X-Visitor-Id?stringOptional. The vid cookie value, when the shopper has one. Recorded on the basket as a SHA-256 hash only (never the raw value), so the order can be checked against the consent in force when it is placed, even when Stripe or PayPal settle it later without a request. Send it on every basket write; an absent header keeps the stored hash, and a malformed one is ignored.
X-Consent-Token?stringOptional. The consent cookie value (the consent_token from PUT consent). Recorded on the basket as a SHA-256 hash only (never the raw value), so the order can be checked against the consent in force when it is placed, even when Stripe or PayPal settle it later without a request. Send it on every basket write; an absent header keeps the stored hash, and a malformed one is ignored.
X-GA-Client-Id?stringOptional. The GA4 client id from the _ga cookie that the Google tag of the merchant set: its last two numbers (GA1.1.1234567890.1699999999 → 1234567890.1699999999, ^\d{1,10}\.\d{1,10}$). Send it only when the shopper has granted analytics AND advertising. Kept with the basket and the order only while both are in force (removed when either is withdrawn, on erasure, and after its window), and sent to Google Analytics as the client_id of the purchase, so GA4 joins it to the visit. An absent header keeps the stored id; a malformed one is ignored (never a 422).
application/json- body
POST checkout/paypal/capture {paypal_order_id}.
paypal_order_id*stringSuccess.
application/json- response
data*meta*curl -X POST 'https://api.elaraone.app/api/v1/checkout/paypal/capture' \ -H 'X-Tenant-Key: pk_live_…' \ -H 'X-Tenant-Secret: your-server-secret' \ -H 'X-Cart-Token: 01JB9K3N7Q2W5X8Z4C6V1T0R3M' \ -H 'Content-Type: application/json' \ -d '{ "paypal_order_id": "string"}'{ "data": { "id": 0, "reference": "string", "status": "string", "status_label": "string", "placed_at": "string", "dispatched_at": "string", "delivered_at": "string", "cancelled_at": "string", "lines": [ { "id": 0, "type": "string", "description": "string", "identifier": "string", "option": "string", "quantity": 0, "unit_price": { "amount": 0, "currency": "string", "formatted": "string" }, "sub_total": { "amount": 0, "currency": "string", "formatted": "string" }, "discount_total": { "amount": 0, "currency": "string", "formatted": "string" }, "discounts": [ { "id": 0, "amount": { "amount": 0, "currency": "string", "formatted": "string" } } ], "tax_total": { "amount": 0, "currency": "string", "formatted": "string" }, "total": { "amount": 0, "currency": "string", "formatted": "string" } } ], "shipping_method": { "identifier": "string", "name": "string", "kind": "collect", "collection_location": { "id": 0, "name": "string", "line_one": "string", "line_two": "string", "city": "string", "state": "string", "postcode": "string", "country": "string", "instructions": "string", "opening_hours": { "property1": "string", "property2": "string" } } }, "shipments": [ { "carrier": "string", "carrier_label": "string", "service": "string", "tracking_number": "string", "tracking_url": "string", "dispatched_at": "string" } ], "addresses": { "shipping": { "title": "string", "first_name": "string", "last_name": "string", "company_name": "string", "line_one": "string", "line_two": "string", "line_three": "string", "city": "string", "state": "string", "postcode": "string", "country_id": 0, "delivery_instructions": "string", "contact_email": "string", "contact_phone": "string" }, "billing": { "title": "string", "first_name": "string", "last_name": "string", "company_name": "string", "line_one": "string", "line_two": "string", "line_three": "string", "city": "string", "state": "string", "postcode": "string", "country_id": 0, "delivery_instructions": "string", "contact_email": "string", "contact_phone": "string" } }, "sub_total": { "amount": 0, "currency": "string", "formatted": "string" }, "discount_total": { "amount": 0, "currency": "string", "formatted": "string" }, "coupon_code": "string", "discounts": [ { "id": 0, "name": "string", "label": "string", "kind": "string", "coupon": "string", "amount": { "amount": 0, "currency": "string", "formatted": "string" }, "items_amount": { "amount": 0, "currency": "string", "formatted": "string" }, "shipping_amount": { "amount": 0, "currency": "string", "formatted": "string" } } ], "shipping_discount": { "amount": 0, "currency": "string", "formatted": "string" }, "savings": { "amount": 0, "currency": "string", "formatted": "string" }, "shipping_total": { "amount": 0, "currency": "string", "formatted": "string" }, "tax_breakdown": [ { "identifier": "string", "description": "string", "percentage": "string", "price": { "amount": 0, "currency": "string", "formatted": "string" } } ], "tax_total": { "amount": 0, "currency": "string", "formatted": "string" }, "total": { "amount": 0, "currency": "string", "formatted": "string" } }, "meta": { "order_access_token": "string", "order_access_token_expires_at": "string" }}