1inch Aqua · new SwapVM instruction

One balance bids on every invoice.

The USDC stays in the financier’s wallet until a sale happens. The merchant gets cash today; the financier collects in full later.

Financier’s wallet · strategy book-1

…

USDC available to bid · no escrow

12% a year · max $5,000 per invoice

#1043

open

listed · bid … per $1,000

#1047

bought

paid $980 · holds … claims

1

The invoice sets its own price.

Stock strategies price from pool reserves. This one reads the invoice.

Any invoice · 2/10 net 30

read from its vault, on-chain

FFace value$1,000
dEarly-payment discount2%
tTime left until due25 days

price per $1 of the invoice

min(1 − d, e−r·t)

r = the financier’s rate. Never above what the payer would pay early.

0.900.920.940.960.981.000d15d30d45d60d75d90ddays to duemax price 0.980curve takes over
12% a year
2%

Price today: $980.00 for a $1,000 invoice due in 25 days

How it differs from the stock Aqua strategies

XYC / Concentrate

2 tokens · price from reserves

Pegged

2 tokens · price held near a peg

Decay / Dutch

2 tokens · price moves with time since start

PDFi+

USDC + many invoices · price from each invoice's own terms

2

One invoice, four endings.

The financier pays $980 on day 5. What comes back depends on the payer.

discount endsduelate fee maxed (+3%)financier buys $980day 30

Payer pays

$1,000.00

Financier’s result

+$20

Per year

29.8%

The 2% discount the payer skipped is the financier's margin.

3

Twenty invoices, one balance.

Move the sliders: late payers add fees, defaults cost $980 each.

0%
15%
10%

Spent $19,600.00 · result

+$450

2.30%

Breaks even at about 2% defaults.
4

It refuses what it shouldn't buy.

Five offers to the live strategy. Each verdict is the router's own quote on Sepolia.

offered to the strategybook-1live quote() on Sepolia
  • USDC, offered as if it were a claim

  • Invoice #1042 (paid), not listed by book-1

  • $5,001 of invoice #1043, over the $5,000 cap

  • $1,000 of invoice #1047 (due Sep 27, 15:11 JST)

  • $1,000 of invoice #1043, open

5

Three new opcodes, one router.

PDFi+ appends three instructions to 1inch's AquaSwapVMRouter. Two make paying an invoice safe; one prices invoices for Aqua.

PDFiPlusRouter · opcode table

0 … 33 · 1inch SwapVM + Aqua, unchanged

Paying an invoice runs 34 → 35 in one signed order.

Financing runs 36 inside a financier’s Aqua strategy.

opcode 36

_discountCurveXD

Prices unpaid invoices for an Aqua strategy.

ARGS

rateBps 4 bytes, yearly‖maxFace 16 bytes, cap per invoice

REQUIRES, OR THE SWAP REVERTS

  • The token in is a PDFi+ claim token
  • The invoice is unpaid and not yet due
  • Its currency is the strategy's currency
  • The strategy holds no more than maxFace of it
→Price per $1 of face = min(1 − discount, e^(−r·τ)), τ = time to due. Rounds in the financier's favour.
6

Live on Sepolia

A real financier strategy, holding invoice #1047.

Budget left
…
#1047 claims owned
…
Payer owes in
—

Bought for $980 · 0x17ce07…e5a344

Remove 1inch and terms aren't enforced

No early discount, no late fee, no exact amount.

…an invoice can be paid twice

The one-payment rule lives in the SwapVM order.

…there's no financing market

No strategy to buy invoices, no early cash.

PDFiPlusRouter (SwapVM fork)
0x4c11ab…06BDB5
Aqua (canonical)
0x111111…F6a90a
InvoiceLogic
0xBf1BC3…8B23Ca
VaultFactory
0x133281…b79BB5
book-1 strategy hash
0x5640c2…3c7ced
book-1 financier
0xc7AEBD…11d064
Sale of #1047 for $980
0x17ce07…e5a344