ZecPort

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 → page

The 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.