cNGN1.0000+0.00%
cKES1.0000+0.00%
cZAR1.0000+0.00%
cTZS1.0000+0.00%
cGHS1.0000+0.00%
cEGP1.0000+0.00%
cZMW1.0000+0.00%
cUGX1.0000+0.00%
cMAD1.0000+0.00%
cXOF1.0000+0.00%
cRWF1.0000+0.00%
cETB1.0000+0.00%
cNGN1.0000+0.00%
cKES1.0000+0.00%
cZAR1.0000+0.00%
cTZS1.0000+0.00%
cGHS1.0000+0.00%
cEGP1.0000+0.00%
cZMW1.0000+0.00%
cUGX1.0000+0.00%
cMAD1.0000+0.00%
cXOF1.0000+0.00%
cRWF1.0000+0.00%
cETB1.0000+0.00%
Developer documentation

Build carbon-negative cross-border payments in one API call.

Keep whatever payment provider you already use. Point a payment intent at the AfriCredit corridor API and SynapticChain resolves the optimal route, settles atomically in under a second, and retires carbon on-chain — returning a verifiable certificate with every transaction.

Overview

Introduction

AfriCredit is the settlement layer for African stablecoins, running on SynapticChain. A single REST endpoint turns a payment intent into an atomic on-chain settlement: mint, route through the aUSD hub or a direct pair, off-ramp, and retire carbon — all in one transaction that finalizes in well under a second.

Base URL
api.synapticchain.xyz
Protocol fee
0.01%
Carbon levy
0.01%
Every settlement is carbon-negative by default. You never opt in — the 0.01% levy buys and burns tCC credits atomically and returns a certificate you can surface to your users.
Getting started

Quickstart

Send your first cross-border settlement in three steps. The example moves 150,000 NGN to a Kenyan recipient in KES.

  1. 1Grab a secret key from the dashboard. Test keys are prefixed sk_test_afc.
  2. 2POST a payment intent to the corridor endpoint.
  3. 3Read the settlement + carbon certificate from the response.
cURL
curl -X POST https://api.synapticchain.xyz/settle \
  -H "X-API-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "source": "NGN",
    "destination": "KES",
    "amount": 150000,
    "recipient": "syn1q9recipient…",
    "provider": "flutterwave"
  }'
Node.js
import { AfriCredit } from '@africredit/sdk'

const afc = new AfriCredit({ apiKey: process.env.SYNAPTICCHAIN_API_KEY })

const settlement = await afc.corridors.settle({
  source: 'NGN',
  destination: 'KES',
  amount: 150_000,
  recipient: 'syn1q9recipient…',
  provider: 'flutterwave',
})

console.log(settlement.certificate.certificateId)
// -> tCC-9F2A-C7B1  (carbon retired atomically)
Security

Authentication

Authenticate every request with a bearer token in the Authorization header. Keys are environment-scoped — never ship a live key to a browser or mobile client.

request header
X-API-Key: your_api_key_here

The RPC endpoint at api.synapticchain.xyz/rpc uses the same X-API-Key header. The public /health endpoint requires no key.

X-API-Key: test_…

Simulated corridors and certificates. No real value moves.

X-API-Key: live_…

Production settlements against live vaults and oracles on mainnet-beta.

Core API

Corridor API

POST/settle

Resolve the best route between two markets and settle atomically. Source and destination accept either a fiat code (NGN) or its stablecoin (cNGN).

Body parameters

sourcestringrequired
Origin market — fiat code or stablecoin ticker.
destinationstringrequired
Target market. Must differ from the source market.
amountnumberrequired
Notional in the source currency. Must be greater than zero.
recipientstringoptional
Destination wallet address. Defaults to a generated demo wallet.
providerstringoptional
Label for your upstream provider, echoed into the event stream.

Response

Returns the resolved route, the amount that lands, timing, and an embedded carbon certificate.

200 OK · application/json
{
  "ok": true,
  "settlementId": "scs_8fk2p1az",
  "txHash": "0x7c3f…e91a",
  "corridor": "NGN→KES",
  "path": "hub",
  "amountIn": 150000,
  "currencyIn": "NGN",
  "amountOut": 12184.55,
  "currencyOut": "KES",
  "effectiveRate": 0.0812,
  "feePct": 0.01,
  "finalityMs": 397,
  "youGainPct": 7.9,
  "hops": ["NGN", "cNGN", "aUSD", "cKES", "KES"],
  "carbon": {
    "carbonFeeUsd": 0.0094,
    "tccRetired": 0.0947,
    "co2Tonnes": 0.000947,
    "co2Kg": 0.947
  },
  "certificate": {
    "certificateId": "tCC-9F2A-C7B1",
    "retirementHash": "0x1b8c…",
    "gescoStatus": "pending-quarterly-audit",
    "ncmcStandard": "NCMC-CA-2026 · national carbon accounting"
  },
  "explorer": "https://explorer.synapticchain.xyz/tx/0x7c3f…e91a"
}
Core API

Webhooks

Rather than polling, subscribe to settlement lifecycle events. AfriCredit POSTs a signed JSON payload to your endpoint as each stage completes — the same event stream you see in the live demo.

EventFires when
settlement.createdPayment intent accepted and route solved.
settlement.routedCorridor path locked against oracle marks.
settlement.retiredtCC purchased and burned; certificate minted.
settlement.settledFunds landed in the recipient wallet.
settlement.failedRoute became unfillable; funds unwound atomically.

Example payload

POST · your-endpoint
// POST from AfriCredit -> your endpoint
{
  "event": "settlement.retired",
  "settlementId": "scs_8fk2p1az",
  "corridor": "NGN→KES",
  "amountOut": 12184.55,
  "currencyOut": "KES",
  "certificate": {
    "certificateId": "tCC-9F2A-C7B1",
    "co2Kg": 0.947,
    "gescoStatus": "pending-quarterly-audit"
  },
  "signature": "t=1751760000,v1=8d5f…"
}

Verifying signatures

Every request carries an AfriCredit-Signature header. Compute an HMAC-SHA256 over `${timestamp}.${body}` and compare in constant time.

TypeScript
import crypto from 'node:crypto'

export function verify(payload: string, header: string) {
  const [t, v1] = header.split(',').map((p) => p.split('=')[1])
  const signed = `${t}.${payload}`
  const digest = crypto
    .createHmac('sha256', process.env.AFC_WEBHOOK_SECRET!)
    .update(signed)
    .digest('hex')
  return crypto.timingSafeEqual(Buffer.from(digest), Buffer.from(v1))
}
Reference

Errors

Errors return a non-2xx status with { ok: false, error, message }. The error field is a stable machine code.

CodeStatusMeaning
invalid_json400Request body was not valid JSON.
unauthorized401Missing or invalid API key.
unroutable422Source/destination are equal, unknown, or amount ≤ 0.
insufficient_depth409Vault depth too shallow for the notional.
rate_limited429Too many requests — back off and retry.
Protocol

Carbon & certificates

Carbon retirement is constitutional to the protocol. The carbon and certificate objects on every settlement are your ESG audit trail: certificate ID, retirement hash, tCC burned, CO₂ offset, and GESCO verification status against the NCMC-CA-2026 standard.

The Retirement Vault has no withdrawal function — burned credits can never re-enter circulation, so retirement is provably permanent and safe to report against GRI, SASB, and TCFD frameworks.
Open the retirement station
Reference

Supported corridors

12 live markets, each with an on-chain stablecoin and an over-collateralized vault. Any pair is routable — directly or through the aUSD hub.

MarketFiatStablecoinVault depth
NigeriahubNGNcNGN$214M
KenyahubKEScKES$168M
South AfricahubZARcZAR$231M
TanzaniaTZScTZS$96M
GhanaGHScGHS$84M
EgypthubEGPcEGP$142M
ZambiaZMWcZMW$41M
UgandaUGXcUGX$52M
MoroccoMADcMAD$73M
SenegalXOFcXOF$58M
RwandaRWFcRWF$33M
EthiopiaETBcETB$47M