Invoice financing for Indonesian SMEs: Chainlink verifies each Faktur Pajak with the tax office, then KYC'd lenders co-fund it in its own ERC-4626 vault on Arbitrum. Paid today, repaid later.




Indonesian suppliers sell on credit and wait to be paid: 54% of B2B sales are on credit, the average term is 50 days and 49% of invoices are paid late (Atradius Payment Practices Barometer, Indonesia 2025). Invoice financing would fix their cash flow, but lenders hold back because (1) the same invoice can be financed by several lenders who cannot see each other, and (2) anyone who knows an invoice number can claim to be its seller.
Since January 2025 every Indonesian VAT invoice (Faktur Pajak) is issued in the tax office's Coretax system with a unique national number and the seller's and buyer's tax IDs (NPWP). Fakturin turns that public infrastructure into onchain credit:
Real invoice: a Chainlink CRE workflow checks each Faktur Pajak with the tax system (through a PJAP tax provider API) and writes the result onchain.
Real owner: the seller proves its NPWP once with a Chainlink ACE credential (KYB). If the NPWP on the invoice does not match, the invoice is rejected (SELLER_MISMATCH).
Financed once, ever: the registry is keyed by the national invoice number, and the invoice NFT is locked in one vault. A financed number can never be financed again.
Verified money: lenders pass KYC once (Chainlink ACE credential); vaults refuse deposits from anyone else.
One ERC-4626 vault per invoice: lenders choose each invoice and fund any amount. When the vault fills, the seller receives 80% of the invoice in the same transaction.
Repay or default, no buttons: on the due date the seller repays and lenders withdraw principal plus return. Unpaid vaults are closed automatically by a Chainlink CRE keeper; the 17% holdback goes to lenders and the seller is flagged onchain.
Example: a Rp100M invoice due in 60 days. Lenders put in Rp97M. The seller gets Rp80M today, repays Rp100M on the due date and gets the Rp17M holdback back (net cost 3%). Lenders withdraw Rp99.7M (+2.78%, about 17% a year). The platform keeps Rp0.3M, only because the loan was repaid. Pricing (1.5% per 30 days, all-in) stays under the OJK productive-lending cap.
8 custom Solidity contracts plus a self-deployed Chainlink ACE identity stack (19 contracts, all verified on Arbiscan, 37 Foundry tests): FakturRegistry, FakturVault (ERC-4626, one per invoice), FakturVaultFactory, FakturNFT (non-transferable, burned on close), FakturRenderer (onchain SVG with status stamp), FakturVerifierReceiver (Chainlink CRE consumer), FakturKeeper (automatic closing), MockIDRX (2-decimal test rupiah), plus ACE PolicyEngine, IdentityRegistry, CredentialRegistry and two identity validators.
Borrower (PKP supplier): verify the business once, submit a Faktur Pajak, get paid today, repay on the due date.
Lender: pass KYC once, pick verified invoices, earn a return per invoice.
Anyone: check whether a Faktur Pajak was ever financed, no wallet needed.
Real: all contracts, Chainlink ACE identity, Chainlink CRE workflows (running via cre workflow simulate --broadcast). Simulated behind the same interfaces: the tax-office data (PJAP-shaped API), the KYC/KYB provider, and the rupiah (MockIDRX, a test copy of IDRX).
Built from scratch during the hackathon, starting from an empty create-turbo monorepo on Oct 9.
Day 1 (Oct 9)
Product spec (PRD) and design system.
Smart contracts: invoice registry keyed by the national Faktur Pajak number, ERC-4626 vault per invoice with all-or-nothing funding and atomic payout, repay, default and refunds.
Chainlink CRE verify workflow (EVM log trigger → PJAP API → report to the registry).
Frontend (Next.js, wagmi, Reown) wired to the contracts.
Day 2 (Oct 10)
Chainlink ACE integration: self-deployed PolicyEngine, IdentityRegistry, CredentialRegistry and validators. KYC for lenders, KYB plus an NPWP-hash credential for sellers, NPWP match on every invoice.
Tenor-based pricing (1.5% per 30 days), 10% platform fee taken only on repayment.
Onchain SVG invoice NFT with status stamps (VERIFIED, FINANCED, LUNAS, DEFAULT).
FakturKeeper plus a Chainlink CRE cron workflow that closes overdue vaults automatically.
MockIDRX (2-decimal test copy of IDRX).
Deployed all 19 contracts to Arbitrum Sepolia and verified them on Arbiscan; 37 Foundry tests and CI.
CRE workflows running 24/7 on a VPS with pm2.
Plain-language transaction review dialog (exact approvals, raw calldata).
Borrow, Lend and Check screens.
Documentation site (docs.fakturin.xyz) with user guides, architecture diagrams and a contract reference.
Pitch and demo videos.
Not fundraising yet; bootstrapped hackathon prototype. Next steps before raising: PJAP (tax provider) staging access, Chainlink CRE DON deployment, a licensed KYC/KYB partner, IDRX on Arbitrum, and pilot suppliers. Open to ecosystem grants, accelerator programs and design partners (PJAPs, rupiah stablecoin issuers, invoice-financing lenders).