Pay with ZEC in your app
Resolve an @username, check a Zcash address, and get a ZIP 321 payment request, a ZecPort link and a QR code. No account, no API key, no custody, no payment status.
Endpoints
GET https://zecport.xyz/api/v1/resolve/{username}
POST https://zecport.xyz/api/v1/addresses/validate {"address": "u1…"}
POST https://zecport.xyz/api/v1/payment-requests {"to": "@alice", "amount": "1.5", "note": "Coffee"}Amounts are ZEC as decimal strings. Errors are {"error": code, "message": sentence}. Any origin may call; requests are rate-limited per client address.
TypeScript SDK
import { ZecPort } from '@zechub/sdk';
const zecport = new ZecPort({ baseUrl: 'https://zecport.xyz' });
const request = await zecport.request({ to: '@alice', amount: '1.5' });
// request.uri → Open in wallet · request.qrPayload → QR code · request.link → pageThe SDK builds requests on your side, so the amount never leaves your app; only the username is looked up.
What it is not
ZecPort does not watch wallets and cannot tell you whether a payment arrived. The recipient sees it in their own wallet.