Skip to main content

Programmable crypto payment infrastructure -- self-custody by default.

Integrate Accounts, conditional transaction flows, split/settlement, and stablecoin payments via API. Your private keys never reach Ishtaran -- wallets are generated and transactions are signed in your own environment.

Sandbox. No real funds.

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.

@ishtaran/sdk
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);
response
{
  "transactionId": "5b1f...e2a0",
  "status": "Created"
}

// After a real Deposit (or an existing Available balance) covers the amount: status -> "Funded"

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

1

Account

Create virtual financial accounts for your application's participants -- without operating your own wallet.

2

Workflow

Define, via API, the business conditions that release or hold an amount -- every transition is recorded.

3

Settlement

Settle the transaction with a split between parties and a configurable platform fee, all posted to the same Ledger.

Official SDKs: Java, Node.js, Python, GoSelf-custody by defaultOpen API ReferenceExtensive documentation

How we think about security →

Ready to integrate?

Try the Sandbox