Client Libraries

SDKs & Libraries

First-party, fully typed client libraries maintained by the IPPAN team. Every SDK includes automatic retries, idempotency key management, webhook signature verification, and comprehensive error types.

TypeScript

@ippan/pay-sdk
Install
npm install @ippan/pay-sdk
quickstart.ts
import { IppanPay } from "@ippan/pay-sdk";

const client = new IppanPay({
  apiKey: process.env.IPPAN_API_KEY!,
  environment: "sandbox",
});

// Create a payment
const payment = await client.payments.create({
  amount: 50000,
  currency: "USDC",
  merchant_id: "mer_9x8kLm2nQp",
  metadata: { order_id: "ord_abc123" },
});

// Verify a webhook
const event = client.webhooks.constructEvent(
  rawBody,
  headers["x-ippan-signature"],
  process.env.IPPAN_WEBHOOK_SECRET!
);

Python

ippan-pay
Install
pip install ippan-pay
quickstart.py
import os
from ippan_pay import IppanPay

client = IppanPay(
    api_key=os.environ["IPPAN_API_KEY"],
    environment="sandbox",
)

# Create a payment
payment = client.payments.create(
    amount=50000,
    currency="USDC",
    merchant_id="mer_9x8kLm2nQp",
    metadata={"order_id": "ord_abc123"},
)

print(payment.id)        # "pay_7f3dKz1mNv"
print(payment.proof_url) # deterministic proof URI

# Verify a webhook
event = client.webhooks.construct_event(
    payload=raw_body,
    signature=headers["x-ippan-signature"],
    secret=os.environ["IPPAN_WEBHOOK_SECRET"],
)

Go

ippan-pay-go
Install
go get github.com/ippan-network/ippan-pay-go
main.go
package main

import (
    "fmt"
    "os"

    ippan "github.com/ippan-network/ippan-pay-go"
)

func main() {
    client := ippan.NewClient(os.Getenv("IPPAN_API_KEY"),
        ippan.WithEnvironment(ippan.Sandbox),
    )

    payment, err := client.Payments.Create(&ippan.PaymentParams{
        Amount:     50000,
        Currency:   "USDC",
        MerchantID: "mer_9x8kLm2nQp",
        Metadata:   map[string]string{"order_id": "ord_abc123"},
    })
    if err != nil {
        panic(err)
    }

    fmt.Println(payment.ID)       // "pay_7f3dKz1mNv"
    fmt.Println(payment.ProofURL) // deterministic proof URI
}

Rust

ippan-pay-rs
Install
# Cargo.toml
[dependencies]
ippan-pay = "0.4"
tokio = { version = "1", features = ["full"] }
main.rs
use ippan_pay::{Client, Environment, PaymentParams};

#[tokio::main]
async fn main() -> Result<(), ippan_pay::Error> {
    let client = Client::builder()
        .api_key(std::env::var("IPPAN_API_KEY")?)
        .environment(Environment::Sandbox)
        .build()?;

    let payment = client
        .payments()
        .create(PaymentParams {
            amount: 50000,
            currency: "USDC".into(),
            merchant_id: "mer_9x8kLm2nQp".into(),
            metadata: Some(serde_json::json!({
                "order_id": "ord_abc123"
            })),
            ..Default::default()
        })
        .await?;

    println!("Payment ID: {}", payment.id);
    println!("Proof URL: {}", payment.proof_url);
    Ok(())
}