Skip to main content
Create, manage, and collect payment on invoices.

Create Invoice

curl -X POST https://api.atlas.co/functions/v1/invoices \
  -H "Authorization: Bearer sk_test_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "customer": "cus_xxx",
    "collection_method": "send_invoice",
    "days_until_due": 30
  }'
Parameters:
ParameterTypeRequiredDescription
customerstringYesCustomer ID to bill
auto_advancebooleanNoAuto-finalize after 1 hour (default: true)
collection_methodstringNocharge_automatically or send_invoice
days_until_dueintegerNoDays until payment is due
descriptionstringNoInvoice description

List Invoices

curl "https://api.atlas.co/functions/v1/invoices?status=open" \
  -H "Authorization: Bearer sk_test_xxx"
Query Parameters:
ParameterTypeDescription
customerstringFilter by customer ID
statusstringFilter by status (draft, open, paid, void)
subscriptionstringFilter by subscription ID

Finalize Invoice

Transitions invoice from draft to open, making it ready for payment.
curl -X POST https://api.atlas.co/functions/v1/invoices/inv_xxx/finalize \
  -H "Authorization: Bearer sk_test_xxx"

Pay Invoice

Attempt to collect payment on an open invoice.
curl -X POST https://api.atlas.co/functions/v1/invoices/inv_xxx/pay \
  -H "Authorization: Bearer sk_test_xxx"

Void Invoice

Permanently void an invoice. Cannot be undone.
curl -X POST https://api.atlas.co/functions/v1/invoices/inv_xxx/void \
  -H "Authorization: Bearer sk_test_xxx"

Invoice Statuses

StatusDescription
draftInvoice is being prepared, not yet sent
openInvoice has been finalized and sent
paidInvoice has been paid in full
voidInvoice was canceled and is invalid
uncollectiblePayment attempts exhausted

Invoice Lifecycle

1. Create (draft) → 2. Finalize (open) → 3. Pay (paid)
                                       ↘ Void (void)

Node.js SDK

import { Atlas } from '@atlas/node';

const atlas = new Atlas('sk_test_xxx');

// Create invoice
const invoice = await atlas.invoices.create({
  customer: 'cus_xxx',
  collection_method: 'send_invoice',
  days_until_due: 30,
});

// Add line items
await atlas.invoices.addLines(invoice.id, [
  { description: 'Consulting (10 hours)', amount: 150000 },
  { description: 'Software license', amount: 29900 },
]);

// Finalize and send
await atlas.invoices.finalize(invoice.id);

// Collect payment
await atlas.invoices.pay(invoice.id);

Webhooks

Listen for invoice events:
  • invoice.created - New invoice created
  • invoice.finalized - Invoice finalized and ready for payment
  • invoice.paid - Invoice paid successfully
  • invoice.payment_failed - Payment attempt failed
  • invoice.voided - Invoice was voided