Skip to main content

PayPal Developer API Features

Catalog of PayPal REST capabilities, mapped to opshell.dev revenue shapes. ✅ marks features already covered by paypal-sandbox/paypal-test.mjs. Per-feature test status is tracked in the Feature Test Matrix.

Sandbox scope

Everything below is testable against https://api-m.sandbox.paypal.com using Sandbox app credentials. Features marked approval-gated may still be disabled for the account and should be verified before design depends on them.

Authentication​

FeatureEndpointTestableNotes
OAuth2 token (client credentials)POST /v1/oauth2/token✅Prerequisite for every call
Token introspectionPOST /v1/oauth2/token/introspectYesDebugging
Userinfo (OIDC)GET /v1/identity/oauth2/userinfoYesFor Log in with PayPal

Checkout & payments​

FeatureEndpointTestableRevenue shape
Create orderPOST /v2/checkout/orders✅Digital packs
Get orderGET /v2/checkout/orders/{id}YesAll
Capture orderPOST /v2/checkout/orders/{id}/captureYesDigital packs
Authorize orderPOST /v2/checkout/orders/{id}/authorizeYesServices
Void authorizationPOST /v2/payments/authorizations/{id}/voidYesServices
Capture authorized paymentPOST /v2/payments/authorizations/{id}/captureYesServices
Refund capturePOST /v2/payments/captures/{id}/refundYesAll
Get capture / refund detailsGET /v2/payments/captures/{id}YesReporting
PayPal JS SDK buttonssdk.js (browser)YesAll
Advanced card payments (unbranded)Payments v2Approval-gatedCard-only checkout
Venmo / Pay LaterJS SDKRegion-gatedVenmo is US-only

Catalog & subscriptions (memberships)​

FeatureEndpointTestableNotes
Create productPOST /v1/catalogs/products✅Container for plans
List / get / update productGET /v1/catalogs/productsYes
Create planPOST /v1/billing/plans✅USD only per plan
List / get / update / deactivate planGET /v1/billing/plansYes
Create subscriptionPOST /v1/billing/subscriptionsYesNeeds buyer approval
Get / list subscriptionsGET /v1/billing/subscriptionsYes
Cancel subscriptionPOST /v1/billing/subscriptions/{id}/cancelYesAccess revocation
Suspend / activate subscriptionPOST /v1/billing/subscriptions/{id}/suspendYesNon-payment handling
Capture authorized subscription paymentSubscriptions v1Yes
List subscription transactionsGET /v1/billing/subscriptions/{id}/transactionsYesReconciliation
Free trials & setup feesPlan overridesYesMembership onboarding
Revise plan (price/quantity)Subscriptions v1YesUpgrades

Invoicing (services)​

FeatureEndpointTestableNotes
Create draft invoicePOST /v2/invoicing/invoices✅
List / get / search invoicesGET /v2/invoicing/invoicesYes
Send / send reminder/v2/invoicing/invoices/{id}/sendYes
Cancel invoice/v2/invoicing/invoices/{id}/cancelYes
Record payment (out-of-band)/v2/invoicing/invoices/{id}/paymentsYesBank/wire clients
Refund invoiceInvoicing v2Yes
Generate QR code/v2/invoicing/invoices/{id}/generate-qr-codeYes
Generate next invoice number/v2/invoicing/generate-next-invoice-numberYes
Invoicing not authorized

On 2026-09-13 the Sandbox app opshell returned NOT_AUTHORIZED when creating a draft invoice. Enable Invoicing for the app/account before depending on it. Status is tracked in the Feature Test Matrix.

Money movement & reporting​

FeatureEndpointTestableNotes
BalancesGET /v1/reporting/balancesYesBalance display
Transaction searchGET /v1/reporting/transactionsYesReconciliation
Single payoutPOST /v1/payments/payoutsApproval-gatedPayout to sellers
Batch payoutPOST /v1/payments/payoutsApproval-gatedBulk payouts

Webhooks, disputes, wallet​

FeatureEndpointTestableNotes
Create / list / delete webhook/v1/notifications/webhooksYesFulfillment trigger
Verify webhook signaturePOST /v1/notifications/verify-webhook-signatureYesSecurity
List event typesGET /v1/notifications/webhooks-event-typesYesEvent discovery
Webhook simulatorDeveloper DashboardYesFire events without a real payment
List / get disputes/v1/customer/disputesYesChargeback handling
Accept claim / provide evidence/v1/customer/disputes/{id}/...Yes
Vault — store payment method/v1/vault/...Approval-gatedSaved cards / subscriptions

Sandbox-only testing tools​

ToolPurpose
Test business + personal accountsSimulate a real buyer with Sandbox login
Magic amounts / negative testingForce declines and error states
Sandbox credit cardsCard-only checkout flows
Webhook simulatorTrigger PAYMENT.CAPTURE.COMPLETED, BILLING.SUBSCRIPTION.*, etc.
API Explorer / PostmanAd-hoc request testing

Capability risks to verify before design locks​

  • Payouts and Vault — frequently approval-gated; may be unavailable for ID.
  • Live receiving in Indonesia — Sandbox passes even when live is restricted; test separately with live credentials and a small real transaction.
  • Venmo / Pay Later / advanced cards — geo- or approval-gated.
  • One currency per plan — USD chosen; a second plan is required for any other currency.