Pi Browser Required
Pi Payroll currently works only inside the official Pi Browser.
Please open this application using the Pi Browser.
Please open this application using the Pi Browser.
Sent this cycle
π 0
No payments yet
Active recipients
0
No recipients yet
Total transactions
0
All time
Scheduled payments
0
No schedules set
Recent transactions
No transactions yet
Payments you send will appear here
Breakdown by category
No data yet
Categories will appear after your first payment
New payment
Payment queue
0 in queue
| Recipient | Username | Amount | Memo | Category | Status |
|---|
Drag a CSV here or click to select
Expected columns: name, pi_username, amount, memo, category
Expected format
nameJohn Smith
pi_username@john_smith
amount350.00
memoJuly 2025 salary
categorySalary
New recurring payment
Active schedules
No recurring payments
Create a schedule above to automate payroll
No transactions yet
Sent payments will appear here with their on-chain hashes
Total sent (all time)
π 0
Top recipient
—
No data yet
Success rate
—
No transactions yet
Unique recipients
0
Across all payments
Generated reports
No reports yet
Reports are generated automatically after each payment cycle
Pi Network SDK Integration
1. Add the SDK to your HTML
<script src="https://sdk.minepi.com/pi-sdk.js"></script>
2. Initialize and authenticate
Pi.init({ version: "2.0", sandbox: false });
const auth = await Pi.authenticate(
['payments', 'username'],
onIncompletePaymentFound
);
// auth.user.username, auth.accessToken
const auth = await Pi.authenticate(
['payments', 'username'],
onIncompletePaymentFound
);
// auth.user.username, auth.accessToken
3. Create a payment
const payment = await Pi.createPayment({
amount: 350,
memo: "July 2025 salary",
metadata: { recipient: "@john_smith" }
}, {
onReadyForServerApproval: async (paymentId) => {
// approve on your backend
await fetch('/api/approve', { ... });
},
onReadyForServerCompletion: async (paymentId, txid) => {
// complete and store txid on-chain
await fetch('/api/complete', { ... });
},
onCancel: (paymentId) => console.log('cancelled'),
onError: (err) => console.error(err)
});
amount: 350,
memo: "July 2025 salary",
metadata: { recipient: "@john_smith" }
}, {
onReadyForServerApproval: async (paymentId) => {
// approve on your backend
await fetch('/api/approve', { ... });
},
onReadyForServerCompletion: async (paymentId, txid) => {
// complete and store txid on-chain
await fetch('/api/complete', { ... });
},
onCancel: (paymentId) => console.log('cancelled'),
onError: (err) => console.error(err)
});
4. Handle incomplete payments on load
function onIncompletePaymentFound(payment) {
// called if a previous payment was not completed
console.log('Incomplete payment:', payment.identifier);
// complete or cancel it via your backend
}
// called if a previous payment was not completed
console.log('Incomplete payment:', payment.identifier);
// complete or cancel it via your backend
}
Pi Browser Required
Pi Payroll currently works only inside the official Pi Browser.
Please open this application using the Pi Browser.
Please open this application using the Pi Browser.
Connected Wallet
—
Not connected
UID
—
User identifier
Network
Pi Mainnet
SDK not initialized
Payroll Statistics
π 0
No transactions
Total Pi Sent
π 0
0 scheduled payments
Transactions
0
No transactions yet
Pi SDK Status
Balance information currently unavailable via Pi SDK.
Connect your Pi Wallet to view your account details.