Your keys. Your signatures.
Self-custody execution is the default for every Environment -- Ishtaran never holds your private keys.
- Wallets are generated and transactions are signed in your own environment, through an official SDK -- the private key never leaves your process.
- Ishtaran only ever receives a public key. It verifies each signature against a hash it computed independently, relays the transaction, and monitors and reconciles execution end to end.
- A tampered amount or destination produces a different hash and is rejected before any signature is even checked.
Real code, not pseudocode
The official Node.js/TypeScript SDK, published on npm, talking to the real public Sandbox -- the same call is available in Java, Python, and Go.
import { IshtaranClient, Environment } from '@ishtaran/sdk';
const client = IshtaranClient.create({
apiKey: process.env.ISHTARAN_API_KEY,
environment: Environment.Sandbox, // real public Sandbox, no baseUrl needed
});
const transaction = await client.transactions.create(
organizationId, applicationId, null, assetNetworkId, '100',
[
{ accountId: payerAccountId, role: 'payer', isPayer: true },
{ accountId: recipientAccountId, role: 'recipient', isPayer: false },
],
);
console.log(transaction.status);{
"transactionId": "5b1f...e2a0",
"status": "Created"
}
// After a real Deposit (or an existing Available balance) covers the amount: status -> "Funded"See the full example →Or use an official SDK (Java, Node.js, Python, Go) →Or the raw HTTP contract →
What it solves
Marketplace with a split
Automatically split a payment between seller, platform, and partner.
Programmable escrow
Hold an amount until a business condition is met, via Workflow.
Receive stablecoin
Virtual accounts receive USDT/USDC without you operating your own wallet.
Conditional settlement
Release the amount only when the right event happens -- recorded in the Ledger.
Programmable financial accounts
Create virtual accounts for your application's participants, receive deposits, and reserve amounts -- without operating your own wallet or dealing directly with multiple assets and networks.
Conditional release workflows
Define, via API, the rules that hold or release an amount until a business condition is met -- every state transition is recorded and auditable.
Auditable Ledger and settlements
Every balance movement is a ledger entry -- settlements with a split between parties, refunds, and the platform fee all follow the same reliable record.
How it works
Account
Create virtual financial accounts for your application's participants -- without operating your own wallet.
Workflow
Define, via API, the business conditions that release or hold an amount -- every transition is recorded.
Settlement
Settle the transaction with a split between parties and a configurable platform fee, all posted to the same Ledger.