- METHOD TYPEE-wallet
- PAYMENTS
- PAYOUTS
- REFUNDS
- RECURRING
Introduction
Cash App is a financial services platform and mobile app. It enables customers to transfer money (peer-to-peer transactions), grow wealth (banking, boosts, investing and bitcoin, loans) and use capital (Cash App Pay).
Cash App Pay is a fast and simple payment method that lets you pay for purchases either by scanning a simple QR code or by using Cash App. Cash App Pay is available when you shop online or in person at select third-party merchants.
Supported Countries
- United States
Supported Currencies
- USD
Payment (Deposit) Flow
Press tab to open…
To perform a payment using Nuvei REST API integration:
- Generate a
sessionToken. Press here for details. - Perform a payment by sending a
/paymentrequest with mandatory parameters including:
-
userTokenId– Unique customer identifier in merchant system.amountcurrencypaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_Cash_App“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:email,countryuserDetailsclass containing:email,country
Example /payment Request
{
"sessionToken": "<sessionToken from /getSessionToken>",
"merchantId": "<your merchantId>",
"merchantSiteId": "<your merchantSiteId>",
"userTokenId": "<unique customer identifier in merchant system>",
"paymentOption": {
"alternativePaymentMethod": {
"paymentMethod": "apmgw_Cash_App",
}
},
"currency": "USD",
"amount": "100",
"deviceDetails": {"ipAddress": "<customer's IP address>"},
"billingAddress": {
"email": "[email protected]",
"country": "US"
},
"userDetails": {
"email": "[email protected]",
"country": "US",
},
"deviceDetails": {
"ipAddress":"<customer's IP address>"
},
"timeStamp": "<YYYYMMDDHHmmss>",
"checksum": "<calculated checksum>"
}
Example /payment Response
{
"internalRequestId": 11111111,
"status": "SUCCESS",
"errCode": 0,
"reason": "",
"merchantId": "<your merchantId>",
"merchantSiteId": "<your merchantSiteId>",
"version": "1.0",
"clientRequestId": "11111111111111",
"sessionToken": "<sessionToken from /getSessionToken>",
"clientUniqueId": "{{clientUniqueId}}",
"orderId": "11111111",
"userTokenId": "<unique customer identifier in merchant system>",
"paymentOption": {
"redirectUrl": https://gw-apm-globalpayapi.nuvei.com/Home?PaymentToken=4F850E1DE9AEDA56E5EFB35C435F728B.24045590,
"card": {}
},
"transactionStatus": "REDIRECT"
}
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to the URL provided in urlDetails.notificationUrl, which Nuvei recommends including in the /payment request.
Example Payment DMN with status=APPROVED
...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=11111111&userid=TestToken&merchant_unique_id=%7B%7BclientUniqueId%7D%7D&customData=&productId=&email=john.smith%40email.com¤cy=USD&clientUniqueId=%7B%7BclientUniqueId%7D%7D&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=340689+main+St.&address2=&country=United+States&state=&city=London&zip=&phone1=&phone2=&phone3=&client_ip=11.111.111.111&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=Smart2Pay-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=&AvsCode=&Cvv2Reply=&shippingCountry=&shippingState=&shippingCity=&shippingAddress=&shippingZip=&shippingFirstName=&shippingLastName=&shippingPhone=&shippingCell=&shippingMail=&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=1111&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_Cash_App&ID=&merchant_id=1111111111111111111&responseTimeStamp=2023-09-27.11%3A13%3A11&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=TestToken&userPaymentOptionId=2153033991&TransactionID=1111111111111111111&externalTransactionId=11111111&APMReferenceID=934048C0BCB86BC131AC9638D7E556E1&orderTransactionId=11111111&totalAmount=100&dynamicDescriptor=QA+Test+site&item_name_1=NA&item_number_1=&item_amount_1=100&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&upoRegistrationDate=20230927&type=DEPOSIT&clientRequestId=20230927141229&relatedTransactionId=&apmPayerInfo=%7B%22StatusInfo%22%3A%22%7B+StatusCode%3A+%2C+info%3A+%2C+originalAmount%3A+1.2000%2C+ProcessedAmount%3A+1.2%2C+originalCurrency%3A+USD%2C+ProcessedCurrency%3A+USD+%7D%22%2C%22AdditionalTransactionBankId%22%3A%22PWC_5f429b6q6bztfvx71bhba97gn%22%7D&sessionId=6571fe5e7718ea478786ad94f634&responsechecksum=d434c2a431148ed4cd74a9c926a4ee44&advanceResponseChecksum=471a80cdd5f440580896d46c8f424c73'...
Follow these steps to perform a payment using Nuvei REST API 2.0 integration:
- Perform a payment by sending a
/paymentsrequest with the mandatory parameters including:
-
amountcurrencytransactionTypepaymentOption.alternativePaymentMethod.namewith value “cashApp“deviceDetails.ipAddressbuyerDetailsincluding:buyerIdemailcountry
Example /payments Request (Cash App Pay)
{
"processingEntityId": "<<proccessingEntityId>>",
"amount": 10.5,
"currency": "USD",
"transactionType": "Sale",
"paymentOption": {
"alternativePaymentMethod": {
"name": "cashApp"
}
},
"custom": {
"description": "Some description"
},
"deviceDetails": {
"ipAddress": "203.0.113.45"
},
"urlDetails": {
"webhookUrl": "<<webhook url>>",
"successUrl": "<<success url>>",
"failureUrl": "<<failure url>>",
"pendingUrl": "<<pending url>>"
},
"buyerDetails": {
"buyerId": "JohnSmith12443",
"firstName": "John",
"lastName": "JSmith",
"country": "US",
"email": "[email protected]",
"companyName": "Nuvei Corp",
"locale": "bg-BG",
"dateOfBirth": "1978-01-01",
"phone": "+1234567889",
"billingAddress": {
"address": "30 Main Rd.",
"zip": "1234",
"city": "Newark",
"countryCode": "US",
"phone": "+1234567889",
"addressMatch": true
}
}
}
Example /payments Response (Redirect)
{
"paymentId": "808815fc28c24ee19fd44fc0b06b7e3c",
"amount": 10.5,
"currency": "USD",
"transactionType": "Sale",
"result": {
"status": "redirect"
},
"redirectUrl": "https://gw-apm-globalpayapi.nuvei.com/Home?PaymentToken=1697B74A2046EBD9285C9194C7D79500.10029851531",
"paymentOption": {
"alternativePaymentMethod": {
"name": "cashApp",
"paymentTokenId": "20f18744d8be469999341155672b941a"
}
}
}
After the transaction is processed, Nuvei sends a webhook (DMN), via web, that includes the result of the transaction to the URL provided in urlDetails.webhookUrl. Nuvei recommends including urlDetails.webhookUrl in the /payments request.
Example Webhook (DMN) for Approved Payment
{
"authorizingEntityId": "<<authorizingEntityId>>",
"processingEntityId": "<<processingEntityId>>",
"buyerId": "cashApp-test07",
"transactionId": "8110000000019756401",
"paymentId": "808815fc28c24ee19fd44fc0b06b7e3c",
"version": "2.0",
"amount": 10.5,
"currency": "USD",
"transactionType": "Sale",
"result": {
"status": "approved"
},
"timeStamp": "2025-12-05T20:18:37.676546235Z",
"partialApproval": { "requestedAmount": 10.5,
"requestedCurrency": "USD"
},
"paymentOption": {
"alternativePaymentMethod": {
"name": "cashApp",
"data": {
"payerId": "$CASHTAGCTOKEN"
},
"paymentTokenId": "20f18744d8be469999341155672b941a"
}
}
}
Follow these steps to perform a payment using Nuvei Web SDK integration:
3. Create an APM payment by sending a createPayment() request with the mandatory parameters, including:
paymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_Cash_App“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:email,countryuserDetailsclass containing:email,country
Example createPayment()
sfc.createPayment({
sessionToken: "<sessiontoken>",
paymentOption: {
alternativePaymentMethod: {
paymentMethod: "apmgw_Cash_App",
}
},
deviceDetails: {
ipAddress: "<customer's IP address>"
},
billingAddress: {
email: "[email protected]",
country: "US"
},
userDetails: {
email: "[email protected]",
country: "US"
}
}, function(res) {
console.log(res);
})
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to the URL provided in urlDetails.notificationUrl, which Nuvei recommends including in the /openOrder request.
- The Cash App Pay flow begins when the customer selects the Cash App Pay payment method from the payment method gallery.
- The customer enters the phone number and amount, and then presses the ‘Deposit’ button.
Example Payment Page Request
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to notify_url, which Nuvei recommends including in the request.
- REST API 1.0
-
To perform a payment using Nuvei REST API integration:
- Generate a
sessionToken. Press here for details. - Perform a payment by sending a
/paymentrequest with mandatory parameters including:
-
userTokenId– Unique customer identifier in merchant system.amountcurrencypaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_Cash_App“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:email,countryuserDetailsclass containing:email,country
Example
/paymentRequest{ "sessionToken": "<sessionToken from /getSessionToken>", "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "userTokenId": "<unique customer identifier in merchant system>", "paymentOption": { "alternativePaymentMethod": { "paymentMethod": "apmgw_Cash_App", } }, "currency": "USD", "amount": "100", "deviceDetails": {"ipAddress": "<customer's IP address>"}, "billingAddress": { "email": "[email protected]", "country": "US" }, "userDetails": { "email": "[email protected]", "country": "US", }, "deviceDetails": { "ipAddress":"<customer's IP address>" }, "timeStamp": "<YYYYMMDDHHmmss>", "checksum": "<calculated checksum>" }Example
/paymentResponse{ "internalRequestId": 11111111, "status": "SUCCESS", "errCode": 0, "reason": "", "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "version": "1.0", "clientRequestId": "11111111111111", "sessionToken": "<sessionToken from /getSessionToken>", "clientUniqueId": "{{clientUniqueId}}", "orderId": "11111111", "userTokenId": "<unique customer identifier in merchant system>", "paymentOption": { "redirectUrl": https://gw-apm-globalpayapi.nuvei.com/Home?PaymentToken=4F850E1DE9AEDA56E5EFB35C435F728B.24045590, "card": {} }, "transactionStatus": "REDIRECT" }After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to the URL provided in
urlDetails.notificationUrl, which Nuvei recommends including in the/paymentrequest.Example Payment DMN with
status=APPROVED...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=11111111&userid=TestToken&merchant_unique_id=%7B%7BclientUniqueId%7D%7D&customData=&productId=&email=john.smith%40email.com¤cy=USD&clientUniqueId=%7B%7BclientUniqueId%7D%7D&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=340689+main+St.&address2=&country=United+States&state=&city=London&zip=&phone1=&phone2=&phone3=&client_ip=11.111.111.111&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=Smart2Pay-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=&AvsCode=&Cvv2Reply=&shippingCountry=&shippingState=&shippingCity=&shippingAddress=&shippingZip=&shippingFirstName=&shippingLastName=&shippingPhone=&shippingCell=&shippingMail=&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=1111&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_Cash_App&ID=&merchant_id=1111111111111111111&responseTimeStamp=2023-09-27.11%3A13%3A11&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=TestToken&userPaymentOptionId=2153033991&TransactionID=1111111111111111111&externalTransactionId=11111111&APMReferenceID=934048C0BCB86BC131AC9638D7E556E1&orderTransactionId=11111111&totalAmount=100&dynamicDescriptor=QA+Test+site&item_name_1=NA&item_number_1=&item_amount_1=100&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&upoRegistrationDate=20230927&type=DEPOSIT&clientRequestId=20230927141229&relatedTransactionId=&apmPayerInfo=%7B%22StatusInfo%22%3A%22%7B+StatusCode%3A+%2C+info%3A+%2C+originalAmount%3A+1.2000%2C+ProcessedAmount%3A+1.2%2C+originalCurrency%3A+USD%2C+ProcessedCurrency%3A+USD+%7D%22%2C%22AdditionalTransactionBankId%22%3A%22PWC_5f429b6q6bztfvx71bhba97gn%22%7D&sessionId=6571fe5e7718ea478786ad94f634&responsechecksum=d434c2a431148ed4cd74a9c926a4ee44&advanceResponseChecksum=471a80cdd5f440580896d46c8f424c73'... - Generate a
- REST API 2.0
-
Follow these steps to perform a payment using Nuvei REST API 2.0 integration:
- Perform a payment by sending a
/paymentsrequest with the mandatory parameters including:
-
amountcurrencytransactionTypepaymentOption.alternativePaymentMethod.namewith value “cashApp“deviceDetails.ipAddressbuyerDetailsincluding:buyerIdemailcountry
Example
/paymentsRequest (Cash App Pay){ "processingEntityId": "<<proccessingEntityId>>", "amount": 10.5, "currency": "USD", "transactionType": "Sale", "paymentOption": { "alternativePaymentMethod": { "name": "cashApp" } }, "custom": { "description": "Some description" }, "deviceDetails": { "ipAddress": "203.0.113.45" }, "urlDetails": { "webhookUrl": "<<webhook url>>", "successUrl": "<<success url>>", "failureUrl": "<<failure url>>", "pendingUrl": "<<pending url>>" }, "buyerDetails": { "buyerId": "JohnSmith12443", "firstName": "John", "lastName": "JSmith", "country": "US", "email": "[email protected]", "companyName": "Nuvei Corp", "locale": "bg-BG", "dateOfBirth": "1978-01-01", "phone": "+1234567889", "billingAddress": { "address": "30 Main Rd.", "zip": "1234", "city": "Newark", "countryCode": "US", "phone": "+1234567889", "addressMatch": true } } }Example
/paymentsResponse (Redirect){ "paymentId": "808815fc28c24ee19fd44fc0b06b7e3c", "amount": 10.5, "currency": "USD", "transactionType": "Sale", "result": { "status": "redirect" }, "redirectUrl": "https://gw-apm-globalpayapi.nuvei.com/Home?PaymentToken=1697B74A2046EBD9285C9194C7D79500.10029851531", "paymentOption": { "alternativePaymentMethod": { "name": "cashApp", "paymentTokenId": "20f18744d8be469999341155672b941a" } } }After the transaction is processed, Nuvei sends a webhook (DMN), via web, that includes the result of the transaction to the URL provided in
urlDetails.webhookUrl. Nuvei recommends includingurlDetails.webhookUrlin the/paymentsrequest.Example Webhook (DMN) for Approved Payment
{ "authorizingEntityId": "<<authorizingEntityId>>", "processingEntityId": "<<processingEntityId>>", "buyerId": "cashApp-test07", "transactionId": "8110000000019756401", "paymentId": "808815fc28c24ee19fd44fc0b06b7e3c", "version": "2.0", "amount": 10.5, "currency": "USD", "transactionType": "Sale", "result": { "status": "approved" }, "timeStamp": "2025-12-05T20:18:37.676546235Z", "partialApproval": { "requestedAmount": 10.5, "requestedCurrency": "USD" }, "paymentOption": { "alternativePaymentMethod": { "name": "cashApp", "data": { "payerId": "$CASHTAGCTOKEN" }, "paymentTokenId": "20f18744d8be469999341155672b941a" } } } - Perform a payment by sending a
- Web SDK
-
Follow these steps to perform a payment using Nuvei Web SDK integration:
3. Create an APM payment by sending a
createPayment()request with the mandatory parameters, including:paymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_Cash_App“
deviceDetailsclass containing:ipAddressbillingAddressclass containing:email,countryuserDetailsclass containing:email,country
Example
createPayment()sfc.createPayment({ sessionToken: "<sessiontoken>", paymentOption: { alternativePaymentMethod: { paymentMethod: "apmgw_Cash_App", } }, deviceDetails: { ipAddress: "<customer's IP address>" }, billingAddress: { email: "[email protected]", country: "US" }, userDetails: { email: "[email protected]", country: "US" } }, function(res) { console.log(res); })After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to the URL provided in
urlDetails.notificationUrl, which Nuvei recommends including in the/openOrderrequest. - Payment Page
-
- The Cash App Pay flow begins when the customer selects the Cash App Pay payment method from the payment method gallery.
- The customer enters the phone number and amount, and then presses the ‘Deposit’ button.
Example Payment Page Request
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to
notify_url, which Nuvei recommends including in the request.
Auth-Settle Flow
Press tab to open…
Use this flow for buy now and pay within fourteen days, and for monthly installment payment.
Perform these types of payments using Nuvei REST API 1.0 integration:
- Generate a
sessionToken.Press here for details. - Send a
/paymentrequest with its mandatory parameters including:
-
userTokenIdamountcurrencytransactionTypepaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_Cash_App“
deviceDetailsclass containing:ipAddressbillingAddressblock containing:firstName,lastName,country,emailuserDetailsclass containing:email,country
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to urlDetails.notificationUrl, which Nuvei recommends including in the /payment request.
- Send a
/settleTransactionrequest. Press here for details.
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to urlDetails.notificationUrl, which Nuvei recommends including in the /settleTransaction request.
Example /settleTransaction DMN with Status=APPROVED
...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=43144401&userid=VRESTx_Cash_App&merchant_unique_id=20240531155747&customData=&productId=&first_name=John&last_name=Doe&email=johndoe%40email.com¤cy=EUR&clientUniqueId=20240531155747&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=99%2CRheinstra%C3%9Fe&address2=&country=Germany&state=&city=Verl&zip=33415&phone1=0513744112&phone2=&phone3=&client_ip=68.71.86.50&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=null&expMonth=&expYear=&Token=&tokenId=&AuthCode=43144401&AvsCode=&Cvv2Reply=&shippingCountry=DE&shippingState=&shippingCity=Berlin&shippingAddress=Rheinstra%C3%9Fe&shippingZip=12159&shippingFirstName=John&shippingLastName=Doe&shippingPhone=&shippingCell=&shippingMail=johndoe%40test.com&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=242181&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_Cash_App&ID=&merchant_id=5634436935940029474&responseTimeStamp=2024-05-31.12%3A57%3A49&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=null&transactionType=Settle&externalEmail=&cardCompany=&user_token_id=VRESTx_Cash_App&userPaymentOptionId=2153198281&TransactionID=2610000000000030790&externalTransactionId=800802864&totalAmount=120.0&dynamicDescriptor=static+test&item_name_1=screen+protector&item_number_1=&item_amount_1=120.00&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&maskedNetworkTokenNumber=&upoRegistrationDate=20240423&type=DEPOSIT&clientRequestId=20240531155747&relatedTransactionId=2610000000000030675&responsechecksum=3c7ef042908bbd31ffad275666ca6399&advanceResponseChecksum=f74a62544c453f6cc11287949ec9867b',
Example /settleTransaction DMN with Status=DECLINED
...'ppp_status=FAIL&Status=DECLINED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=43144401&userid=VRESTx_Cash_App&merchant_unique_id=20240531160441&customData=&productId=&first_name=John&last_name=Doe&email=johndoe%40email.com¤cy=EUR&clientUniqueId=20240531160441&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=99%2CRheinstra%C3%9Fe&address2=&country=Germany&state=&city=Verl&zip=33415&phone1=0513744112&phone2=&phone3=&client_ip=68.71.86.50&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=null&expMonth=&expYear=&Token=&tokenId=&AuthCode=43144401&AvsCode=&Cvv2Reply=&shippingCountry=DE&shippingState=&shippingCity=Berlin&shippingAddress=Rheinstra%C3%9Fe&shippingZip=12159&shippingFirstName=John&shippingLastName=Doe&shippingPhone=&shippingCell=&shippingMail=johndoe%40test.com&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=242181&merchant_status=&action=&requestVersion=&message=DECLINED&merchantLocale=&unknownParameters=&payment_method=apmgw_Cash_App&ID=&merchant_id=5634436935940029474&responseTimeStamp=2024-05-31.13%3A04%3A42&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=null&transactionType=Settle&externalEmail=&cardCompany=&user_token_id=VRESTx_Cash_App&userPaymentOptionId=2153198281&TransactionID=2610000000000030802&totalAmount=120.0&dynamicDescriptor=static+test&item_name_1=screen+protector&item_number_1=&item_amount_1=120.00&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&maskedNetworkTokenNumber=&upoRegistrationDate=20240423&type=DEPOSIT&clientRequestId=20240531160441&relatedTransactionId=2610000000000030675&responsechecksum=9e843f0ea8e1d741cff80d02c5d11c29&advanceResponseChecksum=ddffd8ab044c63634fd3fad0f307ffdc',
Use this flow for buy now and pay within fourteen days, and for monthly installment payment.
Perform these types of payments using Nuvei REST API 2.0 integration:
- Perform a payment by sending a
/paymentsrequest with the mandatory parameters, including:
-
amountcurrencytransactionTypepaymentOption.alternativePaymentMethod.namewith value “cashApp“deviceDetails.ipAddressbuyerDetailsincluding:buyerIdemailcountry
After the transaction is processed, Nuvei sends a webhook, via web, that includes the result of the transaction to urlDetails.notificationUrl which Nuvei recommends including in the /payments request.
3. Send a /payments/{payment-id}/settles request.
After the transaction is processed, Nuvei sends a webhook that includes the result of the transaction to urlDetails.notificationUrl, which Nuvei recommends including in the /payments/{payment-id}/settles request.
- REST API 1.0
-
Use this flow for buy now and pay within fourteen days, and for monthly installment payment.
Perform these types of payments using Nuvei REST API 1.0 integration:
- Generate a
sessionToken.Press here for details. - Send a
/paymentrequest with its mandatory parameters including:
-
userTokenIdamountcurrencytransactionTypepaymentOption.alternativePaymentMethodclass containing:paymentMethod: “apmgw_Cash_App“
deviceDetailsclass containing:ipAddressbillingAddressblock containing:firstName,lastName,country,emailuserDetailsclass containing:email,country
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to
urlDetails.notificationUrl, which Nuvei recommends including in the/paymentrequest.- Send a
/settleTransactionrequest. Press here for details.
After the transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) that includes the result of the transaction to
urlDetails.notificationUrl, which Nuvei recommends including in the/settleTransactionrequest.Example
/settleTransactionDMN withStatus=APPROVED...'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=43144401&userid=VRESTx_Cash_App&merchant_unique_id=20240531155747&customData=&productId=&first_name=John&last_name=Doe&email=johndoe%40email.com¤cy=EUR&clientUniqueId=20240531155747&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=99%2CRheinstra%C3%9Fe&address2=&country=Germany&state=&city=Verl&zip=33415&phone1=0513744112&phone2=&phone3=&client_ip=68.71.86.50&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=null&expMonth=&expYear=&Token=&tokenId=&AuthCode=43144401&AvsCode=&Cvv2Reply=&shippingCountry=DE&shippingState=&shippingCity=Berlin&shippingAddress=Rheinstra%C3%9Fe&shippingZip=12159&shippingFirstName=John&shippingLastName=Doe&shippingPhone=&shippingCell=&shippingMail=johndoe%40test.com&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=242181&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_Cash_App&ID=&merchant_id=5634436935940029474&responseTimeStamp=2024-05-31.12%3A57%3A49&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=null&transactionType=Settle&externalEmail=&cardCompany=&user_token_id=VRESTx_Cash_App&userPaymentOptionId=2153198281&TransactionID=2610000000000030790&externalTransactionId=800802864&totalAmount=120.0&dynamicDescriptor=static+test&item_name_1=screen+protector&item_number_1=&item_amount_1=120.00&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&maskedNetworkTokenNumber=&upoRegistrationDate=20240423&type=DEPOSIT&clientRequestId=20240531155747&relatedTransactionId=2610000000000030675&responsechecksum=3c7ef042908bbd31ffad275666ca6399&advanceResponseChecksum=f74a62544c453f6cc11287949ec9867b',Example
/settleTransactionDMN withStatus=DECLINED...'ppp_status=FAIL&Status=DECLINED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=43144401&userid=VRESTx_Cash_App&merchant_unique_id=20240531160441&customData=&productId=&first_name=John&last_name=Doe&email=johndoe%40email.com¤cy=EUR&clientUniqueId=20240531160441&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=99%2CRheinstra%C3%9Fe&address2=&country=Germany&state=&city=Verl&zip=33415&phone1=0513744112&phone2=&phone3=&client_ip=68.71.86.50&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=null&expMonth=&expYear=&Token=&tokenId=&AuthCode=43144401&AvsCode=&Cvv2Reply=&shippingCountry=DE&shippingState=&shippingCity=Berlin&shippingAddress=Rheinstra%C3%9Fe&shippingZip=12159&shippingFirstName=John&shippingLastName=Doe&shippingPhone=&shippingCell=&shippingMail=johndoe%40test.com&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=242181&merchant_status=&action=&requestVersion=&message=DECLINED&merchantLocale=&unknownParameters=&payment_method=apmgw_Cash_App&ID=&merchant_id=5634436935940029474&responseTimeStamp=2024-05-31.13%3A04%3A42&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=null&transactionType=Settle&externalEmail=&cardCompany=&user_token_id=VRESTx_Cash_App&userPaymentOptionId=2153198281&TransactionID=2610000000000030802&totalAmount=120.0&dynamicDescriptor=static+test&item_name_1=screen+protector&item_number_1=&item_amount_1=120.00&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&maskedNetworkTokenNumber=&upoRegistrationDate=20240423&type=DEPOSIT&clientRequestId=20240531160441&relatedTransactionId=2610000000000030675&responsechecksum=9e843f0ea8e1d741cff80d02c5d11c29&advanceResponseChecksum=ddffd8ab044c63634fd3fad0f307ffdc', - Generate a
- REST API 2.0
-
Use this flow for buy now and pay within fourteen days, and for monthly installment payment.
Perform these types of payments using Nuvei REST API 2.0 integration:
- Perform a payment by sending a
/paymentsrequest with the mandatory parameters, including:
-
amountcurrencytransactionTypepaymentOption.alternativePaymentMethod.namewith value “cashApp“deviceDetails.ipAddressbuyerDetailsincluding:buyerIdemailcountry
After the transaction is processed, Nuvei sends a webhook, via web, that includes the result of the transaction to
urlDetails.notificationUrlwhich Nuvei recommends including in the/paymentsrequest.3. Send a
/payments/{payment-id}/settlesrequest.After the transaction is processed, Nuvei sends a webhook that includes the result of the transaction to
urlDetails.notificationUrl, which Nuvei recommends including in the/payments/{payment-id}/settles request. - Perform a payment by sending a
Recurring/Tokenized Feature
The recurring/tokenized feature enables faster checkouts and supports recurring and subscription-based payments. The recurring/tokenized feature enables a merchant to securely store a customer’s payment authorization for future transactions. There is no need for a customer to repeat the approval flow, therefore repeat purchases and subscriptions are simplified. A customer maintains full control and can revoke access at any time via Cash App Pay.
The customer links a Cash App account and approves the storages of payment credentials. The merchant receives an ID for use for future transactions. Payments can be approved using the stored grant, thus reducing friction for returning customers.
The tokenized payment method is an extension of a regular Cash App Pay payment, with the ability to remember the device that the customer most often uses to finalize the transaction. The user interface is extended by an option to pay with the tokenized payment flow.
Initiating the Recurring/Tokenized Feature via REST API
Press tab to open…
subMethod.subMethod: "RECURRING" in a /payment request.
Example Tokenized /payment Request
{
"sessionToken": "282d3fc1e3f3458da86d406d6cfa55510111",
"merchantId": "{{merchantId}}",
"merchantSiteId": "{{merchantSiteId}}",
"userTokenId": "SiltokenRO4021322341",
"clientUniqueId": "{{clientRequestId}}",
"clientRequestId": "{{clientRequestId}}",
"amount": "7",
"currency": "USD",
"paymentOption": {
"alternativePaymentMethod": {
"paymentMethod": "apmgw_Cash_App",
"cashAppDirectFlow": "true"
},
"subMethod": {
"subMethod": "RECURRING"
}
},
"billingAddress": {
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"phone": "00359898690366",
"dateOfBirth": "1974-04-05",
"address": "2992 Cameron Road",
"city": "Newark",
"zip": "14236",
"state": "NY",
"country": "US",
"language": "en"
},
"userDetails": {
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"phone": "00359898690366",
"dateOfBirth": "1974-04-05",
"address": "2992 Cameron Road",
"city": "Newark",
"zip": "14236",
"state": "NY",
"country": "US",
"language": "en"
},
"deviceDetails": {
"ipAddress": "192.168.2.38"
},
"urlDetails": {
"successUrl": "https://apmtest.gate2shop.com/ppp/defaultSuccess.do",
"pendingUrl": "https://apmtest.gate2shop.com/ppp/defaultPending.do",
"failureUrl": "https://apmtest.gate2shop.com/ppp/defaultCancel.do",
"notificationUrl": "https://apmtest.gate2shop.com/ppptest/NotifyMerchantTest"
},
"timeStamp": "{{timestamp}}",
"checksum": "{{checksum}}"
}
The response and the DMN include the userPaymentOptionId to use in subsequent tokenized transaction requests. Include subMethod.subMethod: “RECURRING” in those subsequent requests; however, do not include the alternativePaymentMethod class.
Example Subsequent /payment Request with UPO
{
"sessionToken": "<sessionToken from /getSessionToken>",
"merchantId": "<your merchantId>",
"merchantSiteId": "<your merchantSiteId>",
"clientRequestId": "<unique request ID in merchant system>",
"amount": "7",
"currency": "USD",
"userTokenId": "<unique customer identifier in merchant system>",
"clientUniqueId": "<unique transaction ID in merchant system>",
"paymentOption": {
"subMethod": {
"subMethod": "RECURRING"
},
"userPaymentOptionId": "2153496261"
},
"deviceDetails": {
"ipAddress": "<customer's IP address>"
},
"billingAddress": {
"firstName": "John",
"lastName": "Doe",
"country": "US",
"email": "[email protected]"
},
"userDetails": {
"firstName": "John",
"lastName": "Doe",
"country": "US",
"email": "[email protected]"
},
"timeStamp": "<YYYYMMDDHHmmss>",
"checksum": "<calculated checksum>"
}
alternativePaymentMethod.usageIntent: "recurring" in a /payments request.
Example /payments Request
{
"processingEntityId": "<<processingEntityId>>",
"amount": 10.5,
"currency": "USD",
"transactionType": "Sale",
"paymentOption": {
"alternativePaymentMethod": {
"name": "cashApp",
"usageIntent": "recurring"
}
},
"custom": {
"description": "Some description"
},
"deviceDetails": {
"ipAddress": "203.0.113.45"
},
"urlDetails": {
"webhookUrl": "<<webhook url>>",
"successUrl": "<<success url>>",
"failureUrl": "<<failure url>>",
"pendingUrl": "<<pending url>>"
},
"buyerDetails": {
"buyerId": "JohnSmith12443",
"firstName": "John",
"lastName": "JSmith",
"country": "US",
"email": "[email protected]",
"companyName": "Nuvei Corp",
"locale": "bg-BG",
"dateOfBirth": "1978-01-01",
"phone": "+1234567889",
"billingAddress": {
"address": "30 Main Rd.",
"zip": "1234",
"city": "Newark",
"countryCode": "US",
"phone": "+1234567889",
"addressMatch": true
}
}
}
To initiate the recurring tokenized flow via REST API 2.0, include paymentToken.usageIntent: "recurring" in a /payments request.
Example /payments Request with Payment Token
{
"processingEntityId": "<<processingEntityId>>",
"amount": 10.5,
"currency": "USD",
"transactionType": "Sale",
"paymentOption": {
"paymentToken": {
"paymentTokenId": "<<paymentTokenId>>",
"usageIntent": "recurring"
}
},
"custom": {
"description": "Some description"
},
"deviceDetails": {
"ipAddress": "203.0.113.45"
},
"urlDetails": {
"webhookUrl": "<<webhook url>>",
"successUrl": "<<success url>>",
"failureUrl": "<<failure url>>",
"pendingUrl": "<<pending url>>"
},
"buyerDetails": {
"buyerId": "JohnSmith12443",
"firstName": "John",
"lastName": "JSmith",
"country": "US",
"email": "[email protected]",
"companyName": "Nuvei Corp",
"locale": "bg-BG",
"dateOfBirth": "1978-01-01",
"phone": "+1234567889",
"billingAddress": {
"address": "30 Main Rd.",
"zip": "1234",
"city": "Newark",
"countryCode": "US",
"phone": "+1234567889",
"addressMatch": true
}
}
}
The response and the webhook (DMN) include the paymentTokenId to use in subsequent tokenized transaction requests. Include paymentToken.usageIntent: "recurring" in those subsequent requests; however, do not include the alternativePaymentMethod class.
- REST API 1.0
-
To initiate the recurring/tokenized feature via REST API, include
subMethod.subMethod:"RECURRING"in a/paymentrequest.Example Tokenized
/paymentRequest{ "sessionToken": "282d3fc1e3f3458da86d406d6cfa55510111", "merchantId": "{{merchantId}}", "merchantSiteId": "{{merchantSiteId}}", "userTokenId": "SiltokenRO4021322341", "clientUniqueId": "{{clientRequestId}}", "clientRequestId": "{{clientRequestId}}", "amount": "7", "currency": "USD", "paymentOption": { "alternativePaymentMethod": { "paymentMethod": "apmgw_Cash_App", "cashAppDirectFlow": "true" }, "subMethod": { "subMethod": "RECURRING" } }, "billingAddress": { "firstName": "John", "lastName": "Doe", "email": "[email protected]", "phone": "00359898690366", "dateOfBirth": "1974-04-05", "address": "2992 Cameron Road", "city": "Newark", "zip": "14236", "state": "NY", "country": "US", "language": "en" }, "userDetails": { "firstName": "John", "lastName": "Doe", "email": "[email protected]", "phone": "00359898690366", "dateOfBirth": "1974-04-05", "address": "2992 Cameron Road", "city": "Newark", "zip": "14236", "state": "NY", "country": "US", "language": "en" }, "deviceDetails": { "ipAddress": "192.168.2.38" }, "urlDetails": { "successUrl": "https://apmtest.gate2shop.com/ppp/defaultSuccess.do", "pendingUrl": "https://apmtest.gate2shop.com/ppp/defaultPending.do", "failureUrl": "https://apmtest.gate2shop.com/ppp/defaultCancel.do", "notificationUrl": "https://apmtest.gate2shop.com/ppptest/NotifyMerchantTest" }, "timeStamp": "{{timestamp}}", "checksum": "{{checksum}}" }The response and the DMN include the
userPaymentOptionIdto use in subsequent tokenized transaction requests. IncludesubMethod.subMethod: “RECURRING” in those subsequent requests; however, do not include thealternativePaymentMethodclass.Example Subsequent
/paymentRequest with UPO{ "sessionToken": "<sessionToken from /getSessionToken>", "merchantId": "<your merchantId>", "merchantSiteId": "<your merchantSiteId>", "clientRequestId": "<unique request ID in merchant system>", "amount": "7", "currency": "USD", "userTokenId": "<unique customer identifier in merchant system>", "clientUniqueId": "<unique transaction ID in merchant system>", "paymentOption": { "subMethod": { "subMethod": "RECURRING" }, "userPaymentOptionId": "2153496261" }, "deviceDetails": { "ipAddress": "<customer's IP address>" }, "billingAddress": { "firstName": "John", "lastName": "Doe", "country": "US", "email": "[email protected]" }, "userDetails": { "firstName": "John", "lastName": "Doe", "country": "US", "email": "[email protected]" }, "timeStamp": "<YYYYMMDDHHmmss>", "checksum": "<calculated checksum>" } - REST API 2.0
-
To initiate the recurring flow via REST API 2.0, include
alternativePaymentMethod.usageIntent: "recurring"in a/paymentsrequest.Example
/paymentsRequest{ "processingEntityId": "<<processingEntityId>>", "amount": 10.5, "currency": "USD", "transactionType": "Sale", "paymentOption": { "alternativePaymentMethod": { "name": "cashApp", "usageIntent": "recurring" } }, "custom": { "description": "Some description" }, "deviceDetails": { "ipAddress": "203.0.113.45" }, "urlDetails": { "webhookUrl": "<<webhook url>>", "successUrl": "<<success url>>", "failureUrl": "<<failure url>>", "pendingUrl": "<<pending url>>" }, "buyerDetails": { "buyerId": "JohnSmith12443", "firstName": "John", "lastName": "JSmith", "country": "US", "email": "[email protected]", "companyName": "Nuvei Corp", "locale": "bg-BG", "dateOfBirth": "1978-01-01", "phone": "+1234567889", "billingAddress": { "address": "30 Main Rd.", "zip": "1234", "city": "Newark", "countryCode": "US", "phone": "+1234567889", "addressMatch": true } } }To initiate the recurring tokenized flow via REST API 2.0, include
paymentToken.usageIntent: "recurring"in a/paymentsrequest.Example
/paymentsRequest with Payment Token{ "processingEntityId": "<<processingEntityId>>", "amount": 10.5, "currency": "USD", "transactionType": "Sale", "paymentOption": { "paymentToken": { "paymentTokenId": "<<paymentTokenId>>", "usageIntent": "recurring" } }, "custom": { "description": "Some description" }, "deviceDetails": { "ipAddress": "203.0.113.45" }, "urlDetails": { "webhookUrl": "<<webhook url>>", "successUrl": "<<success url>>", "failureUrl": "<<failure url>>", "pendingUrl": "<<pending url>>" }, "buyerDetails": { "buyerId": "JohnSmith12443", "firstName": "John", "lastName": "JSmith", "country": "US", "email": "[email protected]", "companyName": "Nuvei Corp", "locale": "bg-BG", "dateOfBirth": "1978-01-01", "phone": "+1234567889", "billingAddress": { "address": "30 Main Rd.", "zip": "1234", "city": "Newark", "countryCode": "US", "phone": "+1234567889", "addressMatch": true } } }The response and the webhook (DMN) include the
paymentTokenIdto use in subsequent tokenized transaction requests. IncludepaymentToken.usageIntent: "recurring"in those subsequent requests; however, do not include thealternativePaymentMethodclass.
User Experience
Standard Payment
- On the payment page, in ‘Payment Methods, the user selects the Cash App payment method.

- The user is redirected to the payment page which displays a QR code. The user must scan the QR code using a smartphone QR camera reader.

- On the user’s mobile phone, the user approved the payment.

- The account is linked and the user can continue to the desktop page.

- The user is redirected back to the merchant page which displays a confirmation message.

Recurring/Tokenized Payment (Registration)
- On the payment page, in ‘Payment Methods’ the user selects the Cash App payment method and in ‘Payment Details’ the user clicks the toggle-switch button to authorize future payments.

- The user is redirected to the payment page which displays a QR code that must be scanned using a smartphone QR camera reader.

- On the user’s mobile phone, the user approves the payment.

- The account is linked and the user can continue to the desktop page.

- The user is redirected to the merchant page that displays a confirmation message.

Recurring/Tokenized Payment (Subsequent Payment)
For a returning user, the Cash App payment method is displayed in the ‘My Payment Methods’ section and in the ‘Payment Details’ section; the ‘Use authorized flow’ toggle-switch button is preselected.
For a subsequent transaction, an instant status response is sent via the application without a redirect. The user is redirected back to the merchant page which displays a confirmation message.

Testing
You can test the Cash App Pay payment flow for desktop using the native camera app on your mobile device or Cash App’s QR code scanner.
If you send a mobile request for test purposes, the provided mobile playground only asks for approval or denial of the payment initiation without the need of using such a device.
