> For the complete documentation index, see [llms.txt](https://docs.copperx.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.copperx.io/integrate-payments/create-a-recurring-invoices.md).

# Create a Recurring Invoices

### 🔧 How It Works

1. **Create a Recurring Invoice**: Provide the relevant customer, amount, and recurrence details.
2. **Invoice Generation & Automation**: Copperx’s system automatically generates new invoices at the defined interval.
3. **Notifications & Webhooks**: Stay updated with webhooks for successful payments, failures, or other events.

**✅ Step 1: Create a Customer**

Before creating an invoice, you’ll need to create a customer:

```bash
curl --request POST \
  --url https://api.copperx.dev/api/v1/customers \
  --header 'Authorization: Bearer {API_KEY}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "email": "customer@example.com",
    "name": "John Doe",
    "metadata": {
      "customerType": "SaaS"
    }
  }'
```

✅ **Save the `customerId`** from the response.

***

**✅ Step 2: Create a Product**

Next, create the product to be billed:

```bash
curl --request POST \
  --url https://api.copperx.dev/api/v1/products \
  --header 'Authorization: Bearer {API_KEY}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "name": "Pro Plan",
    "description": "Monthly subscription plan",
    "isActive": true,
    "unitLabel": "month",
    "metadata": {
      "category": "SaaS"
    },
    "defaultPriceData": {
      "currency": "usdc",
      "unitAmount": 50000000,
      "interval": "month",
      "type": "recurring"
    }
  }'
```

✅ **Save the `productId`** from the response.

✅ **Save the** `defaultPrice.id` as a `priceId` from the response.

***

**✅ Step 3: Create a Recurring Invoice**

Use the `customerId` and `productId` and `priceId` in the invoice creation request:

```bash
curl --request POST \
  --url https://api.copperx.dev/api/v1/invoices \
  --header 'Authorization: Bearer {API_KEY}' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "customerId": "{CUSTOMER_ID}",
    "description": "Monthly recurring invoice for Pro Plan",
    "dueDate": "2025-06-15T00:00:00Z",
    "invoiceType": "recurring",
    "collectionMethod": "charge_automatically",
    "lineItems": {
      "data": [
        {
          "quantity": 1,
          "priceId": "{PRICE_ID}"
          "price": {
            "productId": "{PRODUCT_ID}",
            "unitAmount": "50000000",
            "currency": "usdc",
            "type": "recurring",
            "interval": "month"
          }
        }
      ]
    }
  }'
```

✅ **Save the `invoiceId`** from the response.

***

**✅ Step 4: Finalize the Invoice**

Finalize the invoice to make it active and ready for payment collection:

```bash
curl --request POST \
  --url https://api.copperx.dev/api/v1/invoices/{INVOICE_ID}/finalize \
  --header 'Authorization: Bearer {API_KEY}' \
  --header 'Content-Type: application/json'
```

#### 🛠️ Best Practices

✅ **Validate Customer Details**: Make sure the customer information is accurate before generating invoices.\
✅ **Use Webhooks**: Listen for events like `invoice.paid`, `customer.subscription.started`, and `invoice.marked_as_paid` to keep your system up to date.\
✅ **Secure API Calls**: Always use HTTPS and a valid API key.\
✅ **Clear Terms**: Clearly communicate the subscription and billing terms to customers.
