For Payments

Payments, settled by the chain itself.

A Stripe-shaped REST API, settled on AsentumChain in five seconds. Charges, customers, checkout sessions, webhooks. Drop the SDK into any Node app and start billing — settlement happens on the chain underneath.

One-shot charges

Charge an address. Get a webhook.

// One-shot charge — Stripe-shaped, settled on-chain.
import { Asentum } from '@asentum/pay';

const pay = new Asentum(process.env.ASE_SECRET);

const charge = await pay.charges.create({
  amount:      10_00,             // 10 ASE, minor units
  currency:    'ase',
  customer:    'cus_8XQ2…',
  description: 'Monthly plan',
});

// → charge.id      = 'ch_2Lp9…'
// → charge.status  = 'pending'
// → settles in < 5 seconds. webhook fires.

Idempotent. Replayable. Auditable from the explorer — every charge is just a transaction with metadata.

Recurring on-chain

Customer signs once. Cron does the rest.

// Recurring — the chain itself fires the next charge.
const session = await pay.checkout.sessions.create({
  mode:        'subscription',
  customer:    'cus_8XQ2…',
  price:       'price_premium_monthly',  // 10 ASE / month
  success_url: 'https://yoursite.com/welcome',
});

// Redirect customer → they sign once → done.
// ARC-21 cron handles every subsequent charge.

No keeper bot. No retry queue. ARC-21 native cron fires the recurring charge from inside consensus.

01SDK

Drop in the SDK. Migrate from Stripe in an afternoon.

Same resource model: charges, customers, checkout sessions, webhooks. Same idempotency keys. Same HMAC-signed payloads. The only thing that changes is the underlying settlement.

02CHAIN

Settlement in five seconds. Globally.

AsentumChain finalises every block in under five seconds. No multi-day international wires. No FX spread. The tx mines or it reverts — there is no "maybe" state to reconcile.

03CRON

Recurring without a keeper. Fired by consensus.

ARC-21 cron walks due subscriptions every block from inside the protocol. No Chainlink Automation. No Gelato. No retry queue to maintain. The recurring charge fires itself.

Why on-chain

The Stripe stack, without the Stripe stack.

Card-on-file billing has a 5–15% failure rate per cycle. International settlement takes 3–5 days. Chargebacks unwind months after the sale. Asentum Pay replaces all of it with deterministic on-chain settlement.

Card rails

  • 5–15% recurring failure rate per cycle
  • 3–5 day international settlement
  • Chargebacks unwind months after the sale
  • 2.9% + 30¢ + FX spread, processor lock-in
  • Account freezes, MCC bans, manual review

Asentum Pay

  • +Tx mines or reverts — no "maybe" state
  • +~5 second global settlement, deterministic
  • +No reversal once on-chain — final at finality
  • +Tx fees in millicents, no FX, no MCC
  • +Self-custodied — your account, your keys
REST API

One API. Four resources.

All endpoints live under https://pay.asentum.com/api/v1 and require a Bearer key. Versioned, idempotency-key-safe, JSON in & out.

POST/v1/charges

Create a one-shot charge. Returns immediately with status=pending; settles on-chain in seconds.

GET/v1/charges/:id

Fetch a charge by id, with current settlement status & on-chain tx hash.

POST/v1/customers

Create a customer record. Attach metadata, default address, billing email.

GET/v1/customers/:id

Retrieve a customer. Listable via the index endpoint; filter by metadata.

POST/v1/checkout/sessions

Mint a hosted-checkout session. Returns a redirect URL; webhook fires on completion.

GET/v1/checkout/sessions/:id

Poll the session state. Or just listen for the checkout.session.completed webhook.

POST/v1/webhooks/endpoints

Register a webhook URL. Get back the signing secret for HMAC verification.

DELETE/v1/webhooks/endpoints/:id

Disable a webhook endpoint. In-flight retries drain naturally.

Live on testnet

Start billing in ten minutes.

Spin up an API key, drop the SDK into your app, take your first charge on testnet. Mainnet ships when the testnet has done its homework.