<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/building-a-real-web3-payment-flow-with-xrpl-xaman-wallet-without-smart-contracts--chjvd3gye" -->

---
title: Building a Real Web3 Payment Flow with XRPL & Xaman...
description: A hands-on walkthrough of building a Web3 payment flow using XRP Ledger (XRPL) and Xaman Wallet, without smart contracts. The project simulates a simple...
canonical: https://daily.dev/posts/building-a-real-web3-payment-flow-with-xrpl-xaman-wallet-without-smart-contracts--chjvd3gye
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Building a Real Web3 Payment Flow with XRPL & Xaman Wallet (Without Smart Contracts) | daily.dev
og:description: A hands-on walkthrough of building a Web3 payment flow using XRP Ledger (XRPL) and Xaman Wallet, without smart contracts. The project simulates a simple...
og:url: https://daily.dev/posts/building-a-real-web3-payment-flow-with-xrpl-xaman-wallet-without-smart-contracts--chjvd3gye
og:image: https://api.daily.dev/og/posts/ChjvD3gyE.png
og:image:alt: Building a Real Web3 Payment Flow with XRPL & Xaman Wallet (Without Smart Contracts)
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Building a Real Web3 Payment Flow with XRPL & Xaman Wallet (Without Smart Contracts)

**[Coins Bench](https://daily.dev/sources/coinsbench)** · 5 min read · 0 upvotes · 0 comments

## Summary

A hands-on walkthrough of building a Web3 payment flow using XRP Ledger (XRPL) and Xaman Wallet, without smart contracts. The project simulates a simple marketplace where users authenticate via wallet ownership (QR-based), browse products, and pay with XRP. Key concepts covered include wallet-based authentication, XRPL payment payload creation using the Xaman SDK, transaction approval via QR code, and the importance of polling-based transaction verification to confirm blockchain finality. The full-stack app uses React on the frontend and Express on the backend, running against the XRPL testnet.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://coinsbench.com/building-a-real-web3-payment-flow-with-xrpl-xaman-wallet-without-smart-contracts-8629f9363e37>

## Questions this post answers

### How do I build a payment flow on the XRP Ledger without using smart contracts?

Use a backend to create an XRPL payment payload with the Xaman SDK, specifying a TransactionType of Payment, a destination address, and an amount in drops (1 XRP equals 1,000,000 drops). The user scans a QR code or uses a deep link in Xaman Wallet to approve the transaction, after which the frontend polls the backend to confirm the transaction was actually submitted and confirmed on-chain, retrieving a transaction hash as proof.

_Developers experimenting with XRPL payment flows follow practical walkthroughs like this on daily.dev._

### How does wallet-based authentication work with Xaman Wallet on XRPL?

Instead of usernames and passwords, the backend creates a Xaman SignIn payload and generates a QR code; the user approves the login request in the Xaman app, which returns their wallet address to the backend. That wallet address then becomes the user's identity for the session, since ownership of the wallet is verified rather than a stored credential.

_Anyone comparing wallet-based login schemes for web3 apps can track similar approaches on daily.dev._

### Why isn't approving a transaction in a wallet enough to confirm a blockchain payment succeeded?

Clicking approve only confirms the user signed the transaction, not that it was actually submitted and confirmed on the ledger. A reliable payment flow must poll the backend to check payload resolution and confirm the XRPL transaction status, since verification (signed, submitted, confirmed) is what proves a payment genuinely completed, at which point a transaction hash is returned as proof.

_Teams building payment verification into web3 apps can find similar patterns on daily.dev._

## Similar posts on daily.dev

- [Building WalletX: What I Learned Integrating Razorpay Into a Personal Finance App](https://daily.dev/posts/building-walletx-what-i-learned-integrating-razorpay-into-a-personal-finance-app-rqipdyabr) · Medium · 1 upvotes · 0 comments
- [Building a Real Smart Contract Web3 Marketplace on Ethereum Sepolia](https://daily.dev/posts/building-a-real-smart-contract-web3-marketplace-on-ethereum-sepolia-jplw1ki0x) · Coins Bench · 0 upvotes · 0 comments
- [Lessons From Building a Global Platform for Seamless Payments](https://daily.dev/posts/lessons-from-building-a-global-platform-for-seamless-payments-qifbvzbhl) · The New Stack · 0 upvotes · 0 comments
- [Polar payments in an Astro app](https://daily.dev/posts/polar-payments-in-an-astro-app-j9z35pk7v) · Flavio Copes · 0 upvotes · 0 comments
- [Deploy Smart Contracts Securely Using Tangem Wallet with Hardhat 3](https://daily.dev/posts/deploy-smart-contracts-securely-using-tangem-wallet-with-hardhat-3-runh4osrh) · Coins Bench · 0 upvotes · 0 comments

---

Tags: [#react](https://daily.dev/tags/react), [#web3](https://daily.dev/tags/web3)

[View this post on daily.dev](https://daily.dev/posts/building-a-real-web3-payment-flow-with-xrpl-xaman-wallet-without-smart-contracts--chjvd3gye)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Building a Real Web3 Payment Flow with XRPL & Xaman Wallet (Without Smart Contracts)","url":"https://daily.dev/posts/building-a-real-web3-payment-flow-with-xrpl-xaman-wallet-without-smart-contracts--chjvd3gye","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/building-a-real-web3-payment-flow-with-xrpl-xaman-wallet-without-smart-contracts--chjvd3gye"},"datePublished":"2026-07-11T00:22:34.107Z","dateModified":"2026-09-14T07:25:10.663Z","description":"A hands-on walkthrough of building a Web3 payment flow using XRP Ledger (XRPL) and Xaman Wallet, without smart contracts. The project simulates a simple...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/fc4bbb34b750e5cdadda160a7de7454a?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/fc4bbb34b750e5cdadda160a7de7454a?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Coins Bench","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Coins Bench","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ba340d3c8caa4c2586911332928e24d9","url":"https://daily.dev/sources/coinsbench"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/building-a-real-web3-payment-flow-with-xrpl-xaman-wallet-without-smart-contracts--chjvd3gye","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"react,web3","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Coins Bench","item":"https://daily.dev/sources/coinsbench"},{"@type":"ListItem","position":3,"name":"Building a Real Web3 Payment Flow with XRPL & Xaman Wallet (Without Smart Contracts)"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/building-a-real-web3-payment-flow-with-xrpl-xaman-wallet-without-smart-contracts--chjvd3gye#faq","mainEntity":[{"@type":"Question","name":"How do I build a payment flow on the XRP Ledger without using smart contracts?","acceptedAnswer":{"@type":"Answer","text":"Use a backend to create an XRPL payment payload with the Xaman SDK, specifying a TransactionType of Payment, a destination address, and an amount in drops (1 XRP equals 1,000,000 drops). The user scans a QR code or uses a deep link in Xaman Wallet to approve the transaction, after which the frontend polls the backend to confirm the transaction was actually submitted and confirmed on-chain, retrieving a transaction hash as proof. Developers experimenting with XRPL payment flows follow practical walkthroughs like this on daily.dev."}},{"@type":"Question","name":"How does wallet-based authentication work with Xaman Wallet on XRPL?","acceptedAnswer":{"@type":"Answer","text":"Instead of usernames and passwords, the backend creates a Xaman SignIn payload and generates a QR code; the user approves the login request in the Xaman app, which returns their wallet address to the backend. That wallet address then becomes the user's identity for the session, since ownership of the wallet is verified rather than a stored credential. Anyone comparing wallet-based login schemes for web3 apps can track similar approaches on daily.dev."}},{"@type":"Question","name":"Why isn't approving a transaction in a wallet enough to confirm a blockchain payment succeeded?","acceptedAnswer":{"@type":"Answer","text":"Clicking approve only confirms the user signed the transaction, not that it was actually submitted and confirmed on the ledger. A reliable payment flow must poll the backend to check payload resolution and confirm the XRPL transaction status, since verification (signed, submitted, confirmed) is what proves a payment genuinely completed, at which point a transaction hash is returned as proof. Teams building payment verification into web3 apps can find similar patterns on daily.dev."}}]}
```

