Developer preview · API not yet public

The trust layer,
as an API.

Any promise between two people, formalized, witnessed and tracked. Your platform keeps the flow. PACTI keeps the word.

GET /v1/agreements/agr_7f2b
{
"id": "agr_7f2b",
"template": "pay_later_promise",
"amount": 500.00,
"parties": ["seller", "buyer"],
"status": "created",
"evidence_hash": "sha256:9c1e…"
}
→ webhook agreement.viewed
→ webhook party.verified
→ webhook agreement.executed
→ webhook payment.confirmed
→ webhook agreement.completed
We never touch the money.

No funds flow through PACTI, so no money-transmitter weight lands on your platform. We formalize the promise: an ESIGN and UETA compliant signing ceremony, a hash-sealed evidence trail, a schedule, and two-sided payment confirmation. You keep your rails. We keep the record.

Three calls, end to end

Create it. Hear it. Prove it.

Your platform creates the agreement and reacts to events. The signing ceremony itself always happens on PACTI's hosted surface, so the signature, the timestamp and the sealed record are ours to keep.

POST/v1/agreements

Create the promise. Get back a hosted signing URL to hand the counterparty.

{
  "template": "pay_later_promise",
  "amount": 500.00,
  "purpose": "order #1042",
  "parties": [
    { "role": "seller", "ref": "acct_88" },
    { "role": "buyer",
      "email": "buyer@…" }
  ]
}

→ 201
{ "id": "agr_7f2b",
  "sign_url":
  "https://pacti.app/s/…" }
HOOKagreement.executed

Both parties verified and signed. Your app unlocks the order, the gig, the keys.

{
  "event": "agreement.executed",
  "agreement": "agr_7f2b",
  "executed_at":
    "2026-08-12T16:04:11Z",
  "parties": [
    { "role": "seller",
      "verified": "qr_presence" },
    { "role": "buyer",
      "verified": "otp_email" }
  ],
  "evidence_hash":
    "sha256:9c1e…"
}
GET/v1/agreements/:id/evidence

One call returns the complete record. Timestamps, devices, consent, hash seal.

{
  "agreement": "agr_7f2b",
  "hash": "sha256:9c1e…",
  "log": [
    { "t": "…", "ev": "offered" },
    { "t": "…", "ev": "viewed" },
    { "t": "…", "ev": "consented" },
    { "t": "…", "ev": "signed" },
    { "t": "…",
      "ev": "payment.confirmed",
      "by": "both" }
  ]
}
Where a promise needs a witness

Your platform creates promises it cannot record. That is our job.

The pattern is always the same: two people who know each other agree to something, and the platform in the middle has no way to make it real. PACTI supplies the missing half.

Commerce

Pay later, on trust

Seller-to-buyer installment promises without BNPL underwriting. Documented, scheduled, signed.

Marketplaces · Gig

Milestone commitments

Deliver by Friday, pay on delivery. The handshake behind every gig, made official the moment both sign.

Rentals

Deposits and family rent

Sublets, deposits, rent between people who know each other. A note instead of a text thread.

B2B

Handshake credit

Net-30 between two small shops. The purchase order that was always a promise, finally signed.

Community finance

Tandas and team dues

Rotating savings, group buys, season fees. Signed obligations instead of group-chat chasing.

Fintech · CDFIs

Embedded notes

Credit unions and immigrant fintechs embed the promissory note and evidence trail natively.

The object model

Six primitives. Everything else is yours to build.

We expose the smallest set of objects that make a promise real. Compose them however your product needs.

Agreement
The root object. Parties, terms, schedule, purpose tag. Amount is nullable: a promise does not have to be money.
Party
A role and a verification state. QR presence when together, a code to the invited address when apart. Forwarding the link does not move the signature.
Ceremony
One hosted signing URL. Identity, ESIGN consent, press-and-hold signature. Never headless, never rebuilt by you. Compliance is the service.
Schedule
Payment or milestone events. Marked by one side, confirmed by the other. Proof can be attached to any event.
Evidence
Append-only log, timestamps, device stamps, SHA-256 hash seal. One call returns the complete record.
Templates
The extension system. Partners define pact types with template_id and never touch the core object. Custom pactis that repeat become the catalog. Coming: the template marketplace, where partners publish and monetize pact types.
Agent-ready · MCP

Your agent can pacti. Only humans sign.

PACTI ships as an MCP server: Claude, ChatGPT, and any agent can draft, track and verify pactis through the same API, with the user's consent. The signing ceremony stays human, always. A signed pacti is the mandate agents execute against, and ESIGN intent belongs to a person, never a process.

MCP"Pacti me with my brother for the $2,000 I am lending him Friday"

The agent drafts through the API, schedules the reminders, watches the webhooks. The two humans hold to sign on PACTI's hosted ceremony, exactly like everyone else.

agent  → POST /v1/agreements   (draft, with consent)
human  → sign_url              (hold to sign · always)
agent  ← webhook agreement.executed
agent  ← webhook payment.confirmed
Early access

The API and the MCP server are still being built.

Leave your email and we will reach out when there is a real endpoint to call. We are not promising a date, because we do not have one yet.

One email, kept for this list only. Nothing else.