Quick Start
Welcome to InvoiceDLT — a hybrid TradFi and DeFi invoicing platform. Accept payments via Stripe (traditional) or XRPL (blockchain). Send your first invoice in under 5 minutes.
Your Dashboard
The dashboard gives you a real-time view of your invoicing business at a glance.
Dashboard Cards
| Card | What it shows |
|---|---|
| Total Invoices | All invoices you've created (all statuses) |
| Paid | Invoices that have been fully paid |
| Overdue | Invoices past their due date with no payment received |
| Revenue MTD | Total amount collected this calendar month |
Invoice Status Meanings
| Status | What it means |
|---|---|
| Draft | Created but not yet sent. Only you can see it. |
| Sent | Delivered to your client. Awaiting payment. |
| Viewed | Your client has opened the invoice link. |
| Paid | Payment confirmed. No further action needed. |
| Overdue | Due date has passed with no payment. Consider sending a reminder. |
| Cancelled | Invoice has been voided. Cannot be paid. |
Quick Actions
Use the New Invoice button on the dashboard to jump straight to invoice creation without navigating to the Invoices page first.
Managing Clients
Every invoice is tied to a client. InvoiceDLT stores your client list so you don't have to re-enter their details each time.
Adding a Client
- Go to Clients in the navigation menu.
- Click Add Client.
- Fill in the client's name (required), email address (required for sending invoices), company name, phone, and billing address.
- Click Save Client.
Editing a Client
Click on any client's name from the Clients list to open their profile. Click Edit to update any details. Changes apply to future invoices — existing invoices retain the original information.
Client Limits by Plan
| Plan | Client Limit |
|---|---|
| Solo (Free) | 3 clients |
| Pro | 50 clients |
| Business | Unlimited |
Creating Invoices
Invoice Fields Explained
| Field | Required? | Description |
|---|---|---|
| Client | Yes | Select from your saved clients, or add a new one on the fly. |
| Invoice Number | Yes | Auto-generated, but you can customize it (e.g. INV-2026-001). |
| Issue Date | Yes | The date the invoice is created. Defaults to today. |
| Due Date | Yes | When payment is expected. Common terms: Net 15, Net 30. |
| Currency | Yes | USD by default. XRP available if XRPL payments are enabled. |
| Line Items | Yes | Each line has a description, quantity, and unit price. Tax rate optional. |
| Notes | No | Visible to your client. Good for payment instructions or thank-you messages. |
| Internal Notes | No | Private — only visible to you. Use for project references or context. |
Adding Line Items
- Click Add Line Item on the create invoice form.
- Enter a description (e.g. "Web design — homepage"), quantity, and unit price.
- Add a tax percentage if applicable (e.g. 8.5 for 8.5%).
- Repeat for each service or product.
- The subtotal, tax, and total are calculated automatically.
Saving vs. Sending
Save as Draft saves the invoice without sending it — useful when you want to review before sending. Save and Send saves and immediately emails the invoice to your client.
Invoice Limits by Plan
| Plan | Invoices per Month |
|---|---|
| Solo (Free) | 5 |
| Pro | 50 |
| Business | Unlimited |
| Enterprise | Unlimited (coming soon) |
Sending Invoices
Sending by Email
From any invoice's detail page, click Send Invoice. InvoiceDLT emails your client a professional invoice with a secure payment link. The invoice status updates from Draft to Sent automatically.
Sending a Reminder
If an invoice is overdue, open the invoice and click Send Reminder. This resends the invoice email with a note that payment is past due. Use this sparingly — one reminder is usually enough.
Sharing a Payment Link
Every invoice has a unique payment link that you can copy and share directly (via text, WhatsApp, etc.) without needing to send an email through the app. Find it on the invoice detail page under Share Link.
Tracking Payments
How Payments Work
InvoiceDLT supports two payment methods: credit/debit card (via Stripe) and XRP cryptocurrency (via XRPL). Your client chooses when they open their invoice.
Card Payments (Stripe)
When your client pays by card, Stripe processes the payment and InvoiceDLT automatically marks the invoice as Paid. Funds are deposited to your connected Stripe account, typically within 2 business days.
To receive card payments, you must complete Stripe Connect onboarding from the Payment Setup page. This is a one-time process.
Marking an Invoice as Paid Manually
If a client pays you outside the app (cash, bank transfer, etc.), open the invoice and click Mark as Paid. Enter the payment date and an optional note. This updates the invoice status and your revenue metrics.
Viewing Payment History
The invoice detail page shows a full payment timeline: when it was created, sent, viewed, and paid. Use the Invoices list with the Paid filter to see all collected invoices.
XRPL & XRPL Payments
InvoiceDLT is built on the XRP Ledger — one of the fastest, lowest-cost payment networks in the world. Accept XRP directly from clients worldwide with no bank required.
Setting Up Your XRP Wallet
- Go to Account Settings → Profile.
- Enter your XRPL wallet address (starts with
r, e.g.rHb9...). - Click Save. Your XRPL address is now shown on all invoices as a payment option.
How Your Client Pays with XRP
- Client opens their invoice payment link.
- They select Pay with XRP.
- A QR code appears with the exact XRP amount and your wallet destination.
- Client scans the QR code with their Xaman (or compatible) wallet app and confirms.
- The transaction appears on the XRPL within 3–5 seconds.
Verifying XRPL Payment
After paying, your client submits their XRPL transaction ID (txid) through the payment page. InvoiceDLT verifies it against the XRPL ledger in real time. Once confirmed, the invoice is marked Paid automatically.
XRP ↔ USD Conversion
InvoiceDLT shows the USD-equivalent XRP amount using live market rates at the time of invoice viewing. The rate is refreshed every 60 seconds. Note that XRP price fluctuates — the exact USD value received may differ slightly from the invoice amount.
Account & Settings
Access your account settings by clicking your avatar (top right) → Profile & Account.
Updating Your Profile
Change your display name or email address from the Profile tab. Click Save Changes to apply.
Changing Your Password
Go to Security tab in Settings. Enter your current password, then your new password (must be 8 or more characters). Click Update Password.
Notification Preferences
The Notifications tab lets you choose which emails InvoiceDLT sends you: payment alerts, billing emails, and product updates.
API Keys
If you're a developer integrating InvoiceDLT with other tools, the API Keys tab lets you generate, view, copy, and revoke API keys. Pro and Business plans include multiple API keys.
Plans & Billing
Plan Comparison
| Feature | Solo (Free) | Pro | Business | Enterprise* |
|---|---|---|---|---|
| Invoices/month | 5 | 50 | Unlimited | Unlimited |
| Clients | 3 | 50 | Unlimited | Unlimited |
| API keys | — | 1 | Unlimited | Unlimited |
| Webhooks | — | 1 | Unlimited | Unlimited |
| XRPL payments | — | ✅ | ✅ | ✅ |
| Card payments | — | ✅ | ✅ | ✅ |
| PDF export | ✅ | ✅ | ✅ | ✅ |
| Priority support | — | — | ✅ | ✅ |
* Enterprise tier coming soon
Upgrading Your Plan
- Click your avatar → Billing & Plan.
- Click Manage Billing.
- Select your desired plan in the Stripe billing portal.
- Your new plan activates immediately after payment.
Cancelling
Cancel anytime from the Stripe billing portal (via Manage Billing). Your plan downgrades to Solo (Free) at the end of your billing period. All your data is preserved.
Refund Policy
We offer a 7-day refund on monthly plans if you're not satisfied. Email support@invoicedlt.com within 7 days of your first charge. Annual plans are non-refundable after 30 days.
Troubleshooting
My client says they didn't receive the invoice email
Ask them to check their spam/junk folder. If it's not there, verify the email address on their client profile is correct. You can resend from the invoice detail page. For persistent issues, share the payment link directly instead.
My invoice shows "Overdue" but the client paid
If the client paid outside the app (bank transfer, cash), use Mark as Paid on the invoice to update the status manually.
XRPL Payment was sent but invoice is still "Sent"
The XRPL verification requires the client to submit their transaction ID (txid) after paying. Ask them to complete that step on the payment page. If they've lost the txid, it can be found in their XRPL wallet transaction history.
I can't add more clients / create more invoices
You've reached your plan's limit. Upgrade to Pro or Business from Billing & Plan in your account settings.
I forgot my password
On the login page, click Forgot password? and enter your email. You'll receive a reset link within a few minutes. Check spam if it doesn't arrive.
Still need help?
Email us at support@invoicedlt.com or use the AI chat assistant (🤖 bottom right) for instant answers.
Authentication
InvoiceDLT uses two authentication methods depending on your use case.
Session Cookie (app users)
Handled automatically when you log in via the browser. No extra steps needed for web app use.
API Key (server-to-server)
For programmatic access, include your API key as a Bearer token in the Authorization header:
Authorization: Bearer idlt_live_xxxxxxxxxxxxxxxx
Generate API keys from Settings → API Keys. Pro plan includes 1 key; Business includes unlimited.
Endpoint Reference
Base URL: https://api.invoicedlt.com
Invoices
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/invoices | List all invoices (filterable by status) |
| POST | /api/invoices | Create a new invoice |
| GET | /api/invoices/:id | Get invoice details |
| PATCH | /api/invoices/:id | Update invoice fields |
| DELETE | /api/invoices/:id | Delete a draft invoice |
| POST | /api/invoices/:id/send | Send invoice to client by email |
| POST | /api/invoices/:id/remind | Send payment reminder |
| GET | /api/invoices/:id/pdf | Printable invoice page (HTML) |
Clients
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/clients | List all clients |
| POST | /api/clients | Create a client |
| GET | /api/clients/:id | Get client details |
| PATCH | /api/clients/:id | Update client |
| DELETE | /api/clients/:id | Delete client (must have no open invoices) |
Billing & Account
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/billing/subscribe | Create Stripe subscription checkout session |
| GET | /api/billing/portal | Open Stripe billing portal |
| GET | /api/connect/onboard | Start Stripe Connect onboarding |
| POST | /api/keys | Create API key |
| GET | /api/keys | List API keys |
| POST | /api/webhooks | Create webhook endpoint |
Rate Limits
| Plan | Requests/minute |
|---|---|
| Solo (Free) | 30 |
| Pro | 120 |
| Business | Unlimited |
Code Examples
Create an invoice (curl)
curl -X POST https://api.invoicedlt.com/api/invoices \
-H "Authorization: Bearer idlt_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"clientId": 42,
"dueDate": "2026-03-31",
"lineItems": [
{ "description": "Web design", "quantity": 1, "unitPrice": 1500.00 }
],
"notes": "Thank you for your business!"
}'
List invoices (JavaScript)
const res = await fetch('https://api.invoicedlt.com/api/invoices?status=overdue', {
headers: { Authorization: 'Bearer idlt_live_xxx' }
});
const { invoices } = await res.json();
Create a client (Python)
import requests
r = requests.post(
'https://api.invoicedlt.com/api/clients',
headers={'Authorization': 'Bearer idlt_live_xxx'},
json={'name': 'Acme Corp', 'email': 'billing@acme.com'}
)
client = r.json()
Webhooks
InvoiceDLT can POST real-time event notifications to your server when things happen in your account.
Webhook Events
| Event | Fired when |
|---|---|
| invoice.created | New invoice is created |
| invoice.sent | Invoice is emailed to client |
| invoice.viewed | Client opens the invoice link |
| invoice.paid | Payment is confirmed (card or XRP) |
| invoice.overdue | Invoice passes its due date unpaid |
| client.created | New client is added |
Verifying Webhook Signatures
Every webhook request includes an X-InvoiceDLT-Signature header. Verify it using HMAC-SHA256 of the raw request body with your webhook secret to confirm the request is genuine.
const crypto = require('crypto');
const sig = req.headers['x-invoicedlt-signature'];
const expected = crypto
.createHmac('sha256', process.env.WEBHOOK_SECRET)
.update(req.rawBody)
.digest('hex');
if (sig !== expected) return res.status(401).send('Invalid signature');
XRPL Integration
Payment Verification Endpoint
Use this to verify an XRPL transaction against an invoice programmatically:
POST /pay/:invoiceId/verify-payment
Body: { "txHash": "abc123..." }
Response: { "verified": true, "amount": "127.50", "currency": "XRP" }
Public Invoice Payment Page
Each invoice has a public pay page at /pay/:invoiceId — no authentication required. This is the URL sent to your clients. It shows the invoice details, QR code for XRPL Payment, and Stripe card checkout.