# Not enough credits

> insufficient-credits: HTTP 402. Top up at the top_up_url, then retry with the same machine quote_id (or the same enrichment request).

Source: https://emailmovers.com/mydatahub/docs/errors/insufficient-credits

`insufficient-credits` is returned with HTTP status 402. Its type URI is `https://emailmovers.com/mydatahub/docs/errors/insufficient-credits`.

## What it means

The balance does not cover the machine quote. Nothing was charged. The problem carries the quote, the credits required and available, and a Stripe Checkout top_up_url on mydatahub.emailmovers.com.

Money never moves inside an agent host: a person tops up on our domain, then the same quote_id is retried.

## What to do

Top up at the top_up_url, then retry with the same machine quote_id (or the same enrichment request).

## Members it adds

Beyond `type`, `title`, `status`, `detail`, `code` and `next_step`, this problem carries `quote_id`, `quote`, `credits_required`, `credits_available` and `top_up_url`. They are published in the `InsufficientCreditsProblem` schema of the OpenAPI document.

## Example

```json
{
  "type": "https://emailmovers.com/mydatahub/docs/errors/insufficient-credits",
  "title": "Not enough credits",
  "status": 402,
  "code": "insufficient-credits",
  "detail": "The quote needs 5,000 credits and the balance is 1,200.",
  "next_step": "Top up at the top_up_url, then retry with the same machine quote_id (or the same enrichment request).",
  "quote_id": "qte_01JB4M2R6T1Y5W8ZAK8Q2V7XN3",
  "credits_required": 5000,
  "credits_available": 1200,
  "top_up_url": "https://mydatahub.emailmovers.com/billing/top-up"
}
```

## See also

- [Spending safely](https://emailmovers.com/mydatahub/docs/spending-safely.md)
- [Quotes and orders](https://emailmovers.com/mydatahub/docs/quotes-and-orders.md)

All problem types are listed on [Errors](https://emailmovers.com/mydatahub/docs/errors.md).
