Observing Software / 01
A paragraph that moves money
Observing a Stripe checkout session
v2 · Published August 20, 2026
This paragraph can move money.
It contains no bills, coins, signatures, or account statements. It is only a short piece of text creating a Stripe checkout session.
Yet, when executed in the right environment, it can collect money from one person, retain a fee for another, transfer the remainder to a third, record the event, and send each participant toward a different screen.
The paragraph does not merely describe an economic transaction.
For a moment, it becomes one.
const session = await stripe.checkout.sessions.create({
payment_method_types: ["card"],
line_items: lineItems,
mode: "payment",
success_url: "myapp.com/success",
cancel_url: "myapp.com/cancel",
payment_intent_data: {
application_fee_amount: applicationFeeAmount,
transfer_data: {
destination: accountId,
},
},
metadata: {
account_id: accountId,
},
payment_method_options: {
card: {
request_three_d_secure: "automatic",
},
},
});I first encountered code like this as a software developer. The practical question was simple: how do I create a payment session?
Stripe's documentation gave me the structure. I gave it the products, the URLs, the platform fee, and the account that should receive the money. Once the surrounding application was correctly configured, those lines allowed value to move.
Years later, I began to see the same code differently.
I was no longer only interested in what I could build with it. I wanted to understand what the code itself could teach me.
Reading the paragraph
The first line creates a session.
A session is a temporary space in which an economic event can occur. It gathers a buyer, one or more items, a payment method, a price, a seller, an intermediary, and a possible outcome into a single object.
The paragraph establishes what kind of exchange this will be. The mode is payment, rather than a subscription or another recurring relationship. The accepted instrument is a card. The line_items define what the buyer is paying for.
The code then gives the event two possible futures.
If the payment succeeds, the buyer is sent to one location. If the buyer cancels, she is sent to another. Success and cancellation are not only abstract states in a database. They become paths through an interface.
The paragraph also defines how the money will be divided.
One amount is retained as an application fee. The rest is directed toward a connected account. A commercial relationship has been compressed into two fields: the compensation of the intermediary and the destination of the transfer.
Finally, the code requests additional authentication when the surrounding payment system considers it necessary. Risk is also part of the model. The transaction is not only a transfer of value; it is a claim about identity, authorization, and trust.
In a few lines, the programmer establishes participants, acceptable instruments, objects of exchange, distribution rules, records, risks, and outcomes.
It is a tiny economic architecture.
How can text move money?
Most writing represents reality.
A description of a transaction tells us that money moved. A contract specifies the conditions under which money should move. Executable code can participate directly in making the movement happen.
But the paragraph does not possess that power by itself.
Printed on paper, it does nothing. Placed in an application without credentials, accounts, servers, and network access, it fails. Even perfectly written code cannot persuade a bank to recognize an imaginary balance.
The paragraph becomes powerful because it sits inside an enormous structure of prior coordination.
Programming languages determine how the text will be interpreted. Stripe provides an API and promises to respond in a particular way. Banks maintain accounts and ledgers. Card networks transmit messages among institutions. Regulators define permissible activity. Contracts allocate responsibility. Identity systems determine who may send and receive funds. Currencies provide the units in which obligations are recorded.
The code works because millions of people, machines, laws, and institutions have already agreed to make its words consequential.
Seen this way, the paragraph is not merely a technical instruction. It is the visible tip of a civilizational agreement.
Software as compressed knowledge
We tend to encounter software through interfaces.
We press a button, see a loading indicator, receive a confirmation, and continue with our day. The complexity required to produce that moment remains mostly invisible.
Reading the software reverses the perspective.
The checkout session reveals how its designers learned to represent a payment event. A functioning implementation contains accumulated knowledge about what must be known, what can go wrong, who needs to be identified, what should be remembered, and how responsibility should be distributed.
Some of this knowledge came from engineering. Much of it came from commerce, banking, regulation, fraud, customer support, and years of failed transactions.
The resulting API is a compressed representation of those encounters with reality.
This does not mean that the representation is complete or neutral.
Every model preserves certain aspects of reality and discards others. The code can represent an account identifier, but not the life of the person behind it. It can confirm that a payment succeeded, but not that the exchange was fair. It can calculate a platform fee, but not determine whether that fee is justified.
Software makes reality legible enough to act upon it. What it makes legible, and what it leaves outside the model, deserves attention.
The philosophy inside the checkout
We can ask whether this checkout works. We can also ask what becomes true when it does.
Why does the platform receive this amount?
Who bears the cost of fraud?
Who is allowed to open a connected account?
Which countries, identities, businesses, and currencies can participate?
What information is preserved about the transaction?
What does the buyer see?
How much control does the recipient retain?
These questions may not appear in the syntax, but the running system answers them anyway.
Every technical architecture contains a model of the people who will inhabit it. Every payment system distributes agency, visibility, risk, and reward. Even when the builder does not consciously articulate these choices, they become operational through the product.
Code is therefore not separate from philosophy, the philosophy is already inside the checkout.
The paragraph executes, and reality changes.
Versions
- v2 — August 20, 2026 — Draft v2.