A native Pi payment carries no observable per-unit mining origin on the Pi Mainnet ledger.
All quotes are transcribed verbatim from Pi Network / Pi Apps official documentation.
Every source below was retrieved and cross-checked on 2026-10-18. Links rot and pages change silently, so wherever the source is a Git repository the commit that last touched the cited file is recorded. Where the source is a living website or a PDF, the best available pin is given instead.
| Source | Pin | Revision date |
|---|---|---|
pi-apps/pi-platform-docs — platform_API.md (full PaymentDTO) |
commit cb704b9 |
2024-08-28 |
pi-apps/pi-sdk-integration-guide — README.md (A2U flow) |
commit 9b263cd |
2023-01-27 |
pi-apps/pi-sdk-js — package.json (createPayment) |
commit a6a5055 · published @pinetwork/pi-sdk-js@2.0.0 |
2026-03-19 |
PiNetwork/PiRC — PiRC1/ReadMe.md (ecosystem tokens) |
commit c50d516 |
2026-02-20 |
PiNetwork/PiRC — PiRC2/ReadMe.md (subscription contract) |
commit dc86dfd |
2026-04-17 |
PiNetwork/SmartContracts — README.md (reference implementation) |
commit d5b3915 |
2026-04-17 |
stellar/stellar-protocol — core/cap-0027.md (muxed M… accounts) |
commit b378cf3 |
2020-07-14 |
| MiCA Whitepaper — Pi Network (PDF) | SHA-256 9c0dd64e622433cdaed077216e917fe87a34e3733b08a0c6886eba844d8ae61e (632 317 bytes) |
published 2025-11-27 |
docs.minepi.com (Wallet / Payments / Tokens) |
living site — no revision available | retrieved 2026-10-18 |
pi-apps.github.io/community-developer-guide |
living site — no revision available | retrieved 2026-10-18 |
Verify the PDF pin yourself:
curl -sL https://minepi.com/wp-content/uploads/2025/11/MiCA-Whitepaper-Pi-1.pdf -o mica.pdf
sha256sum mica.pdf # macOS/Linux
certutil -hashfile mica.pdf SHA256 # Windows
# expected: 9c0dd64e622433cdaed077216e917fe87a34e3733b08a0c6886eba844d8ae61e
Verify a repository pin yourself:
git clone --filter=blob:none https://github.com/pi-apps/pi-platform-docs
git -C pi-platform-docs log -1 --format='%h %cs' -- platform_API.md # -> cb704b9 2024-08-28
Why this matters: a claim is only as good as the revision it was read from. If an upstream file changes, this table records exactly which version the conclusions in this repository rest on.
window.Pi.Wallet)Quotes:
“The Pi Network JS SDK exposes wallet-related operations and blockchain interactions via the
window.Pi.Walletmodule.” “Transactions must be pre-signed; the SDK does not build or sign transactions for you. See Stellar docs on creating XDR.” “Pi SDK authentication and payment features require the application to run inside the Pi Browser (or the Sandbox).”
createPayment interface:
window.Pi.createPayment(
{ amount: 1, memo: 'Unlock Premium', metadata: { feature: 'premium' } },
{ onReadyForServerApproval, onReadyForServerCompletion, onCancel, onError }
);
“Deliver purchased features only after the backend receives a successful
/completeresponse from Pi.”
Quote:
“The Pi blockchain is obviously the only source of truth for exchanging Pi.”
const StellarSDK = require("@stellar/stellar-sdk");
const server = new StellarSDK.Horizon.Server("https://api.testnet.minepi.com");
const NETWORK_PASSPHRASE = "Pi Testnet";
updatedDistributorAccount.balances.forEach((balance) => {
if (balance.asset_type === "native") {
console.log(`Test-Pi Balance: ${balance.balance}`);
} else {
console.log(`${balance.asset_code} Balance: ${balance.balance}`);
}
});
Note: tokens require a
trustline+issuer, while the native asset has neither.
PaymentDTO definitionhttps://api.minepi.com/v2{
identifier: string,
user_uid: string,
amount: number,
memo: string,
metadata: Object,
from_address: string,
to_address: string,
direction: Direction,
created_at: string,
network: AppNetwork,
status: {
developer_approved: boolean,
transaction_verified: boolean,
developer_completed: boolean,
cancelled: boolean,
user_cancelled: boolean,
},
transaction: null | { txid: string, verified: boolean, _link: string },
}
No field for “coin origin / mining / exchange”.
Quote:
“
createPayment(paymentData)– Begins a payment operation.”interface PaymentData { amount: number; memo: string; metadata: Record<string, unknown>; }
https://api.mainnet.minepi.comhttps://api.testnet.minepi.comM...) — CAP-27“Muxed accounts do not exist on the ledger, but their shared underlying
GABC…account does.” “There’s no validation on IDs and as far as the Stellar network is concerned, all supported operations operate exactly as if you did not use a muxed account.”
“Your PI deposit address will appear (usually starting with “M”).”
examples/coin-id-check.mjs.F.2: “Pi is the native, fungible digital asset of the Pi Network Layer 1 blockchain.” F.14: “Functionally Fungible Group Digital Token Identifier: 2Z2WZP5KM” G.3: “The Pi token and its’ on chain functionalities are immutable. No modifications to transactions or the current blockchain ledger history can be made by anyone, including the issuer.” G.11 (Transfer Restrictions): “Not applicable” G.4: “Pi tokens are only available through mining. Individuals… that have mined tokens may elect to sell tokens on the secondary market…” E.2: “The issuer is seeking admission to secondary trading only, through which the issuer will not gain any direct proceeds.”
“…the launch of the Enclosed Network period, which meant Mainnet was live but with a firewall that prevents any external connectivity.”
“With Open Network, the firewall that was in place during Enclosed Network has been removed.” “…support for integrations with centralized exchanges (CEXs) and onramps to provide additional means of acquiring Pi…”
bal(S) -= a ; bal(D) += a — there is no price field.docs/FAQ-CAN-CORE-TEAM-SET-PRICE.md.“The Pi blockchain is obviously the source of truth for exchanging Pi. The Pi backend is used to improve the end-user experience (e.g. provide users understandable memos on their wallet, and link backs to your app, while preserving user and developer privacy by not making this information public on the chain) and to assist developers in avoiding to make payment mistakes (e.g. double payments due to server faults)” “Your Pi SDK implementation needs to both be able to sign and submit blockchain transactions using the Stellar SDK and send additional API calls to the Pi backend using standard https libraries.” Build-the-transaction step (verbatim), showing the payment is the native asset plus an app-written memo:
let payment = StellarSdk.Operation.payment({ destination: recipientAddress, asset: StellarSdk.Asset.native(), // native asset — no issuer amount: body.amount.toString() }); // ... .addMemo(StellarSdk.Memo.text(paymentIdentifier)); // memo = app's own payment id
examples/app-payment-flow/server.js (prints the PaymentDTO keys).“Payments are wrappers around blockchain transactions, which enable your app, the Pi Blockchain, and the Pi Servers to be all synchronized when the user submits a blockchain transaction to pay for something in your app.” Three phases, all keyed on the payment id + txid (never a coin origin): “Payment creation and Server-Side Approval”, “User interaction and blockchain transaction”, “Server-Side Completion”.
paymentId/toAddress) may
not match the real API. Cite the official repos above.docs/FAQ-SDK-PLATFORM-API-FIELDS.md (the full SDK/API field enumeration).PiNetwork)“Pi Requests for Comment” — official design RFCs, reviewed publicly via GitHub Issues / Discussions / Pull Requests, published by the
PiNetworkorganization (Public). Contents:PiRC1— Pi Ecosystem Token Design ·PiRC2— Subscription Contract API.
“Pi Launchpad introduces a fair, transparent, community-first and enagement-oriented token launch framework built natively on the Pi ecosystem.” “Unlike traditional launchpads, Pi Launchpad never transfers the proceeds of a token launch sale to the project team — instead, all Pi sold becomes liquidity, supporting long-term market depth and trust.” “On-chain transparency of the launch process ensured by immutable smart contracts.” Token flow (§2.2): “…the pool remains fully accessible to users for Pi ↔ token swaps or new liquidity deposits.” Participation (§3): users stake Pi to receive PiPower; the baseline rule references an account with “an active Pi lockup of ≥90% of their mined tokens for at least 3 years”. → Here Pi is the staked / liquidity asset and the launched units are separate tokens (new assets). No per-unit origin field appears anywhere.
“This document specifies the Subscription Contract API — a Soroban smart contract that manages recurring payment subscriptions on the Pi Network.” “…enabled by Soroban’s token allowance mechanism: a subscriber can
approvea contract as a spender for a given amount (optionally with anexpiration_ledger), and the contract can later draw down that allowance over time (e.g. viatransfer_from) without transferring or locking the full budget upfront.”
“A Soroban smart contract for recurring paid subscriptions on the Pi Network… subscribers pay using standard Stellar asset tokens via allowance-based recurring charges.” Verified in the source code:
soroban-sdk = "22.0.0" → Stellar protocol 22 (Soroban) semantics.soroban_sdk::token::TokenClient: approve, transfer, transfer_from, allowance, balance
— all on scalar i128 amounts per (account, token). No per-unit origin in the token interface.Service, Subscription): ids, addresses, an i128 price, timestamps — no origin field.charge = (subscriber, service_id, price) — a scalar amount.“Pi Network is launching its first smart contract capability on Pi Testnet: subscription support!” “It also gives the ecosystem a way to evaluate the contract before rollout to the Mainnet.” “The smart contract itself is also being reviewed by external auditing services.” → This is the first capability, on Testnet; Mainnet rollout was still pending at publication.
balance(), allowance(), transfer(), transfer_from(), approve() — no per-unit origin.docs/FAQ-ALL-OBJECTIONS.md Group C).docs/FAQ-SMART-CONTRACTS-AND-TOKENS.md (the full treatment).