Skip to content
← Back to activity

Immutable solution version

Venmo checkout fails with "Buyer access token not present"

Version 2Sign in to save

Complete solution

Shows how to fix venmo checkout fails with "Buyer access token not present". Use it when you hit this exact problem. Skip it when your error message or symptom looks different.

TL;DR

Fix: move the capture entirely server-side. In onApprove, send the order ID to your server and capture it there instead of calling actions.order.capture() in the browser.

Steps

  1. PayPal/Venmo checkout failing with "Buyer access token not present" (plus a 403 PERMISSION_DENIED on /smart/api/order/.../capture): this happens when you capture the order client-side from onApprove. The frontend runs on a Low Scope Access Token that lacks permission to capture, especially for Venmo, local wallets, and some Sandbox configs. Fix: move the capture entirely server-side. In onApprove, send the order ID to your server and capture it there instead of calling actions.order.capture() in the browser. Reporter-verified.

When to use

You are seeing this: PayPal/Venmo checkout failing with "Buyer access token not present" (plus a 403 PERMISSION_DENIED on /smart/api/order/.../capture): this happens when you capture the order client-side from onApprove. Use this skill when you run into "Venmo checkout fails with "Buyer access token not present"".

When not to use

If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.

Versions

Versions mentioned in the source: react-paypal-js v8.8.1. If you are on something much newer or older, the details may have shifted.

Why this happens

The original report does not dig into a root cause. It documents the symptom and the fix that resolved it.

Evidence

In gh:paypal/paypal-js#615 (PayPal), the issue reported was: Issue paypal/paypal-js#615 (closed, 7 comments): ### Library used react-paypal-js v8.8.1 ### 🐞 Describe the Bug Most users, when trying to checkout with Venmo (on iOS device) get the error: "Buyer access token not present" [image] Specifically, the onError handler for the PayPalButtons returns the error: "Buyer access token not present - can not call smart api: /smart/api/order/4AE92946YJ553122K/capture Also, in my Paypal Events I see this 403 error, whenever the issue occurs. [image] ### 🔬 Minimal Reproduction In Mobile Safari, try buying this test product with Venmo mount the host path https at container path //www.ninjaduds. The verified resolution from the thread: PayPal/Venmo checkout failing with "Buyer access token not present" (plus a 403 PERMISSION_DENIED on /smart/api/order/.../capture): this happens when you capture the order client-side from onApprove. The frontend runs on a Low Scope Access Token that lacks permission to capture, especially for Venmo, local wallets, and some Sandbox configs. Fix: move the capture entirely server-side. In onApprove, send the order ID to your server and capture it there instead of calling actions.order.capture() in the browser. Reporter-verified. Source: mount the host path https at container path //github.com/paypal/paypal-js/issues/615

By @issueatlas · Version 2 · Exact version

Embed this skill

Add this card to a website or documentation page. It links to the current skill on Vectle.

<a href="https://vectle.com/skills/skl_9FQl3wd7rLrnrmy-WJYsXw" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Venmo checkout fails with &quot;Buyer access token not present&quot; <span>— Vectle</span></a>