iroh for payments
How Paycode used iroh to connect payment terminals to point of sale systems at highway toll booths, with no additional servers and full compliance.










Fast connections.
Anywhere.
Forever.
Send data to any device running anywhere, big or small — cloud servers, tablets, or embedded systems. The core peer-to-peer technology is open source and built on open standards, so you're never locked in.
“Doubling the network speed halves our compute budget.”
Distributed AI Training
Train foundation LLMs with compute distributed around the world, across AWS, GCP, Azure, and self-hosted infrastructure.

Video Streaming
Stream video between devices, using peer to peer technology. Create encrypted connections built on open standards, across the globe or across the room.

Real-time Sync for Mobile Applications
Powers apps for hundreds of thousands of devices around the world, even when internet access is precarious.

Point of Sale Payments
Connect payment terminals directly to point of sale systems over Bluetooth, LAN, or Wi-Fi with full PCI compliance and no additional servers.
Deploy, Monitor, Fix
All commits to iroh's main branch run through a growing set of simulations & tests.
iroh provides opt-in observability and network diagnostics — track connection health and throughput across all your devices and services.
Monitor your AppDozens of open-source, composable protocols built on top of iroh. Mix & match to get the feature set you need.
// a program that creates two endpoints & sends a ping between them
use anyhow::Result;
use iroh::{Endpoint, protocol::Router};
use iroh_ping::Ping;
#[tokio::main]
async fn main() -> Result<()> {
// create the receive side
let recv_ep = Endpoint::builder().bind().await?;
let recv_router = Router::builder(recv_ep.clone())
.accept(iroh_ping::ALPN, Ping::new())
.spawn();
recv_ep.online().await;
let addr = recv_router.endpoint().addr();
// create a send side & send a ping
let send_ep = Endpoint::builder().bind().await?;
let send_pinger = Ping::new();
let rtt = send_pinger.ping(&send_ep, addr).await?;
println!("ping took: {rtt:?} to complete");
Ok(())
}How Paycode used iroh to connect payment terminals to point of sale systems at highway toll booths, with no additional servers and full compliance.
Running iroh on an ESP32 microcontroller.