Steven Senkus

Software Developer living in 🌞 sunny, 🌞 sunny San Diego

ChatGPT helped me find an API - Venmo deeplink URLs

I was recently working for a client on a small static website that needed a Venmo link for customers.

The requirement was straightforward: add a HTML link that directs a user to their Venmo app with pre-populated data for a recipient, a short description, and price.

The solution seemed simple at first, as PayPal (a direct competitor of Venmo), offers great documentation and customization.

However…

This is a common problem when trying to integrate 3rd-party APIs into our software, a consequence of short project deadlines, documentation neglect, or even the constant churn of API revisions.

You should be able to have a Venmo-specific link on a website that works for mobile users so that they can pay you via Venmo. PayPal is pretty good at this. They understand where the sales come from.

Google Search was good, but not great

As many of us developers know, Google is your best friend when you’re looking for a solution to your software problems. Us software developers can also tell you that StackOverflow and Google often have outdated, irrelevant or just plain wrong information.

Here’s the relevant information I found:

While these links got me closer to my goal of finding valid Venmo deeplinks, there was still some work to be done. Sifting through this information was fairly time-consuming, and I was still curious about what was possible with this undocumented API.

I did not want to use the third-party tool, (URL Genius Venmo Deeplink Generator), as this tool sends form data to its API via a POST request. This seems suspicious considering it is just generating a few URLs. A client-side JavaScript web app could perform this without sending data to their servers. I don’t want my client’s information to be exposed.

ChatGPT to the rescue!

I have been querying ChatGPT for a number of weeks now and I’ve been extremely impressed with the quality of the content generated.

This tool can save hundreds of man-hours researching all sorts of topics. I have been mostly using it as a supplement to Google search queries, but I have found ChatGPT really excels with follow-up querying.

So I decided to use ChatGPT in my search for Venmo deeplinking…

My ChatGPT Query

“give me a list of query string parameters that can be used in a Venmo deeplink string to populate data on user’s Venmo app.”

ChatGPT Response

chatgpt-venmo-deeplink-initial-query

Sure! Here’s a list of query string parameters that can be used in a Venmo deeplink string to populate data on a user’s Venmo app:

  • amount: Specifies the amount of money that is to be transferred.
  • note: Specifies a note to be included with the transaction.
  • recipients: Specifies a comma-separated list of Venmo usernames to which the transfer should be sent.
  • audience: Specifies the audience for the transaction. Possible values are “public” (default) and “private”.
  • transaction: Specifies the ID of a previously completed transaction to split.
  • action: Specifies the type of action to perform. Possible values are “pay” (default) and “charge”.
  • merchant_id: Specifies the ID of a merchant associated with the transaction.
  • product_id: Specifies the ID of the product associated with the transaction.
  • destination: Specifies the ID of a destination account associated with the transaction.
  • origin: Specifies the ID of an origin account associated with the transaction.

Note that not all of these query string parameters are required, and some may not be applicable to your particular use case. Additionally, the exact format of the deeplink string may depend on the specific version of the Venmo app and the platform it is running on.

My Follow-up ChatGPT Query

“Create a comprehensive list of dummy URLs that utilize these parameters.”

ChatGPT Response

chatgpt deeplink_follow up query

Sure! Here’s a list of example deeplink URLs that use some of the parameters I mentioned earlier:

  • Transfer money to a user:
    venmo://paycharge?txn=pay&recipients=username&amount=10&note=Payment%20for%20lunch
  • Charge a user for a product:
    venmo://paycharge?txn=charge&recipients=username&amount=20&note=Charge%20for%20product&merchant_id=12345&product_id=67890
  • Split a previously completed transaction:
    venmo://paycharge?txn=pay&recipients=username1,username2&amount=25&note=Splitting%20a%20previous%20transaction&transaction=12345
  • Transfer money to a user with a private audience:
    venmo://paycharge?txn=pay&recipients=username&amount=15&note=Private%20payment&audience=private
  • Transfer money to a user with a destination account:
    venmo://paycharge?txn=pay&recipients=username&amount=30&note=Payment%20for%20services&destination=destination_account_id
  • Transfer money to a user with an origin account:
    venmo://paycharge?txn=pay&recipients=username&amount=35&note=Payment%20for%20services&origin=origin_account_id

Note that these are just examples, and the specific query string parameters and values you use will depend on your specific use case. Also, keep in mind that the format of the deeplink URL may vary depending on the specific version of the Venmo app and the platform it is running on.

Wait, that’s just iOS!

Of course, ChatGPT isn’t perfect. From my prior research on Google, these deeplinks are only useful on iOS. Android Venmo users need separate deeplinks.

Let’s query ChatGPT one more time.

chatgpt deeplink_android_follow up query

ChatGPT Response

Sure, here’s a list of example deeplink URLs that use some of the parameters I mentioned earlier for Android:

  • Transfer money to a user:
    intent://paycharge?txn=pay&recipients=username&amount=10&note=Payment%20for%20lunch#Intent;scheme=venmo;package=com.venmo;end
  • Charge a user for a product:
    intent://paycharge?txn=charge&recipients=username&amount=20&note=Charge%20for%20product&merchant_id=12345&product_id=67890#Intent;scheme=venmo;package=com.venmo;end
  • Split a previously completed transaction:
    intent://paycharge?txn=pay&recipients=username1,username2&amount=25&note=Splitting%20a%20previous%20transaction&transaction=12345#Intent;scheme=venmo;package=com.venmo;end
  • Transfer money to a user with a private audience:
    intent://paycharge?txn=pay&recipients=username&amount=15&note=Private%20payment&audience=private#Intent;scheme=venmo;package=com.venmo;end
  • Transfer money to a user with a destination account:
    intent://paycharge?txn=pay&recipients=username&amount=30&note=Payment%20for%20services&destination=destination_account_id#Intent;scheme=venmo;package=com.venmo;end
  • Transfer money to a user with an origin account:
    intent://paycharge?txn=pay&recipients=username&amount=35&note=Payment%20for%20services&origin=origin_account_id#Intent;scheme=venmo;package=com.venmo;end

Note that the syntax for deeplink URLs may differ depending on the version of the Venmo app and the Android device being used. The intent:// scheme is used to launch an activity within the Venmo app, and the #Intent parameter is used to specify the package name of the app to launch. In this case, the package name for the Venmo app on Android is com.venmo.

Conclusion

ChatGPT is great! I love the ease of content generation along with continuous querying to narrow in on what I was searching for. While it won’t replace Google Search any time soon, ChatGPT still continues to amaze me with its usefulness. Get yourself an account today and start chatting!

Now, all I need to do is create a JavaScript function to change these deeplinks depending on the detected device OS. That sounds just like something ChatGPT excels at!


Share