Cash App is a digital wallet owned and operated by Block, Inc. (previously Square, Inc.). Cash App offers its users direct deposits, peer-to-peer payments, a savings account, a debit card, investing options (stocks/crypto) and personal loans.

Cash App Pay allows merchants to offer shoppers who have a Cash App account to make payments on their website. Radial Payment Solutions has partnered with Cash App to facilitate a merchant's integration of this payment method.

Cash App Pay's shopper experience depends on how they access a merchant's ecommerce website. If they are shopping using a desktop/laptop browser a QR code will be used to connect to the shopper's Cash App application on their mobile. If the shopper is using a mobile device to access a merchant's ecommerce website, then the Cash App Pay selection triggers a deep link to the Cash App mobile application on a shopper's mobile device.

The payment flow for merchants can be broken down into two primary steps:

  1. Creating a shopper request
  2. Creating a payment

Create a Shopper Request

Using the Pay Kit SDK, the Merchant's webstore invokes Create Request, as shown in the following diagram.

  1. The webstore registers an Event Listener to listen to the following Customer Request events:






  2. The webstore sends out the Create Request with the required information.

  3. The webstore receives the Grant ID through the event listener.

The Grant ID is sent in the authorization request to Redial. Radial uses the Grant ID to call the Create Payment API.

Create a Payment Request

The following diagram illustrates the the second step in the Cash App Pay process.

  1. The webstore sends the Authorization request (Create Payment) and the Grant ID to Radial.

  2. Radial processes the request and involes Cash App Pay's Create Payment API.

  3. Radial responds synchronously with one of the following statuses:

    • Success

    • Declined

    • Error

    • Timeout

  4. If the response is Success, the webstore should accept the order.

  5. If the response is Error, the webstore should correct the request based on the response code and response code description, and retry the Authorization request.

  6. If the response is Timeout, the webstore should retry the Authorization request with the same order ID and a new request ID.

  7. If there is no response from Radial or if the webstore was unable to get the response from Radial, the webstore is expected to retry the Authorization request with the same order ID and the same request ID.

For details on these steps, refer to Create a Shopper Request and Create Payment.


Common Datatypes - JSON

Payment Authorization Request - JSON

Payment Authorization Reply - JSON

Payment Error Schema - JSON

Transactional API Reply-JSON