Skip to content

Developers

Your catalog in your code. Itaja gets you paid.

An SDK for Node, Python or Laravel, one command to push what you sell, one route to receive signed webhooks. The full reference opens to beta merchants.

  • Node.js
  • Python
  • Laravel
src/cart.ts
import { itaja } from "@/itaja.config"; const { checkoutUrl } =  await itaja.checkout.create({    homeUrl: "https://shop.example/cart",    currency: "XOF",    lineItems: [      { name: "Shirt", quantity: 2,        unitPrice: 5000 },    ],  }); return Response.redirect(checkoutUrl);

Up and running in five steps

  1. 01Install the SDK

    npm i @itaja/node# pnpm add @itaja/node# bun add @itaja/node
  2. 02Put your keys in .env

    .env
    # itjs_: sandbox · itjp_: productionITAJA_API_KEY=itjs_…ITAJA_WEBHOOK_SECRET=whsec_…
  3. 03Declare what you sell

    itaja.config.ts
    import { createItaja, plan }  from "@itaja/node"; const pro = plan({  name: "Pro",  group: "My App",  price: {    amount: 5000,    currency: "XOF",    interval: "month",  },}); export const itaja = createItaja({  catalog: [pro],});
  4. 04Push your catalog

    npx itaja push# npx itaja status# npx itaja push --yes  (CI)
  5. 05Mount the webhook route

    app/itaja/webhook/route.ts
    import { itaja } from "@/itaja.config"; export const POST = itaja.handler;

Server only: the SDK holds your secret key. Never in a browser or a mobile app.

A plan, a licence, credits, a checkout.

You declare what you sell in your code. One command sends it to Itaja.

  1. 01A subscription plan5 000 XOF a month.
  2. 02A licenceA key valid for a year, activated on up to three devices.
  3. 03A credit pack100 credits for 1 000 XOF, spent as they are used.
  4. 04A direct checkoutAn e-commerce cart, nothing to declare: two shirts at 5 000 XOF.

Illustrative amounts. The SDK runs on your server: it holds your secret key.

One event, one function.

The route checks the signature, skips a delivery it already handled and answers 500 when your code throws, so Itaja delivers again. Every event arrives typed.

Events

  • checkout.paid
  • invoice.paid
  • invoice.payment_failed
  • subscription.past_due
  • subscription.canceled
itaja.config.ts
export const itaja = createItaja({  catalog: [pro],  on: {    "checkout.paid": ({ data }) =>      fulfil(data.checkoutId),    "subscription.past_due": ({ data }) =>      warnCustomer(data),    "subscription.canceled": ({ data }) =>      downgrade(data),  },});
# Test a handler locally with a signed samplenpx itaja trigger checkout.paid \  --url localhost:3000/itaja/webhook

What’s behind it

  • Quickstart

    Three published packages: @itaja/node (npm), itaja (PyPI) and itaja/itaja-laravel (Composer). You declare your catalogue in your language, push it, and one route receives the webhooks.

    npx itaja push
  • API reference

    Products, customers, payments, subscriptions, credits and license keys behind a single API, described by an OpenAPI specification your coding agent reads directly.

    OpenAPI
  • Webhooks

    Signed events: payment confirmed, credits granted or consumed, license key issued or revoked. The SDK checks the signature and never runs the same delivery twice.

    itaja.handler
  • Coding agents

    Nine public skills (itaja/skills) for the agent you already use: it reads the API and writes the integration for you.

    npx skills add itaja/skills

Itaja is in private beta: the full reference is available to beta merchants. Talk to sales

Integration

One command. Your agent does the rest.

Node, Python and Laravel SDKs, a readable API, and skills ready for the coding agent you already use.

For your coding agent

npx skills add itaja/skills

The SDKs, with your package manager

  • npm install @itaja/node
  • pnpm add @itaja/node
  • bun add @itaja/node
  • yarn add @itaja/node
  • pip install itaja
  • composer require itaja/itaja-laravel

Skills, SDKs and packages

The Node, Python and Laravel SDKs are published; Dart is announced. They hold your secret key: they run on your server, never in a browser or a mobile app. The first command installs the skills in your agent, the next ones add the SDK for your language.