PaymentsHow payments work

Payments

How payments work

Payment methods, how money reaches you, and the one rule that decides when an invoice is marked paid.

Free Invoice Automation helps your clients pay you, but the money never passes through us. Card payments go straight to your own Stripe account, bank transfers go to your own bank, and local payments go to your own wallet. We never hold your funds and never take a percentage of an invoice payment. This page explains the payment methods, what a client sees, and how an invoice moves to paid.

Payment methods (rails)

Each way of getting paid is called a rail. You connect the rails you want for each business, then choose which ones each invoice accepts. There are three kinds:

KindHow it worksExamples
GatewayThe client pays on the provider's hosted checkout page; the provider tells us when the payment succeedsStripe, Whop
InstructionThe pay page shows your details; the client pays outside our system and you record the paymentBank transfer, local QR payments
LinkA payment link to another serviceReserved for future rails

What is available when

RailAvailable
Stripe (card payments through Stripe Connect)Launch, 1 January 2027
Bank transfer with manual payment recordLaunch, 1 January 2027
Local QR payments: UPI, Raast, JazzCash, EasypaisaWeek of 25 January 2027
WhopFebruary 2027
Auto-charge of a saved card (part of Stripe)March 2027

Other rails, such as PayPal, Razorpay, Paystack, Safepay, Wise, Payoneer, bKash, M-Pesa and PIX, are added when real users ask for them. Adding one changes nothing in the app, the pay page or the API: it simply appears as a new rail you can connect.

How a client pays

  1. You send an invoice by email, or share its pay link. Every sent invoice has a pay page at freeinvoiceautomation.com/pay/....
  2. The client opens the pay page. It shows the invoice in your branding, the amount due, and every payment method you accept for that invoice.
  3. The client picks a method:
    • Card (Stripe): they click Pay by card and pay on Stripe's hosted Checkout page.
    • Bank transfer or a QR code: they pay from their bank or wallet, then click I have paid and can upload a proof of payment.
  4. The invoice moves to paid, or partially paid if only part was paid, once the payment is confirmed.

Clients can pay part of an invoice when partial payments are allowed (the default). From the week of 25 January 2027, invoices can also carry a deposit and instalments, and the pay page asks for the next amount due.

When is an invoice paid?

The paid rule

An invoice's paid state changes only from one of three trusted sources:

  1. A verified webhook from the payment provider (for example Stripe).
  2. A reconciliation run that checks the provider directly.
  3. A payment recorded by a person on your team, which is written to the audit log.

Nothing else can mark an invoice paid. A client returning from checkout to a "thank you" page, or clicking I have paid, does not change the paid state.

This protects you from losing money by mistake. If a client closes the browser after paying, the webhook still arrives and the invoice is marked paid. If someone visits a success URL without paying, nothing happens: the success page only says the payment is being confirmed. If a webhook is ever lost, a reconciliation job fetches the true state from the provider and corrects it.

Each payment records where its paid state came from:

SourceMeaning
webhookA verified event from the provider, such as Stripe
reconcileFound by a reconciliation run
manualRecorded by a team member; the person is always stored
connectorA paid order from a verified Shopify or WooCommerce store channel

Balances

Every invoice keeps three amounts, all in integer minor units of the invoice currency:

  • amount_paid_minor: the sum of payments received.
  • amount_credited_minor: the sum of credit notes and applied client credit.
  • balance_minor: total_minor - amount_paid_minor - amount_credited_minor.
Payment status (response)
{
  "data": {
    "document_id": "0193f2b4-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
    "status": "partially_paid",
    "currency": "USD",
    "total_minor": "120000",
    "amount_paid_minor": "50000",
    "amount_credited_minor": "0",
    "balance_minor": "70000"
  }
}

Set up payment methods

1

Open Settings > Payment methods

Payment methods are set per business. Pick the business in the top bar first.

2

Connect a rail

Connect Stripe in one click, or add your bank details. Connecting a rail asks you to sign in again, because it decides where money goes.

3

Choose order and defaults

Turn methods on or off and set the order they appear in on the pay page. New invoices accept every enabled method that fits them.

4

Adjust per client or invoice

A client or a single invoice can accept a narrower set of methods. QR rails appear only on invoices in their own currency (PKR or INR).

Through the API and MCP

ActionRESTMCP toolPermission
Get payment statusGET /v1/documents/{id}/payment-statusget_payment_statuspayments.view
Record a paymentPOST /v1/paymentsrecord_paymentpayments.record
List paymentsGET /v1/paymentsnonepayments.view
List railsGET /v1/railsnonerails.manage
Create a connectionPOST /v1/connectionsnonerails.manage
Set payment methodsPUT /v1/businesses/{id}/payment-methodsnonerails.manage

Your systems can follow payments with the payment.succeeded, payment.recorded, payment.refunded, payment_proof.submitted, document.paid and document.partially_paid webhook events.

Rules

  • No cut, no holding. We never take a percentage of an invoice payment and never hold money for you. Provider fees (for example Stripe's) are between you and the provider.
  • No card data on our servers. Card details are entered only on Stripe's hosted pages.
  • Voided invoices cannot be paid. Voiding an invoice cancels its open payment links and the pay page shows "VOID".
  • No ads. Pay pages never show ads, affiliates, sponsors or analytics.

Permissions

KeyLets a memberDefault roles
payments.viewSee payments, proofs and payment statusOwner, Admin, Editor, Viewer, Accountant
payments.recordRecord payments, accept or reject proofsOwner, Admin, Editor
payments.refundRefund paymentsOwner, Admin
payments.auto_chargeTurn on auto-charge (March 2027)Owner, Admin
rails.manageConnect rails and choose payment methodsOwner, Admin

Errors

CodeWhen
rail_not_connectedNo active connection for the chosen method
rail_capability_missingThe rail cannot do this, for example a refund on bank transfer
currency_mismatchA QR rail on an invoice that is not in PKR or INR
fresh_signin_requiredConnecting a rail needs a fresh sign-in
upstream_errorThe payment provider failed; try again