Ship 26 NYC - Agents with Wallets: Building for the Machine-to-Machine Economy
VVercel
Internet TechnologySmall Business/StartupsComputing/Software
Transcript
00:00:00Hello, everyone. Good afternoon. I am Prasad Vangikar, Principal Engineer at Stripe.
00:00:11Today, I'm going to walk you over what does it take to get yourself into this Asian economy.
00:00:18Over the past year, I have been obsessed with one single question.
00:00:23How does the commerce change when Asian starts buying for us?
00:00:29We are already building the pieces. We are building APIs, MCP servers, the services that
00:00:39already work. How does agent find us? And right now, agents are not good at, like, finding
00:00:48stuff. Can't buy from you, can't pay you, then, you know, it becomes difficult. But that's
00:00:56about to change. I'm going to show you how things are going to work. You know that open
00:01:03sign, every store front door has it. When it's open, the customers walk in. When it's not,
00:01:11they walk away. Today, most of the businesses, they don't have a similar version of that sign
00:01:19sign for the agents. So, you may have a great API, great MCP server, useful data, excellent product. But it
00:01:30really doesn't matter until the agent finds you. Until the agent is able to buy from you, agent is able to pay
00:01:37for it. By the end of this talk, you will know how to flip that sign open. So, how many of you here have been, like,
00:01:49wipe coding an app as a weekend project? Nice. Me too. I'm a marathon runner. I have a crazy goal. Run a marathon in every state of, like, 50 U.S. states. For that, I sat with
00:02:07my agent on one Saturday morning trying to build an app for it. An app that tracks your progress, finds you races,
00:02:18builds training plans, pulls data from your watch, maybe your ring, sells you gear from top brands, and
00:02:27eventually sell your anonymized data to other apps that might benefit from that data. So, most of you have
00:02:37raised your hands earlier. So, definitely, you can relate to this. That's me by Saturday evening,
00:02:47screaming and yelling at my coding agent because I hit walls. I hit five of them. Today's talk isn't really about
00:02:54that app. But I want to walk you over those walls that I hit and how to get out of it.
00:03:03So, let's begin. Coding is easy. Agents can definitely do it for us today. But as an app owner,
00:03:12we want our app to be deployed on day one. We want to start the experimentation. We want to get early
00:03:19feedback from our users. And for that, we need to start building the infrastructure as well. The agent is
00:03:27good at coding. But can it build infrastructure for you? Let's take a look.
00:03:38So, Stripe projects. Here, it works like from the terminal. You can provide one infrastructure
00:03:46vendor with one single command. So, three different vendors, three billing accounts, and my coding agent
00:03:53isn't good at filling out those forms. So, how does it spin up the infrastructure?
00:04:00Let's take a look. Stripe projects. One command per service. That's it. Raw credentials, real accounts,
00:04:09all provision from the terminal. 52 providers are live today, including Vercel, our way one launch
00:04:16partner. My agent provisions infrastructure, the same way it writes code. One command at a time. And
00:04:25a single invoice. A single invoice for the entire stack. Let's take a look.
00:04:55By the way, that clip should have the sound. So, let me just narrate you. So, it has built the database,
00:05:03the auth. And lastly, there we go. Excellent. Let's see what we got.
00:05:20Database hosting auth. All live. Credentials in Stripe secret store. All three build through one Stripe
00:05:28account. That's it. Now, infrastructure is done. The coding agent is in full swing building the
00:05:39application logic. But it hits another wall. It needs to get data live from the live endpoints. And where is
00:05:48it going to find all these services that do exist out there? Let's take a look.
00:06:00So, I need raised data. I need elevation profiles. I need local coaches. I know they exist somewhere on
00:06:07the internet. My coding agent has no idea where to look. Web search is not -- is non-deterministic, not reliable.
00:06:16So, for example, MCP gave us a common language for calling these tools. But for that, we need to know
00:06:23where these tools exist. Where are these endpoints to call?
00:06:30What about, like, the ones that the agent has never heard of? For that, we have Stripe directory.
00:06:38A searchable registry for internet businesses. My agent searches race data API. And it gets a structured
00:06:48JSON back with all the information it needs to call these services, these endpoints, whether these are
00:06:54paid endpoints and how to pay for them. Everything in one place. No web scraping. No guessing. Let's watch how.
00:07:03Now, let me show you how an agent discovers services. I'm using Stripe CLI to show exactly what happens under the old.
00:07:26We found a bunch of services. Now, let's get a compact comparison.
00:07:40Here we go. Three services. Which one supports what? Everything the agent needs to pick the best fit.
00:07:49For businesses on Stripe network, the integration is already done. It's just one setting away on the dashboard.
00:07:58So, my coding agent found the API that it needs to call in order to get that data.
00:08:05It knows how to call it. It knows how much it costs. But it doesn't know how to pay for it. At least, not yet.
00:08:16So, why can't a coding agent pay for services? So, can you raise your hand if you are comfortable
00:08:26giving out your credit card to the coding agent? Anyone? Okay. A few. So, whoever raised the hand,
00:08:36please DM me. I know a startup who is looking for beta testers. But I wouldn't give my credit card to my
00:08:44coding agent for obvious reasons. I don't trust them as much. But let's take a look. The real question
00:08:53about giving the credit card to the agent is not about just the trust. But how do I give it a spending
00:09:01power without any limits? Right? So, how do I make it secure? The answer is link agent wallet. 30 seconds to
00:09:10set up. No credit card handover. Just a secure link to your wallet. Let's watch the demo.
00:09:23Here is my coding agent. It has just finished building the race calendar module.
00:09:27All the tests are passing. And now we are on to the next step, which is fetching the data from the live API.
00:09:35The agent has sent the request. And it just learned that it's a paid API. 15 cents per request. And the agent
00:09:44doesn't have a wallet yet. Let's give the agent a wallet. Let's use Stripe's link agent wallet.
00:09:55So, I'm authenticating this coding agent to use my link wallet on my behalf.
00:10:14But every purchase needs my approval. Let's see how. Just make sure it has all my payment methods.
00:10:28Good. Now the agent can see all my payment methods. Normally, the agent handles all of this. I'm doing
00:10:35it manually. So, it's clear what's happening here. Now let's go back to the agent and tell it we got
00:10:43a wallet now. Let me try.
00:10:51Now the coding agent creates a spend request. 15 cents. It's going to ask my permission.
00:10:57Here we go.
00:11:13Great. I can see this request. I approve it.
00:11:22Biometric done.
00:11:27The agent paid the API. Got the data back.
00:11:34It spent the real money. I approved it.
00:11:39Every cent requires confirmation from me. In 30 seconds, my agent has a wallet now. It can spend
00:11:47the money. But of course, like every time it tries to spend money, I need to manually confirm it. So,
00:11:54it's like giving it the power without, like, you know, completely giving it the responsibility. So,
00:12:01I still approve all these payment requests. So far, my coding agent has been buying for me. But now,
00:12:12let's fast forward. A couple of months, the app is live. Users are loving it. And there are, let's say,
00:12:19millions of users using my app. Now, my app becomes an agent. Let's say, you know, the users want to buy
00:12:28some gear from the app. And it can recommend and sell a few things to these users. But, again,
00:12:39everything like today, the buying experience, the checkout, is a web page. And agent or my app is not
00:12:47a web page. So, let's find out how the checkout experience can be, like, standardized for every agent
00:12:57and merchant around us. So, UCP is the answer. Universal commerce protocol, an open standard that Stripe is
00:13:07actively shaping. My app needs to buy from merchants on behalf of its users. But checkout today is built for
00:13:18humans with browsers. UCP solves this. It gives agents a standardized way to browse products, build cards,
00:13:26and complete the checkout without opening a single web page.
00:13:33On top of that, Stripe's ACS is the easiest way to participate in agent e-commerce.
00:13:39It's how every Stripe merchant can get onto agent e-commerce quickly. Now, my app can browse products,
00:13:48fill cards, complete purchases from any ACS merchants on Stripe. When it's time to pay,
00:13:55it creates a shared payment token. Think of it as, like, a token saying this user wants to buy from
00:14:03this merchant and this is, like, you know, their limit. We'll get to that in a second. But the agent
00:14:11proposes a product, the user approves it, and the seller gets the payment. It's win-win-win for all.
00:14:21So, let's take a look at the shared payment token. It's essentially a payment method wrapped in a token.
00:14:31So, agent gets the token. It sends the token to the seller. What the token says is basically the same thing.
00:14:39The user has approved this merchant for this much amount. And that gets transferred to the merchant,
00:14:46not like the raw credit card information. So, that means the communication channel between the agent
00:14:52and the seller is outside of the PCI compliance. So, it becomes easier for agents and merchants to communicate.
00:15:01And the actual credentials are safe with a party which we all trust to hold this kind of sensitive
00:15:08information.
00:15:13Now, my app can buy from merchants. And it has millions of users. And these users are using this app
00:15:22every day. They are logging their runs. And now, it can send -- sell this data to others, which might be,
00:15:29like, very useful. The race results, workout history, recovery patterns. All this might be very useful for
00:15:36other agents and services. So, let's take a look. Let's say a coaching app wants pacing data. A research
00:15:43platform wants recovery trends. They don't want to come to my website and sign up, get API keys,
00:15:50or sign up, or set up the billing, which is, like, you know, very cumbersome. What they want, really, is just
00:15:57come, take -- do a service request and get the data back. That's it. And I want to make money out of it. So, how do I
00:16:07charge for a single API call? Let's take a look. So, here is something I love. HTTP 402. Payment required. It
00:16:17has been in the spec since the beginning, 1997. The original authors put this thing in there for a future
00:16:25use case where machines can pay for machines using HTTP. We just never had the infrastructure to do it.
00:16:35Today, we do have it. How do I charge for that? Machine payments protocol. MPP. The open standard for
00:16:45machine-to-machine payments using the HTTP 402. Five lines of middleware, and that's it. Yesterday,
00:16:52this endpoint was free. Now, I can make money out of it. So, let me just walk you over, like, the
00:16:59protocol really quick. So, the client sends an HTTP request to the server. Server knows it's a paid API.
00:17:06So, instead of responding to that request, it responds by giving 402 with a challenge. And the
00:17:13challenge is everything the client needs in order to finish the payment. So, the client reads the 402,
00:17:20the challenge, and it does the payment. Once the payment is complete, it resends the same request
00:17:27with the proof of that payment. And everything is done on, like, HTTP. No redirects, no signups or
00:17:36anything. No human in the loop either. So, let's take a look at how it looks live.
00:17:48Here is the server, up and running. One endpoint, 50 cents a query. In the meanwhile,
00:17:56an agent shows up. It has found the endpoint and wants to get the data.
00:18:04Lane HTTP GET. And it gets back a 402 payment required. And on the server, we see the challenge is
00:18:20created. The agent knows how to pay through MPPX. So, let's go ahead and let it pay.
00:18:27Great. 50 cents paid. The agent got what it wanted. And the payment is received on the backend.
00:18:51Let's go in the dashboard and take a look. Yes, you see it. All this was possible because of the MPP and
00:19:02five lines of middleware code.
00:19:07So, this app started as a weekend project. It consumed services to get built. And now, it has services to
00:19:16offer to the world. So, my app is using Stripe directory to get built itself. Now, my app is on the
00:19:29directory for others to get fined. Let's take a look. This is how it looks. My app on the Stripe
00:19:37directory is ready to be called and get paid. So, the agent e-commerce or machine-to-machine economy
00:19:48isn't coming. It's here today. And we have the tools to help you build for it. So, are you open for
00:19:56agents? Today, you can be with Stripe. So, please leave us if you have any questions in our booth. Thank you.
00:20:05Thank you.