{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["sub-heading"]},"type":"markdown"},"seo":{"title":"How it works","description":"Transform your commerce with PXP's unified platform—seamless payments, real-time insights, and global growth in one powerful integration.","lang":"en-UK","siteUrl":"https://developer.pxp.io","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"how-it-works","__idx":0},"children":["How it works"]},{"$$mdtype":"Tag","name":"SubHeading","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Learn about PXP's PayPal and Venmo payout components."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The PayPal payouts components enable you to send payouts directly to your customers' PayPal or Venmo wallets. Whether you're paying vendors, freelancers, partners, or disbursing refunds, rebates, and rewards — the payouts components provide a streamlined experience built on top of PayPal's payout rails."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["With the payouts components, you can benefit from:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Simplified disbursements:"]}," Send payouts directly to PayPal or Venmo wallets without managing the underlying PayPal API complexity."]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["SDK or merchant-initiated payouts:"]}," Choose whether the SDK handles the payout execution or trigger it from your own backend after your own validation checks."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Customisable UI components:"]}," Use pre-built components with configurable styling, or build your own UI and call the APIs directly."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Operational safeguards:"]}," Benefit from built-in logging, retries, and reconciliation handled by the gateway."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payout-options","__idx":2},"children":["Payout options"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The payouts components support the following wallet types:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["PayPal:"]}," Send payouts to recipients using their PayPal email address or Payer ID."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Venmo:"]}," Send payouts to recipients using their Venmo email, phone number, or handle."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payout-initiation-modes","__idx":3},"children":["Payout initiation modes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When initiating a payout, you can choose who triggers the actual payout request:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["SDK-initiated payout:"]}," The SDK handles the payout execution after the user confirms. This is the fastest time-to-market option."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Merchant-initiated payout:"]}," The SDK collects and validates information, but your backend triggers the payout via API. This gives you maximum control for additional validation or business logic."]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Aspect"},"children":["Aspect"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SDK-initiated"},"children":["SDK-initiated"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Merchant-initiated"},"children":["Merchant-initiated"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["proceedPayoutWithSdk"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payout trigger"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The SDK calls PXP backend automatically."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your backend calls the payout API."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Control level"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Simplified flow."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Full control over timing and validation."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use cases"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Standard payouts, quick integration."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Custom validation, compliance checks, multi-step approval."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In SDK-initiated mode, the SDK calls the PXP backend after your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPrePayoutSubmit"]}," callback approves the payout, and then invokes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPostPayout"]}," with the result. In merchant-initiated mode, the SDK validates inputs and returns control to your backend, which calls the payout API directly and can implement additional approval workflows."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"supported-transaction-intents","__idx":4},"children":["Supported transaction intents"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you initiate a payout transaction, you need to provide key information about the transaction method, amount, and currency."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The transaction method includes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["entry type"]},", which describes the origin of the transaction. For payouts, this is always ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Ecom"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["intent"]},", which describes the purpose of a transaction and indicates the intended money flow direction."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payouts support the following intent:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Intent"},"children":["Intent"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Payout"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Disburse funds to a recipient's PayPal or Venmo wallet. Use this for all payout transactions."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"sdk-components","__idx":5},"children":["SDK components"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The payouts SDK provides several components you can use based on your integration needs:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"20%","data-label":"Component"},"children":["Component "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"40%","data-label":"Type"},"children":["Type "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"40%","data-label":"Description"},"children":["Description "]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Amount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payout-amount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Display-only payout amount. Use this to show the payout amount to the customer before confirming."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["PayPal receiver"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paypal-payout-receiver"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Display-only PayPal email from config with optional masking. Use this for returning customers when you have their PayPal email/Payer ID."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Venmo receiver"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["venmo-payout-receiver"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Display-only Venmo receiver from config with optional masking. Use this for returning customers when you have their Venmo details."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Submission"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payout-submission"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["\"Withdraw with PayPal/Venmo\" button that executes the payout. Use this for returning customers when you already have stored wallet details."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All components follow the same basic lifecycle:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create the component with any configuration and callbacks you need."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Mount the component into a container in your DOM to make it visible and interactive."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Unmount the component when the user leaves the page or when the component is no longer needed."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"pre-requisites","__idx":6},"children":["Pre-requisites"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before integrating the payouts components, ensure you have:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A merchant account with PXP (credentials/API key)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your PayPal merchant account onboarded with PXP."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verified identity/account (if required by compliance)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sufficient funds in your gateway balance to cover payout amounts and fees."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The recipients' PayPal or Venmo identifiers (if using the withdrawal flow)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An HTTPS endpoint with a valid SSL certificate (if you plan to receive webhooks)."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["At minimum, your SDK initialisation must provide:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"typescript","header":{"controls":{"copy":{}}},"source":"import { PxpCheckout, IntentType, CurrencyType } from \"@pxpio/web-components-sdk\";\n\nconst pxpCheckoutSdk = PxpCheckout.initialize({\n  environment: \"test\",                 // or \"production\"\n  session: sessionData,\n  ownerId: \"your-owner-id\",\n  ownerType: \"MerchantGroup\",\n  transactionData: {\n    amount: 100,                       // > 0\n    currency: \"USD\" as CurrencyType,   // 3-letter ISO code\n    entryType: \"Ecom\",\n    intent: {\n      paypal: IntentType.Payout        // required for payouts\n    },\n    merchantTransactionId: crypto.randomUUID(),\n    merchantTransactionDate: () => new Date().toISOString()\n  },\n  paypalConfig: {\n    payoutConfig: {\n      proceedPayoutWithSdk: true\n      // Optionally add paypalWallet / venmoWallet for withdrawal flow\n    }\n  }\n});\n","lang":"typescript"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"whats-next","__idx":7},"children":["What's next?"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Now that you understand how payouts work, you're ready to start integrating:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/checkout/components/web/quickstart"},"children":["Quickstart"]},": Set up the Web SDK in your project."]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/checkout/components/web/paypal/payouts/withdrawal-flow"},"children":["Withdrawal flow"]},": Implement payouts for returning customers."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/checkout/components/web/paypal/payouts/about-configuration"},"children":["Configuration"]},": Configure the appearance and behaviour of components."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/checkout/components/web/paypal/payouts/events"},"children":["Events"]},": Handle payout events and callbacks."]}]}]},"headings":[{"value":"How it works","id":"how-it-works","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Payout options","id":"payout-options","depth":2},{"value":"Payout initiation modes","id":"payout-initiation-modes","depth":2},{"value":"Supported transaction intents","id":"supported-transaction-intents","depth":2},{"value":"SDK components","id":"sdk-components","depth":2},{"value":"Pre-requisites","id":"pre-requisites","depth":2},{"value":"What's next?","id":"whats-next","depth":2}],"frontmatter":{"seo":{"title":"How it works"}},"lastModified":"2026-05-06T14:29:06.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/checkout/components/web/paypal/payouts/how-it-works","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}