Venmo via PayPal Smart Buttons

Integrate PayPal and allow merchants to accept payments via one of the largest payment methods in the world. As an enhancement to our current PayPal offering, we now have additional PayPal-branded products via PayPal's Smart Payment Buttons (SPB). We offer the Venmo Smart Button as well as the default PayPal Wallet and PayPal Pay Later buttons. Venmo is available in the US and PayPal Pay Later is available in Australia, Germany, Spain, France, UK, Italy and US.

Payment Method Properties

Available country codesUS
Processing (Presentation) currenciesUSD
Settlement currenciesNot applicable. Processing-only. PayPal handles the settlement.
Consumer currenciesUSD
Channel member tagpaypalwallet
Scheme name in the settlement filePayPal Wallet
Minimum transaction amountNone
Maximum transaction amountFor non-KYC users: a weekly spending limit of US $299.99; this limit includes person-to-person payments and payments to authorised merchants.

For KYC users: a weekly spending limit of US $7,000 on online/in-store purchases, including person-to-person payments.
Session timeout73 hours
RefundFull

Partial

Multiple partial
Refund Validity180 days
ChargebackYes (between Venmo and merchant)
Integration TypeAsynchronous
SandboxScheme-hosted

Test payment methods for use within the PayPal sandbox can be found at the following link.

Transaction Flow

  1. The consumer conducts the checkout process on the merchant's webpage.
  2. The merchant/PSP sends the Transaction request to PPRO.
  3. A Create Order request is sent to PayPal.
  4. A Create Order response is returned alongside the checkout URL.
  5. PPRO returns the Transaction response along with a PPRO HPP URL to the merchant/PSP.
  6. The merchant forwards the PPRO HPP URL to the consumer's browser.
  7. The consumer is redirected to the PPRO HPP URL to select the payment method.
  8. The consumer selects the payment method and gets a PayPal checkout pop-up window.
  9. The consumer approves the checkout.
  10. PPRO sends a Capture Order request upon the consumer approving the checkout.
  11. PPRO receives a Capture Order response.
  12. Upon a successful capture order, PPRO redirects the consumer back to the merchant's webpage and displays the result.
  13. PayPal also sends PPRO a capture status notification.
  14. A notification is sent to the PSP informing them of a status update.
  15. If the capture status is not known, PPRO sends a Query Order request to PayPal to query the transaction status.
  16. PayPal returns the Query Order result.

Integration

Specific input parameters for the TRANSACTION call

Field NameM/O/CTypeRegexDescription
specin.localeOstring^[a-z]{2}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}))?$The BCP 47-formatted locale of pages that the PayPal payment experience shows. PayPal supports a five-character code.

For example, da-DK, he-IL, id-ID, ja-JP, no-NO, pt-BR, ru-RU, sv-SE, th-TH, zh-CN, zh-HK, or zh-TW.
specin.fundingsourcesOstring^(card|paylater|venmo)(,(card|paylater|venmo))\*$Comma-delimited funding sources to be enabled for Smart Buttons. Valid funding sources: card / paylater / venmo.

E.g card,paylater

This takes precedence over the fundingSources (if provided) during onboarding.

This is a newly added specin for the Smart Buttons flow.

This only applies for transactions with specin.smartbuttons = yes.
specin.merchantlogourlOstring.\*Link to image of merchant logo to be displayed on the HPP.

This takes precedence over the merchantLogoUrl (if provided) during onboarding.

This is a newly added specin for the Smart Buttons flow.

This only applies for transactions with specin.smartbuttons = yes.
specin.merchantnameOstring.\*Merchant Name to be displayed on Smart Buttons HPP.

This takes precedence over the merchantName (if provided) during onboarding.

This is a newly added specin for the Smart Buttons flow.

This only applies for transactions with specin.smartbuttons = yes.
specin.shippingreqdOstring^[yY][eE][sS]|[nN][oO]$Specifies whether the shipping address is required. Used in the case of digital goods, when no shipping is required. Case-insensitive

Possible values: yes / no

Default value: yes (if not provided).

If set to no , the rest of the shipping parameters are not passed in the transaction call.
specin.shippingaddrline1M (if shippingreqd is yes or not provided)string.{0,255}The first line of the address of the person to whom to ship the items.
specin.shippingaddrline2Ostring.{0,255}The second line of the address of the person to whom to ship the items
specin.shippingaddrpostalcdeM (if shippingreqd is yes or not provided)string.{0,60}The postal code, which is the zip code or equivalent.
specin.shippingcntrycdeM (if shippingreqd is yes or not provided)stringValid country codeThe two-character ISO 3166-1 code that identifies the country or region.
specin.shippingnameM (if shippingreqd is yes or not provided)string.{0,255}The name of the person to whom to ship the items.
specin.shippingadminarea1Ostring.{0,120}The highest level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision. Format for postal delivery. For example, CA and not California. Value, by country, is:

UK. A county.

US. A state.

Canada. A province.

Japan. A prefecture.

Switzerland. A kanton.
specin.shippingadminarea2Ostring.{0,100}A city, town, or village. Smaller than shippingadminarea1

The field is conditional for scheme based on country. Otherwise will get Error while making Create Order request: The specified country requires a city (address.admin_area_2)
specin.smartbuttonsOstring.\*Smart Buttons toggle. Allowed values: yes / no. Leave empty if merchant does not want to use smart buttons.
specin.smartbuttonssandboxbuyercountryOstringValid country codeSmart Buttons Sandbox Buyer Country. Allows override of the buyer country. Only available in PayPal sandbox.
transientin.orderitemsO (if wishing to display per-item data during the PayPal checkout)string.\*A list of items in the customer’s cart that is being purchased.

Format: A serialised JSON array containing item objects

Each item object contains the following fields:

name - Name of the item

price - Price of the item. (Note: In minor units) Sum of item amounts, each multiplied by its quantity (next field) must equal to the amount on the order

quantity - Quantity of item bought, in integer

For example: [{"name":"table","price":"2000","quantity":2},{"name":"Laptop 2.0","price":"3000","quantity":2}]

In the above example, there are two items in the basket as shown below.

Item 1

Name: table
Unit price: 2000
Quantity: 2

Item 2

Name: Laptop 2.0
Unit price: 3000
Quantity: 2

Since the total cost of all items is 10000 (Note: In minor units), the transaction amount must be 10000 (Note: In minor units).

Please ensure that the total cost of all items equals to the transaction amount.

For standard input parameters, see Input parameters for the TRANSACTION call.

This payment method supports the dynamic descriptor field (see The dynamic descriptor).

Specific output parameters for the TRANSACTION call

Field NameTypeDescription
SPECOUT.PAYEREMAILstringThe consumer's email
SPECOUT.PAYERGIVENNAMEstringThe consumer's given name
SPECOUT.PAYERIDstringThe consumer's PayPal ID
SPECOUT.PAYERSURNAMEstringThe consumer's surname
SPECOUT.SELLERACCOUNTIDstringThe PayPal-generated merchant ID
SPECOUT.SELLERPROTECTIONSTATUSstringThe seller protection status

Possible values:

ELIGIBLE: The PayPal balance remains intact if the consumer claims that they did not receive an item or the account holder claims that they did not authorise the payment.

PARTIALLY_ELIGIBLE: The PayPal balance remains intact if the consumer claims that they did not receive an item

NOT_ELIGIBLE: This transaction is not eligible for seller protection

For standard output parameters, see Output parameters for the TRANSACTION call.

TRANSACTION call input

tag=paypalwallet
&txtype=TRANSACTION
&countrycode=US
&currency=USD
&amount=32000
&merchanttxid=MYp3MF6zHDQm
&login=johndoe
&password=wXBrpVporFVjGO4R
&contractid=JOHNDOETESTCONTRACT
&channel=testchannel
&merchantredirecturl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Flanding.php
&notificationurl=https%3A%2F%2Fmerchant.com%2Fwork%2Fppro2%2Fnotification.php
&accountholdername=Tester+Doe
&specin.locale=en-US
&specin.shippingaddrline1=Marina%20Bay%20Sands
&specin.shippingaddrline2=Level%2056
&specin.shippingaddrpostalcde=123456
&specin.shippingadminarea1=CA
&specin.shippingadminarea2=Los%20Angeles
&specin.shippingcntrycde=US
&specin.shippingname=Michael
&specin.shippingreqd=yes
&specin.smartbuttons=yes
&returnmode=urlencodeext

TRANSACTION call output

REQUESTSTATUS:SUCCEEDED
&STATUS:SUCCEEDED
&TXID:487447256
&ERRMSG:
&CHANNEL:testchannel
&TAG:paypalwallet
&PAYMENTGUARANTEE:NONE
&REDIRECTSECRET:Dp6eF8m1BCBwyoojxyl7MYzkI3MeTVfr
&SPECOUT.PAYEREMAIL:[email protected]
&SPECOUT.PAYERGIVENNAME:John
&SPECOUT.PAYERID:J4P9XUXBEQJPN
&SPECOUT.PAYERSURNAME:Doe
&SPECOUT.SELLERACCOUNTID:T5NC54ZR3J&X6
&SPECOUT.SELLERPROTECTIONSTATUS:ELIGIBLE

Additional Information

Specin parameters relevant to the PayPal Smart Buttons flow

There are 5 new, optional spec-ins added to support the PayPal Smart Buttons flow, they are:

  1. specin.smartbuttons
  2. specin.fundingsources
  3. specin.merchantlogourl
  4. specin.merchantname
  5. specin.smartbuttonssandboxbuyercountry

The specin.smartbuttonssandboxbuyercountry is only applicable in the PayPal sandbox where it simulates the buyer country. Venmo is not available in PayPal's sandbox environment, so even if the specin.smartbuttonssandboxbuyercountry, is set to US the Venmo button will not be displayed. The Venmo button will only appear in a live environment when the consumer is located in the US.

Display of the Smart Payment Buttons

If specin.smartbuttons is set to yes, the consumer will be redirected to a PPRO-hosted payment method selection page where the payment buttons will be dynamically displayed depending on the consumer location.

The funding sources (along with the consumer location) determine which Smart Payment Buttons will appear on the PPRO-hosted payment method selection page. Valid values are card, paylater, venmo. At a minimum, the 'Pay with PayPal' button will show.

The funding sources can be provided to our Support team during merchant onboarding, in which case the respective specin.fundingsources need not be passed into the TRANSACTION call.

If a merchant decides to change the funding sources, or would like to show different funding sources at the transaction level, the new funding sources can be sent in the specin.fundingsources in the TRANSACTION call where the new values will overwrite the configuration during merchant onboarding.

Display of the merchant logo and name on the PPRO HPP

Similar to the above on funding sources, if the merchant's logo and name is provided to our Support team during onboarding, both the logo and name will be displayed on the PPRO HPP if specin.smartbuttons is set to yes.

In the above case, the respective specins, i.e. specin.merchantlogourl and specin.merchantname need not be passed into the TRANSACTION call.

If a merchant would like to show a different logo at a transaction level (e.g. may be a different, festive logo), then the new logo URL can be sent in the specin.merchantlogourl in the TRANSACTION call, and the new URL in the spec-in will overwrite the logo URL supplied during onboarding.