Skip to content

Pay in USDC on Algorand (ALGORAND_PAY_TO) - #56

Merged
Fizzl13 merged 23 commits into
mainfrom
claude/x402-agents-solana-payments-nceg9b
Oct 8, 2026
Merged

Fizzl13 merged 23 commits into
mainfrom
claude/x402-agents-solana-payments-nceg9b

Conversation

@Fizzl13

@Fizzl13 Fizzl13 commented Oct 8, 2026

Copy link
Copy Markdown
Owner

PlainText gets the Algorand option the other three services have had since 7 Oct.

  • With ALGORAND_PAY_TO (an Algorand account with the USDC opt-in), /api/check-wallet and /api/explain also accept the same dollar price in USDC (ASA 31566704) on Algorand mainnet.
  • Settled by GoPlausible's public facilitator (ALGORAND_FACILITATOR_URL overrides), which pays the Algorand fee; it is placed before the URL facilitator and offers only Algorand, so PayAI never claims it.
  • Off without the variable, with off, or on testnet. Usage log names the network "algorand" and counts it in dollars.
  • Test: starts server.js against stand-in facilitators and reads the real 402 ($0.04 → 40000 units of ASA 31566704 with the Algorand facilitator's fee payer; none without the variable). Suite 30/30.

After merging: set ALGORAND_PAY_TO in Render (service SmartContractExplainer) to the same Pera address as the other services.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48


Generated by Claude Code

claude added 23 commits October 4, 2026 16:57
mpp-pay from x402-doctor (#139): the agent sends USDC.e on Tempo with the MPP
memo and answers with the transaction hash, checked on a Tempo RPC; the 402
then carries an evm and a tempo challenge and /openapi.json lists both offers.
Off until MPP_TEMPO_RECIPIENT is set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
A 402 with a payment that was refused now logs network (from the x402
payment header, or the MPP credential's method: evm = base, tempo = Tempo),
so the usage log can show which network traffic comes from.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
On mainnet the paid routes also accept the same dollar price in RLUSD on
the XRP Ledger, to XRPL_PAY_TO (default Frits's account with the RLUSD
trust line; XRPL_PAY_TO=off turns it off), verified and submitted by an
in-process facilitator from @x402/xrpl, as in the other Fizzl services.
The usage log counts RLUSD in dollars.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
Agents built on t54's x402-xrpl / Xrpl.X402 SDK (most of the XRPL AI Hub)
sign with the x402 SourceTag 804681468, bind the invoice in Memos and send
{ signedTxBlob, invoiceId }. @x402/xrpl refuses Memos, so those payments now
go to t54's hosted facilitator, which verified and settled such a payment
on testnet; standard @x402/xrpl payments stay in-process (also re-tested on
testnet with the SourceTag in the requirements). Every XRPL accept now
carries extra.sourceTag. XRPL_T54_URL=off keeps everything local.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
Google crawled the homepage but has not indexed it yet; these give it
a clear signal which URL to index.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
A refused MPP credential is logged as payment_failed with protocol mpp;
it now also carries reason (the problem detail sent back, max 160
characters), so a client that can't pay us shows what went wrong.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
With ALGORAND_PAY_TO set (an Algorand account with the USDC opt-in), both
paid routes also offer the same dollar price in USDC (ASA 31566704) on
Algorand mainnet, settled by GoPlausible's public facilitator, which pays
the Algorand fee. It sits before the URL facilitator and offers only
Algorand, so PayAI never claims it. Off without the variable or with "off".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TsD5haPKxeWjYmErHzvU48
@Fizzl13
Fizzl13 merged commit 4df670f into main Oct 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants