Skip to content
All posts
AI

Your AI Can Write Code. That Does Not Mean It Can Handle People’s Money.

February 13, 2026·Read on Medium·

The dangerous blind spot in the vibe coding movement that nobody wants to talk about

Something exciting is happening in tech right now. People who have never written a single line of code are building websites, launching apps, and shipping products. All thanks to tools that turn plain English instructions into working software.

They call it vibe coding. You describe what you want, the tool writes the code, and within minutes you have something that looks and feels like a real product. For personal projects, landing pages, and simple tools, it works well.

But there is a line that a growing number of people are crossing without realizing how dangerous the other side is.

That line is money.

“It Works” Is Not the Same as “It Is Safe”

Every week, someone posts a demo of their new app. It takes payments. It processes credit cards. It handles billing. And it was built entirely by prompting an AI tool with something like “build me a website with a payment system.”

The app works. Transactions go through. Money moves from one account to another. On the surface, everything looks fine.

But “it works” and “it is safe” are two completely different statements. A door with no lock still opens and closes perfectly. That does not mean your house is secure.

When you build software that touches financial transactions, you are not just writing code. You are taking responsibility for other people’s money and their most sensitive personal information. Credit card numbers. Bank account details. Billing addresses.

This is not a hobby project. This is a liability.

What Actually Happens Behind a Payment Button

Most people see a “Pay Now” button and think the hard part is making it show up on the page. The truth is, the button is the easiest part. Everything that happens after someone clicks it is where the real complexity lives.

Before you consider building anything that handles payments, ask yourself if you understand the full lifecycle of a secure transaction. Take a look at the diagram below, then walk through it step by step.

The Lifecycle of a Secure Payment Gateway Integration. If any part of this chain is broken, misconfigured, or missing, someone’s money or data is at risk.

Do you know what happens first?

When a customer decides to pay, your system needs to create a bill through the payment gateway’s API. Your server sends the correct details (amount, order ID, customer reference) securely to the gateway and receives back a unique Bill ID and a payment URL. This communication must happen over encrypted channels. If it does not, the data can be intercepted before it even reaches the gateway.

Do you know where your customer enters their payment details?

In a properly designed system, the customer is redirected to a secure third-party payment portal. They enter their card number, bank details, and billing address there, not on your website. This means your system never touches, sees, or stores that sensitive data. It is handled entirely outside your application.

If you skip this and collect payment details directly on your own site, you are now responsible for securing all of that data yourself. That is a massive responsibility that requires compliance with strict security standards.

Do you know what happens after the customer pays?

Two things happen in parallel, and both matter.

First, the payment portal redirects the customer’s browser back to your website with a transaction status. This gives the customer immediate feedback. A thank you page or an error message. But here is the critical part: this redirect happens on the client side. It passes through the customer’s browser. That means it is unreliable and can be tampered with. Someone could modify the redirect URL to fake a successful payment. You must never trust this redirect alone to confirm a transaction.

Second, the payment gateway sends a direct server-to-server callback (also called a webhook) to your backend. This does not pass through any browser. It cannot be seen or manipulated by the customer. This is your reliable source of truth for whether a payment actually went through.

Do you verify that the response actually came from the payment gateway?

Both the browser redirect and the webhook must go through checksum verification before your system acts on them. A checksum is a mathematical signature that proves the data came from the payment gateway and has not been altered. Without this verification, anyone who discovers your callback URL could send a fake “payment successful” message to your server. Your system would then process the order, generate a receipt, and deliver the product. For free.

Only after both channels are verified should your system update the order status and generate a receipt.

And this is just the happy path.

In reality, things go wrong all the time. The payment gateway might go down temporarily. The customer’s bank might decline the transaction. The webhook might arrive late, or arrive twice. The customer might click the pay button multiple times, triggering duplicate charges. What does your system do in each of these cases?

If you cannot answer these questions confidently, your application is not ready to handle people’s money.

The Knowledge Gap Is the Real Danger

Nobody is saying that people without computer science degrees should be banned from building software. The tools that make coding more accessible are genuinely wonderful, and they are opening doors that were closed for decades.

The problem is not the tools. The problem is the gap between what someone knows and what they are building.

If you are building a personal blog, a portfolio site, or a simple landing page, the stakes are low. If something breaks, you fix it. Nobody gets hurt.

But payment systems operate in a completely different territory. They are governed by strict security standards like PCI DSS (Payment Card Industry Data Security Standard), which exists specifically because financial data is one of the most targeted categories of information on the internet. Companies spend millions of dollars and hire dedicated security teams just to maintain compliance.

When someone with no technical background builds a payment system using only prompts, they are almost certainly not meeting any of these standards. Not because they are careless or irresponsible, but because they simply do not know these standards exist. You cannot protect against threats you have never heard of.

A Note on Teaching and Responsibility

A growing number of coaches and instructors are now teaching others how to build apps that collect payments using vibe coding methods. They run workshops. They sell courses. They post tutorials showing how quick and easy it is.

This comes from a good place. They want to help people build businesses, earn income, and take advantage of new technology. That intention is worth respecting.

But intention alone is not enough when the subject matter involves financial security.

If an instructor teaches students how to integrate payments, those students will go out and build real products that handle real money from real people. The instructor has a responsibility to make sure those students understand the risks, not just the process.

Teaching someone how to connect a payment button without teaching them about encryption, callback verification, checksum validation, and data protection is incomplete instruction. It is like teaching someone how to start a car without mentioning brakes.

This is not about gatekeeping. It is about making sure the people we teach are equipped to build things that are safe, not just functional. Anyone who takes on the role of educator in this space should invest the time to learn these fundamentals deeply before passing them on to others.

What Can Actually Go Wrong

It helps to be specific, because vague warnings are easy to ignore.

Leaked financial data. If your application stores payment information without proper encryption, or stores it at all when it should not, a single database breach exposes every customer’s financial details. You become legally and financially responsible for that breach.

Unauthorized transactions. A bug in your payment logic could allow someone to manipulate the amount they pay, pay nothing at all, or trigger payments from other users’ accounts. If you cannot read and understand the code that handles your payment flow, you will not catch these bugs before someone else does.

Failed transaction handling. What happens when a payment fails halfway through? Does the user get charged but not receive their product? Does the system retry and charge them twice? Without proper error handling and logging, you may not even know these problems are occurring until angry customers start reaching out.

Legal exposure. Depending on where you operate, mishandling financial data can result in fines, lawsuits, and criminal charges. Regulations like GDPR in Europe, various data protection laws across Asia, and PCI DSS globally are not suggestions. They are legal requirements with real consequences.

Reputation destruction. One public incident of leaked payment data or unauthorized charges can end a business. Trust, once broken in financial matters, is extremely difficult to rebuild.

What You Should Do Instead

If you are excited about building software with modern tools and you want to work with payments, none of this means you should stop. It means you should prepare.

Learn the full payment lifecycle first. Before you touch any payment integration, understand how the process actually works. Study the flow of data, the role of encryption, the difference between client-side redirects and server-to-server callbacks. You do not need a degree. You need dedicated, focused study.

Use established payment platforms, and read their full documentation. Services like Stripe, PayPal, and similar providers handle most of the heavy security work for you. But using their service does not automatically make your app secure. You still need to implement their tools correctly, validate callbacks properly, and handle edge cases. Read the documentation thoroughly. All of it.

Get your code reviewed before going live. If you built something that handles payments, pay a qualified developer to review it. This is not optional. Think of it as hiring an electrician to inspect the wiring before you move into a house you built yourself.

Do not store what you do not need. The safest financial data is the data you never collect. Let your payment gateway handle the sensitive information. Do not store credit card numbers, CVVs, or bank details in your own database.

Test aggressively. Try to break your own system before someone else does. Submit a payment twice. Change the amount in the URL. Drop the internet connection mid-transaction. If your system cannot handle these scenarios gracefully, it is not ready.

Be honest about where you are in the learning process. There is no shame in saying “I need to learn more before I build this.” That is not weakness. That is professionalism. The only real mistake is launching something that handles other people’s money while hoping nothing goes wrong.

The Bigger Picture

The democratization of software development is a good thing. More people building more things means more innovation, more solutions, and more opportunities. Nobody should be locked out of learning and creating.

But making tools accessible must come with making knowledge accessible too. Right now, the conversation is heavily focused on “look how easy it is to build something” and far too quiet about “here is what you need to understand before you put this in front of real users.”

Building software that processes payments is not a weekend project. It is a serious responsibility that affects real people and their real money.

Build things. Learn new tools. Push boundaries. But when it comes to money, know what you are doing before you do it.

Not after something goes wrong.

Found this helpful?

If this article saved you time or solved a problem, consider supporting — it helps keep the writing going.

Originally published on Medium.

View on Medium
Your AI Can Write Code. That Does Not Mean It Can Handle People’s Money. — Hafiq Iqmal — Hafiq Iqmal