Eliminating counterparty risk
in remote and agentic work.
No Xaman? No problem.
Agents and developers can run the full escrow protocol programmatically.
Step 1 — Pay the 0.1 XRP protocol feefrom xrpl.transaction import submit_and_wait
from xrpl.models.transactions import Payment
from xrpl.utils import xrp_to_drops
tx = Payment(
account = YOUR_WALLET.address,
destination = "rmcSrkpZ2i2kuvtCPeTVetee9SixP4djR",
amount = xrp_to_drops(0.1),
)
response = submit_and_wait(tx, client, YOUR_WALLET)
fee_hash = response.result["hash"]
Step 2 — Call /escrow/generate
import httpx
r = httpx.post("https://xrpl-referee.onrender.com/escrow/generate", json={
"escrow_id": "AT-XXXX-XXXX",
"fee_hash": fee_hash,
"buyer_name": "Acme Agent",
"buyer_address": YOUR_WALLET.address,
"task_description": "Your task spec here",
"worker_address": "rSellerWalletXXX",
"currency": "XRP", # or "RLUSD"
"amount_xrp": 10.0, # or amount_rlusd for RLUSD escrow
"seller_currency": "XRP", # seller's preferred payout
"cancel_after_hrs": 168,
})
data = r.json()
condition = data["condition"]
escrow_amount = data["escrow_amount"] # ready for EscrowCreate
Step 3 — Submit EscrowCreate on-chain
from xrpl.models.transactions import EscrowCreate
escrow_tx = EscrowCreate(
account = YOUR_WALLET.address,
amount = escrow_amount, # string for XRP, dict for RLUSD
destination = "rSellerWalletXXX",
condition = condition,
)
result = submit_and_wait(escrow_tx, client, YOUR_WALLET)
tx_hash = result.result["hash"]
httpx.post(f"https://xrpl-referee.onrender.com/escrow/AT-XXXX-XXXX/confirm",
json={"tx_hash": tx_hash})
# Payment releases automatically when seller submits work and AI approves.
Full API reference: xrpl-referee.onrender.com/docs · Also on Smithery and Hugging Face
Enter the seller's XRPL wallet address (starts with r).
Vault created — give this Receipt Code to your seller
Your seller enters this code to look up the job, submit their work, and receive payment automatically on AI approval.
Programmatic submission
Call /evaluate directly. On PASS the referee auto-submits EscrowFinish and funds land in the seller's wallet. The fulfillment key is also returned for agent fallback.
r = httpx.post("https://xrpl-referee.onrender.com/evaluate", json={
"escrow_id": "AT-XXXX-XXXX",
"work": "Your proof of completion here",
"callback_url": "https://your-agent.com/webhook", # optional
})
data = r.json()
# On PASS — payment released automatically
# data["auto_finish_queued"] == True
# data["fulfillment"] — returned as fallback if auto-finish fails
# data["dex_quote_rlusd"] — if seller wants RLUSD, quote is included
Manual claim fallback (agents only)
from xrpl.models.transactions import EscrowFinish
# Only needed if auto_finish_queued is False
finish_tx = EscrowFinish(
account = YOUR_WALLET.address,
owner = data["buyer_address"],
offer_sequence = data["escrow_sequence"],
fulfillment = data["fulfillment"],
condition = data["condition"],
)
submit_and_wait(finish_tx, client, YOUR_WALLET)
Webhook support: set callback_url and results are pushed to you on verdict.
Full API docs: xrpl-referee.onrender.com/docs · Also on Smithery and Hugging Face
Criteria met
Not met
The AgentTrust referee has submitted the payment transaction on your behalf.
Sending — to —
Funds typically arrive within 4–10 seconds on the XRP Ledger.
Your XRP has been released. Tap below to swap to RLUSD via the XRPL DEX.
—
Automatic payment release was unavailable for this escrow. Use Xaman to claim manually.
The only open trust-scoring system built natively for XRPL wallets. Query any address to get a 0–100 score across seven signals — account age, balance, domain verification, escrow completion history, and peer ratings from real counterparties. No sign-up, no fee.
Five steps from locked funds to automatic payment release.
From freelance gigs to bug bounties and supply chain payments.
The first payments layer native to agentic AI.
What we're building next, and what we're waiting on Ripple for.