The only thing you are charged for are messages . Retries are free.

In the pay-as-you-go plan, the price is $1 per 100K messages. Here are the price and limits of the plans.

FeatureFreePay as you goPro / Enterprise
Max Messages per Day500500,000up to 100M
Max Requests per Second100100Custom
Max Message Size1MB1MB10MB
Max Number of Topics120infinite
Max Number of Endpoints per Topic100100infinite
Max Retry Count3520
Max Delay7 days30 daysCustom
Max HTTP Connection Timeout2 min5 minCustom
Max DLQ Retention3 days7 days30 days
Max DLQ Size (Number of Messages)1,00010,000Custom
Max Events Size (Number of logs to keep)10,00010,000Custom
Price per 100K MessagesN/A$1Custom

Most of the above are soft limits, contact us if you have custom needs.

Free tier

The free tier includes 500 Messages per day. Afterwards we will no longer accept new requests.

Pay as You Go

Upstash limits your monthly usage for QStash to daily 500,000 in pay-as-you-go plan. If you are expecting to exceed this limit, contact us for the Pro or Enterprise plans.

Pro / Enterprise

We give you a fixed price for higher throughput needs and custom quotas. We reserve isolated resource to guarantee the scalability for high volumes. Here are the plans and prices:

PlanPro 1MPro 10MEnterprise
Max Messages / Day1M10M100M
Max Messages / Sec10001000Custom
Price / Month$180$420Contact Us

Pro and Enterprise plans have a minimum term of 1 month, afterwards you can cancel any time.

Examples:

Publish to single API endpoint

  1. You make a request to /v2/publish/<your-api-url>
  2. We make an HTTP request to your API and it returns a 500 status code
  3. After some time we retry to deliver the message and it succeeds

In total, you would be charged for 1 message.

Example “every hour”

When your schedule triggers every hour, at the end of the month this would be around 24 * 30 = 720 billed messages.

Publish to topic

Let’s assume you have a topic and 2 endpoints (A and B) subscribed to it.

  1. You make a request to /v2/publish/<your-topic>
  2. We make an HTTP request to each of your endpoints.

In total this would be 2 messages.