ZKIRA Pay

Use Cases

Real-world applications for private payments on Solana

ENTERPRISE

Private Payroll

Companies can pay employees without revealing individual salaries on-chain. Each payment goes to a unique stealth address, so even if someone monitors the company's wallet, they cannot link payments to specific employees or determine compensation amounts. This protects employee privacy while maintaining full compliance with labor laws and accounting requirements. Supports batch processing for multiple employees in a single transaction, reducing gas costs and administrative overhead. Perfect for startups, remote teams, and any organization prioritizing financial privacy.

How it works

01

Company registers meta-addresses for each employee during onboarding

02

HR initiates batch payment with individual amounts for each employee

03

Each payment creates a unique stealth escrow with recipient-specific keys

04

Employees scan and claim using their view keys from wallet or mobile app

05

No on-chain link between payments and recipients preserves complete privacy

Batch Payroll Paymenttypescript
import { ZkiraClient } from '@zkira/sdk';
import { Connection, PublicKey } from '@solana/web3.js';

// Initialize client
const client = new ZkiraClient(connection);

// Create batch payroll payment
const employees = [
  { metaAddress: 'meta1...', amount: 5000_000000 }, // $5,000 USDC
  { metaAddress: 'meta2...', amount: 7500_000000 }, // $7,500 USDC
  { metaAddress: 'meta3...', amount: 4200_000000 }, // $4,200 USDC
];

const batchPayment = await client.createBatchPayment({
  payments: employees.map(emp => ({
    recipient: emp.metaAddress,
    amount: emp.amount,
    token: 'USDC',
  })),
  payer: companyWallet.publicKey,
});

console.log('Payroll distributed:', batchPayment.signature);
SOCIAL IMPACT

Anonymous Donations

Non-profits and charities can accept donations without creating a permanent on-chain link between donors and the organization. Donors get cryptographic proof of their contribution without public exposure, protecting them from unwanted solicitation or political targeting. Especially valuable in politically sensitive contexts, whistleblower support, or when donor privacy is legally required. Organizations can still track total donations for transparency reports while preserving individual donor anonymity. Supports recurring donations and automatic tax receipt generation.

How it works

01

Organization publishes their meta-address on website and donation pages

02

Donor creates stealth payment to the meta-address with chosen amount

03

Organization scans for incoming payments using their view key

04

Donor receives claim receipt and proof for tax deduction purposes

05

No public ledger link between donor and organization preserves anonymity

Anonymous Donationtypescript
import { ZkiraClient } from '@zkira/sdk';

const client = new ZkiraClient(connection);

// Create anonymous donation
const donation = await client.createPayment({
  recipient: 'charity_meta_address_here',
  amount: 100_000000, // $100 USDC
  token: 'USDC',
  memo: 'Supporting clean water initiative', // Optional private memo
});

// Generate proof for donor records
const proof = await client.generateDonationProof({
  payment: donation,
  recipientName: 'Clean Water Foundation',
  taxId: '12-3456789',
});

console.log('Anonymous donation sent:', donation.signature);
console.log('Tax receipt proof:', proof.receiptHash);
FREELANCE

Escrow Services

Milestone-based escrow for freelance and contract work eliminates payment disputes and builds trust between clients and contractors. Clients lock funds that release incrementally as contractors complete agreed milestones, providing security for both parties. The contractor knows funds exist and are guaranteed upon completion, while the client knows they only release for verified work delivery. Built directly on Solana for instant settlement without traditional escrow fees. Supports complex milestone structures, dispute resolution, and partial releases. Perfect for development projects, design work, consulting, and any service-based contracts.

How it works

01

Client creates milestone escrow with defined deliverables and payment amounts

02

Contractor completes first milestone and submits deliverables

03

Client reviews work and approves milestone release through the platform

04

Funds for that milestone automatically transfer to contractor's stealth address

05

Process repeats for each milestone until project completion

Milestone Escrow Creationtypescript
import { ZkiraClient } from '@zkira/sdk';

const client = new ZkiraClient(connection);

// Create milestone-based escrow
const escrow = await client.createMilestoneEscrow({
  client: clientWallet.publicKey,
  contractor: 'contractor_meta_address',
  milestones: [
    { description: 'UI/UX Design', amount: 2000_000000 }, // $2,000 USDC
    { description: 'Frontend Development', amount: 3500_000000 }, // $3,500 USDC
    { description: 'Backend Integration', amount: 2500_000000 }, // $2,500 USDC
    { description: 'Testing & Deployment', amount: 2000_000000 }, // $2,000 USDC
  ],
  token: 'USDC',
  deadline: new Date('2024-06-30'),
});

// Approve milestone completion
await client.approveMilestone({
  escrow: escrow.address,
  milestoneIndex: 0,
  approver: clientWallet,
});

console.log('Milestone escrow created:', escrow.address);
DAO / TEAM

Multi-sig Treasury

Shared treasury management requiring multiple approvals before any payment executes. Teams, DAOs, and partnerships can set M-of-N approval thresholds — for example, requiring 3-of-5 team members to approve any payment over $1,000. Combined with stealth addresses, even approved payments remain private from external observers. Supports complex approval workflows, spending limits, and time-locked releases. Perfect for startup teams managing runway, DAO treasuries distributing grants, investment partnerships, or any shared financial responsibility requiring transparency among stakeholders while maintaining external privacy.

How it works

01

Create multi-sig escrow with authorized signers and approval threshold

02

Any authorized signer proposes a payment with justification

03

Required number of signers review and approve the proposed payment

04

Once approval threshold is met, payment executes automatically

05

All approvals recorded on-chain for internal auditability

Multi-sig Treasury Setuptypescript
import { ZkiraClient } from '@zkira/sdk';

const client = new ZkiraClient(connection);

// Create multi-sig escrow
const multisig = await client.createMultisigEscrow({
  signers: [
    founderWallet.publicKey,
    ctoWallet.publicKey, 
    cfoWallet.publicKey,
    advisorWallet.publicKey,
    investorWallet.publicKey,
  ],
  threshold: 3, // Require 3 out of 5 signatures
  spendingLimits: [
    { amount: 10000_000000, timeframe: '30days' }, // $10k/month limit
    { amount: 50000_000000, timeframe: 'quarter' }, // $50k/quarter limit
  ],
});

// Propose payment
const proposal = await client.proposePayment({
  multisig: multisig.address,
  recipient: 'contractor_meta_address',
  amount: 15000_000000, // $15,000 USDC
  justification: 'Q1 development contractor payment',
  proposer: founderWallet,
});

// Approve payment
await client.approvePayment({
  proposal: proposal.id,
  signer: ctoWallet,
});
COMMERCE

E-commerce Integration

Online stores can accept private payments using the ZKIRA widget with minimal integration effort. Drop a single script tag into your HTML or use the React hook for programmatic integration. Customers pay with any supported SPL token, and the merchant receives funds without exposing transaction details to competitors or market analysts. Supports subscription payments, partial payments, refunds, and complex checkout flows. Widget handles wallet connection, network switching, and transaction signing automatically. Perfect for SaaS products, digital goods, physical products, and any online business accepting crypto payments.

How it works

01

Install widget script tag or React component in your checkout flow

02

Configure payment amount, accepted tokens, and completion callback

03

Customer clicks pay button and widget handles wallet connection

04

Payment processes through stealth escrow for privacy

05

Merchant receives webhook confirmation and can fulfill order

HTML Widget Integrationhtml
<!-- HTML Embed -->
<script src="https://cdn.zkira.xyz/widget.js"></script>
<zkira-pay 
  amount="49.99" 
  token="USDC"
  description="Premium Subscription - Monthly"
  merchant-address="merchant_meta_address_here"
  callback="https://mystore.com/webhooks/payment"
></zkira-pay>
React Hook Integrationtypescript
import { useZkiraPay } from '@zkira/widget';

function CheckoutButton({ amount, description }: { 
  amount: number; 
  description: string; 
}) {
  const { createPayment, status, error } = useZkiraPay({
    apiUrl: 'https://api.zkira.xyz',
    apiKey: process.env.NEXT_PUBLIC_ZKIRA_KEY,
    merchantAddress: process.env.NEXT_PUBLIC_MERCHANT_META_ADDRESS,
  });

  const handlePayment = async () => {
    const payment = await createPayment({ 
      amount, 
      token: 'USDC',
      description,
      successUrl: '/success',
      cancelUrl: '/checkout',
    });
    
    if (payment.success) {
      // Redirect to success page
      window.location.href = '/order-confirmation';
    }
  };

  return (
    <button 
      onClick={handlePayment}
      disabled={status === 'pending'}
      className="bg-[#FF2828] text-white px-6 py-3 rounded-none font-semibold"
    >
      {status === 'pending' ? 'Processing...' : `Pay $${amount}`}
    </button>
  );
}