On this page

Payment Links

Get paid from an external wallet or send a claim link to an unregistered recipient.

Choose a link type#

A receiving link helps a payer create a destination for their transfer. A Portal checkout collects that transfer into a private account. A claim link instead contains a secret for a controlled note that a named wallet can claim.

Check the network and contract route encoded in the link before asking for funds. Its label or display name cannot tell you whether the destination has the setup required to collect a payment.

How a private payment reaches its recipient
How a private payment reaches its recipient

Open a wallet checkout#

A Portal link includes its chain, Pool, Portal, invoice domain and setup signer. Before making a wallet request, the browser checks the deployed Portal against its original setup and current invoice, including the token and allowed amount range.

Wallet requests use ERC-681 token-transfer syntax. An optional amount is an integer in atomic token units. Opening that URI asks the wallet to review a transfer; the payer must still approve it.

javascript
const { utils } = require("ethers");
const token = utils.getAddress(tokenAddress);
const portal = utils.getAddress(verifiedPortalAddress);
const amountAtomic = utils.parseUnits("12.50", tokenDecimals).toString();
const uri = `ethereum:${token}@${verifiedChainId}/transfer?address=${portal}&uint256=${amountAtomic}`;
// Only display after authenticating the Portal, invoice and asset.
console.log(uri);

Claim or refund a payment#

A claim note commits to a controller descriptor. Before its deadline, the named recipient wallet can authorize the spend with an ECDSA or ERC-1271 signature the controller accepts. From the deadline, the sender's one-time refund signer can authorize its refund.

Keep the claim secret out of analytics, support logs and screenshots. Read the note's balance from authenticated Pool history when reviewing a payout; an amount written in the link is only a hint.

Finish an interrupted payment#

For a Portal, distinguish the transfer arriving at the address, its credit reaching the Pool and the account recovering its note. Anyone with the published invoice data can complete that credit. The sponsored keeper normally does it for the user.

For a claim paid to a public wallet, save the approved gross balance, payout, fee and recipient together with the proof and signature in encrypted recovery storage. If submission times out, check the claim window and resume that saved authorization.