@rozoai/checkout 0.1.11 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,6 +40,14 @@ prompt and it will mark which coins you can actually afford — then prints a
40
40
  deposit address for you to pay from any wallet — **no private key, no environment variable, no
41
41
  configuration** — and waits until the invoice is settled.
42
42
 
43
+ Paying a **Bitrefill** invoice instead? Create it on Bitrefill with "USDC on
44
+ Base", then pass its id, address and amount (Coinbase payment links and
45
+ Bitrefill invoices are the two supported targets; Stripe is not):
46
+
47
+ ```bash
48
+ npx @rozoai/checkout pay --bitrefill-invoice <id> --to <0x…> --amount 7.90 --expires-at <ISO> --with usdc-stellar
49
+ ```
50
+
43
51
  Know your coin already? Skip the question:
44
52
 
45
53
  ```bash
@@ -108,6 +116,12 @@ the optional `--send` flag signs locally: on Solana it uses the
108
116
  encrypted JSON keystore whose passphrase is prompted. A raw key in the
109
117
  environment (or a gitignored `.env`) still works for unattended automation.
110
118
 
119
+ Distributing this CLI? `--utm-source <label>` (or `ROZO_CHECKOUT_UTM_SOURCE`) is an optional channel label for reporting; no identity, no privilege.
120
+
121
+ Want ROZO to be able to reach you if a payment needs attention? Add the optional `--email you@example.com` to `pay`.
122
+
123
+ Need help? Email hi@rozo.ai, or reach us on [X](https://x.com/ROZOai) or [Discord](https://discord.gg/EfWejgTbuU).
124
+
111
125
  <details>
112
126
  <summary><b>Set up a local wallet for <code>--send</code></b> — .env template and per-wallet export steps</summary>
113
127
 
@@ -386,6 +400,18 @@ The full list of what this refuses to do, and why, is in
386
400
 
387
401
  ## Changelog
388
402
 
403
+ - **0.1.14**: optional `--email <addr>` on `pay` (and on the create-order
404
+ scripts) stores a contact email with the order so ROZO can reach you if the
405
+ payment needs attention. Never required; an invalid address is rejected
406
+ before any order is created. Support channels (hi@rozo.ai, X, Discord) are
407
+ shown at order creation and whenever an order is not clean.
408
+ - **0.1.13**: optional `--utm-source <label>` / `ROZO_CHECKOUT_UTM_SOURCE`
409
+ adds `attribution.utm_source` to created orders so distribution channels can
410
+ be measured. Invalid values are dropped, never failing an order.
411
+ - **0.1.12**: pay Bitrefill invoices. `pay --bitrefill-invoice <id> --to <0x…>
412
+ --amount <USDC> --expires-at <ISO>` creates a Rozo exactOut order through
413
+ mpprouter that delivers the exact USDC on Base straight to the Bitrefill
414
+ invoice address, payable from Stellar USDC or any supported coin.
389
415
  - **0.1.11**: each order now carries `attribution.client`
390
416
  (`rozo-checkout-skill/<version>`) so skill-created orders can be told apart
391
417
  from the web checkout. Installable as a Claude Code plugin
package/llms.txt CHANGED
@@ -25,6 +25,10 @@ calls with every safety rule already enforced:
25
25
  usdc-ethereum, usdt-polygon, usdc-polygon, usdc-base, usdc-stellar, btc-lightning
26
26
  (or raw: --chain 900 --token USDT).
27
27
 
28
+ Optional: --email <addr> stores a contact email with the order so ROZO can reach
29
+ the user if the payment needs attention. Ask the user once if they are present;
30
+ never required, proceed without it if they decline or no one is there.
31
+
28
32
  DEFAULT PATH NEEDS NO KEY: `pay` prints a deposit address for the user to pay from
29
33
  any wallet. No private key, no environment variable, no configuration. Only the
30
34
  optional --send flag signs locally. Its key comes from the first source that
@@ -37,6 +41,22 @@ directory (or --env-file <path>): only ROZO_CHECKOUT_* keys are read from it, it
37
41
  is parsed as text and never shell-evaluated, and the real environment wins.
38
42
  Key files and .env must be chmod 600 and untracked by git.
39
43
 
44
+ ## Bitrefill invoices
45
+
46
+ Also supported: a Bitrefill invoice created with "USDC on Base" (Stripe is not supported).
47
+ No quote step; mpprouter creates an exactOut order paying exactly that amount to the
48
+ Bitrefill address:
49
+
50
+ npx @rozoai/checkout pay --bitrefill-invoice <id> --to <0x…> --amount 7.90 --expires-at <ISO> --with usdc-stellar
51
+
52
+ Router call: POST {MPP}/create-invoice {"provider":"bitrefill","bitrefill":{"invoiceId","address",
53
+ "amount","expiresAt" (required, ≤30 min out)},"source":{"chainId","tokenSymbol"}}. Verify the response echoes the same
54
+ invoiceId/address/amount, and that GET payments/<rozoPaymentId> destination has the same
55
+ chain/token/address/amount (missing = mismatch), before showing the deposit or sending.
56
+ Expiry = the invoice expiry only; refuse to show/send under 2 min. 409 DUPLICATE_INVOICE returns
57
+ the existing rozoPaymentId: resume it. Settled = payment_payout_completed (or completed with a
58
+ payout tx hash). 503 BITREFILL_NOT_CONFIGURED / RETRY_LATER: nothing created, retry later.
59
+
40
60
  ## Local wallet setup for --send (not needed for the default keyless path)
41
61
 
42
62
  .env keys (only ROZO_CHECKOUT_* are read; real env wins; chmod 600; gitignore):
@@ -101,6 +121,8 @@ private key (EVM and Solana only); every other path is keyless.
101
121
  -d '{"url":"https://payments.coinbase.com/payment-links/pl_XXXX",
102
122
  "source":{"chainId":"900","tokenSymbol":"USDT"}}'
103
123
  -> { ok, reused, linkId, rozoPaymentId, paymentLink, expiresAt, source, ... }
124
+ Optional "email":"you@example.com" in the body stores a contact email with a
125
+ newly created order (a malformed value returns 400 INVALID_EMAIL).
104
126
  WARNING: if an unexpired order already exists for this link it is REUSED as-is,
105
127
  even with a different chain/token than you asked for. Always verify the returned
106
128
  source matches your request; abort on mismatch.
@@ -146,4 +168,11 @@ private key (EVM and Solana only); every other path is keyless.
146
168
 
147
169
  409 = link already used · 410 = link expired · UNSUPPORTED_SOURCE = the response's
148
170
  "supported" object lists valid (chainId, tokenSymbol) pairs (Lightning is supported
149
- but omitted from that list) · RATE_LIMITED = per-IP creation cap, retry later.
171
+ but omitted from that list) · RATE_LIMITED = per-IP creation cap, retry later ·
172
+ INVALID_EMAIL = the optional email is malformed; fix it or omit it.
173
+
174
+ ## Support
175
+
176
+ If an order is stuck or anything goes wrong: email hi@rozo.ai, X
177
+ https://x.com/ROZOai, Discord https://discord.gg/EfWejgTbuU. Include linkId,
178
+ rozoPaymentId and any tx hash.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rozoai/checkout",
3
- "version": "0.1.11",
3
+ "version": "0.1.14",
4
4
  "type": "module",
5
5
  "description": "Pay OpenRouter, or any Coinbase invoice, with the crypto you already hold: USDT/USDC on Solana, BNB Chain, Ethereum or Polygon, USDC on Base or Stellar, or BTC over Lightning. No Coinbase account.",
6
6
  "license": "MIT",