Matrix: M16M17
Open in panel — /app/credits
Getting Started

Billing & Credits

PostMTA uses a credit-based pricing model. You purchase credits upfront and spend them as you send. Credits roll over month to month, and you can set up auto-reload to never run out of credit mid-campaign. This page covers everything from purchasing credits to downloading invoices.

Credits Model

Cost Per Thousand Emails

PostMTA pricing is volume-based. The more you send, the lower your effective cost per thousand emails (CPM). Pricing is applied per workspace; there is no per-user or per-domain additional charge.

Pricing Tiers

TierMonthly CommitmentCost per 1,000 EmailsIncluded Features
Starter$0 (pay-as-you-go)$1.001 sending domain, shared IP, basic analytics
Growth$79/month$0.755 sending domains, 2 dedicated IPs, full analytics, webhooks
EnterpriseCustomVolume negotiatedUnlimited domains, custom IP pool, SLA, dedicated support

How Credits Are Deducted

Credits are deducted when a message is accepted into the PostMTA delivery pipeline — not when it is delivered. A message that is accepted but later bounces or is suppressed still consumes credits.

Message accepted by PostMTA API  -->  credit deducted
Message rejected (suppressed)        -->  no credit deducted

Scheduled messages consume credits at the time they are accepted for scheduling, not when they are sent.

Credit Calculation

credits_used = ceiling(messages_sent / 1000) * price_per_thousand

Example: sending 12,847 messages at $1.00 per 1,000:

ceil(12847 / 1000) = 13 batches
13 * $1.00 = $13.00

Partial Batch Rounding

Partial batches are rounded up to the nearest thousand. Sending 501 messages costs the same as sending 1,000. Plan your campaign sizes accordingly to avoid waste from rounding on small sends.

Top-Up via Dashboard

Purchasing Credits

Navigate to /app/credits in the dashboard. Select the credit pack you want to purchase and complete the checkout. Credit packs are available in the following sizes:

PackCreditsPriceEffective CPM
Starter Pack1,000$1.00$1.00
Standard Pack10,000$9.00$0.90
Growth Pack50,000$40.00$0.80
Scale Pack250,000$175.00$0.70
Enterprise Pack1,000,000$600.00$0.60

Payment Methods

PostMTA accepts the following payment methods:

All credit card transactions are processed through Stripe. PostMTA does not store card details.

Top-Up via API

curl -X POST https://api.postmta.com/v1/credits/topup \
  -H "Authorization: Bearer pmta_l...xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 10000,
    "payment_method_id": "pmt_01HXABC123DEF456",
    "pack_id": "pack_standard"
  }'

Response:

{
  "data": {
    "transaction_id": "txn_01HXABC123DEF456",
    "credits_added": 10000,
    "new_balance": 14231,
    "amount_charged": 9.00,
    "currency": "USD",
    "created_at": "2026-07-18T10:00:00Z"
  }
}

Balance Enquiry

curl https://api.postmta.com/v1/credits/balance \
  -H "Authorization: Bearer pmta_l...xxxx"
{
  "data": {
    "workspace_id": "ws_01HXABC123DEF456",
    "balance": 14231,
    "plan": "Growth",
    "credit_limit": null,
    "auto_reload_enabled": true,
    "auto_reload_threshold": 5000,
    "auto_reload_amount": 10000
  }
}

Auto-Reload

Overview

Auto-reload automatically purchases a credit pack when your balance falls below a configurable threshold. This prevents mid-campaign credit exhaustion, which would cause messages to be rejected with a 429 CREDIT_LIMIT_EXCEEDED response.

Configure Auto-Reload

Set the threshold (minimum balance) and the top-up amount in the dashboard under /app/credits → Auto-Reload, or via the API:

curl -X PUT https://api.postmta.com/v1/credits/auto-reload \
  -H "Authorization: Bearer pmta_l...xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "threshold": 5000,
    "amount": 10000,
    "payment_method_id": "pmt_01HXABC123DEF456"
  }'

Behavior

Auto-Reload Example

You have a balance of 8,000 credits with a threshold of 5,000 and an auto-reload amount of 10,000. You launch a campaign that consumes 6,000 credits over 2 hours:

Balance at launch:  8,000
After campaign send:  2,000  (below threshold of 5,000)
Auto-reload triggers: 2,000 --> 12,000
Remaining campaign:   continues without interruption

Credit Rollover

Overview

Unused credits roll over from month to month indefinitely. There is no expiration on credits for Growth and Enterprise plans. Starter plan credits roll over for up to 12 months from the date of purchase.

Rollover Example

Month 1:  Purchase 50,000 credits
Month 1:  Send 38,000 credits worth of email
Month 1:  Remaining: 12,000 credits
Month 2:  12,000 credits carry forward + purchase 50,000 more
Month 2:  Send 45,000 credits worth of email
Month 2:  Remaining: 17,000 credits
Month 3:  17,000 credits carry forward...

Rollover in Reports

The credits transaction report shows the running balance and distinguishes between purchased credits, rolled-over credits, and credits consumed:

{
  "transaction_id": "txn_01HXABC123DEF456",
  "type": "credit_purchase",
  "amount": 10000,
  "balance_after": 14231,
  "rollover_credits": 4231,
  "purchased_credits": 10000,
  "created_at": "2026-07-01T00:00:00Z"
}

Invoice Generation

Overview

Invoices are generated on the first of each month for the previous billing period (Month 1 – Month 30). Invoices include all credit purchases, auto-reload transactions, plan fees, and any dedicated IP charges.

Invoice Contents

Each invoice includes:

Download Invoice

Navigate to /app/credits → Invoices. Select the billing period and click Download PDF. You can also retrieve invoices programmatically:

curl https://api.postmta.com/v1/credits/invoices \
  -H "Authorization: Bearer pmta_l...xxxx"
{
  "data": [
    {
      "invoice_id": "inv_01HXABC123DEF456",
      "period_start": "2026-06-01",
      "period_end": "2026-06-30",
      "total_amount": 149.00,
      "currency": "USD",
      "status": "paid",
      "pdf_url": "https://api.postmta.com/v1/credits/invoices/inv_01HXABC123DEF456/pdf",
      "created_at": "2026-07-01T00:00:00Z"
    }
  ]
}

Receipts for Individual Purchases

Each credit purchase generates its own receipt. Receipts are emailed to workspace Owners and are also accessible via the API:

curl https://api.postmta.com/v1/credits/transactions \
  -H "Authorization: Bearer pmta_l...xxxx"
{
  "data": [
    {
      "transaction_id": "txn_01HXABC123DEF456",
      "type": "credit_purchase",
      "amount": 10000,
      "amount_charged": 9.00,
      "currency": "USD",
      "invoice_id": "inv_01HXABC123DEF456",
      "created_at": "2026-07-18T10:00:00Z"
    }
  ]
}

Plan Tiers

Starter Plan

Growth Plan

Enterprise Plan

Upgrading and Downgrading

You can upgrade your plan at any time. The upgrade takes effect immediately and you are charged a prorated amount for the remainder of the billing period.

Downgrades take effect at the start of the next billing period. You retain access to the current plan's features until the period ends. If your usage requires features not available in the target plan, you will be prompted to adjust usage before the downgrade.

Dedicated IP Pricing

IP Pricing

ItemPriceNotes
Additional dedicated IP$25/month per IPApplies to Starter and Growth plans
IP warmup managementIncludedAutomatic epoch-based shaping
IP rotationIncludedAvailable on Growth and Enterprise
Custom IP pool assignmentIncludedAvailable on Growth and Enterprise

Shared IPs are included in all plans at no extra charge. Shared IPs are managed collectively by PostMTA; you cannot assign specific recipients or campaigns to a shared IP.

IP Count Recommendation

recommended_ips = ceiling(max_daily_volume / 50000)

Example: if your peak daily volume is 150,000 emails:

ceil(150000 / 50000) = 3 IPs

Credits Refund Policy

Eligibility

Credits may be refunded under the following conditions:

Refund Process

Contact support via the dashboard or at hello@netwit.ca. Refund requests are reviewed within 3 business days. Approved refunds are processed to the original payment method within 5-10 business days.

Not Eligible for Refund

Workspace Cancellation

To cancel your workspace, navigate to /app/settings → Danger Zone → Cancel Workspace. Cancellation immediately:

Any remaining credit balance is refunded within 30 days of cancellation confirmation.

Billing FAQ

What happens if I exceed my plan volume?

PostMTA does not hard-cut off sending when you exceed your plan's volume tier. Growth plan emails beyond the tier threshold are billed at the lower rate automatically. Enterprise customers have a committed volume agreement; overages beyond the commitment are billed at the overage rate specified in the contract.

What happens when my balance reaches zero?

When your balance reaches zero (or negative), PostMTA stops accepting new messages and returns 429 CREDIT_LIMIT_EXCEEDED for all injection attempts. In-flight messages already accepted continue to be delivered. Auto-reload fires if it is configured; otherwise, you must manually purchase credits.

Are taxes included?

Prices shown are in USD and exclude applicable taxes (VAT, GST, sales tax) based on your billing address. Tax is calculated and shown on the invoice before payment.

Is the plan fee prorated on upgrade?

Yes. When you upgrade mid-month, you are charged only for the remaining days in the billing period at the new plan rate, minus any credit already paid for the current period.