notpanel
ServicesPricingFAQGiveawayAPI
notpanel

Followers, likes and views for every platform.

The catalog combines directly operated services with capacity from vetted partners. Current availability, timing, refill, and drip-feed support are shown per service; routing and partner identities remain confidential.

Product

  • Services
  • Pricing
  • Price Index
  • Affiliate Program

Resources

  • API
  • Blog
  • FAQ
  • Status

Company

  • About
  • Why NotPanel
  • Contact Us

Legal

  • Terms of Service
  • Privacy Policy
  • Refund Policy

© 2026 NotPanel. All rights reserved.

support@notpanel.com
notpanel
API documentation
+
API documentation

Introduction

  • Overview
  • Getting started
  • Authentication
  • Rate limits
  • Errors

Catalog

  • List services
  • Advanced catalog
  • Service types

Orders

  • Place order
  • Order status
  • Refund quote
  • Refill
  • Cancel

Account

  • Account status
  • Balance

Webhooks

  • Manage webhooks

Reference

  • Changelog
  • SDKs & libraries

Need help?

support@notpanel.com →

Cancel an order or subscription

Cancels one order or a sequential batch of up to 100 account-owned IDs. Every ordinary API order is still eligible only during its own 15-second pre-dispatch grace window; eligible subscriptions may settle asynchronously.

POSThttps://notpanel.com/api/v3action=cancel
API key requiredRate limited (shared account + IP + action)Body: application/x-www-form-urlencoded
Supply either one numeric order ID or comma-separated orders IDs, up to 100. Older UUID and sub_ references remain accepted. Bulk mode never extends an order's cancellation window.

Parameters

NameTypeDescription
keyRequiredstringYour API key.
actionRequiredstringMust be the literal string "cancel".
orderConditionalstringOne numeric ordinary-order or eligible upstream-managed subscription ID returned by action=add.
ordersConditionalstring (CSV)Comma-separated ordinary-order or eligible subscription IDs, maximum 100. The response preserves input order and returns success or error per item.

Example request

Replace YOUR_API_KEY with the key generated under your dashboard’s API page.

curl -X POST https://notpanel.com/api/v3 \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "key=YOUR_API_KEY&action=cancel&order=7001"
const res = await fetch("https://notpanel.com/api/v3", {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({
    key: "YOUR_API_KEY",
    action: "cancel",
    order: "7001",
  }),
});

const data = await res.json();
console.log(data);
import requests

res = requests.post(
  "https://notpanel.com/api/v3",
  data={
    "key": "YOUR_API_KEY",
    "action": "cancel",
    "order": "7001",
},
)
print(res.json())
<?php
$body = http_build_query([
    'key' => 'YOUR_API_KEY',
    'action' => 'cancel',
    'order' => '7001',
]);

$response = file_get_contents('https://notpanel.com/api/v3', false, stream_context_create([
    'http' => [
        'method'  => 'POST',
        'header'  => "Content-Type: application/x-www-form-urlencoded\r\n",
        'content' => $body,
        'ignore_errors' => true,
    ],
]));

print_r(json_decode($response, true));

Example response

{
  "order": 7001,
  "status": "Canceled",
  "status_key": "cancelled",
  "cancel": 1,
  "refund": "0.50",
  "refund_pending": 0
}

Common errors

StatusBodyCause
400{"error":"Invalid subscription order reference"}This error is returned only when a legacy sub_ reference is malformed. A well-formed but unknown subscription reference returns 404 Subscription not found.
409{"error":"Cancellation window has ended or the order has already started"}The ordinary order has left its 15-second cancellation window or is no longer pending. The single request returns 409.
409{"error":"Order is already completed"}The item is already in a non-cancellable terminal state. A retry of an earlier successful cancellation returns that same successful result instead.
409{"error":"Order is already refunded"}The item is already in a non-cancellable terminal state. A retry of an earlier successful cancellation returns that same successful result instead.
404{"error":"Order not found"}No order or eligible subscription with that identifier belongs to this account. A single request returns 404.
409{"error":"Subscription is currently executing; retry cancellation shortly","error_code":"CANCELLATION_IN_PROGRESS","retryable":true}The subscription is currently executing. The subscription cancellation request returns 409 with Retry-After: 2; retry shortly.
400{"error":"Subscription cancellation is not allowed","error_code":"CANCELLATION_NOT_ALLOWED_SUBSCRIPTION"}The subscription is already terminal and cannot be cancelled. The response is 400.
404{"error":"Subscription not found"}No eligible account-owned subscription exists for that reference, or it uses the wrong management mode. The response is 404.
429{"error":"Rate limit exceeded for cancel"}The cancellation action limit was reached. Retry after the reported delay; the response is 429.

Bulk cancellation

Send orders=7001,7002 to process up to 100 IDs sequentially. Each ordinary order independently passes the same ownership, pending-state, and 15-second checks as a single cancellation. An ineligible item returns an error without changing that order; it does not block other eligible items.

[
  {
    "order": 7001,
    "status": "Canceled",
    "status_key": "cancelled",
    "cancel": 1,
    "refund": "0.50",
    "refund_pending": 0
  },
  {
    "order": 7002,
    "error": "Cancellation window has ended or the order has already started"
  }
]

Cancellation outcomes and refunds

An ordinary API order is held for 15 seconds before dispatch. Cancelling it while it is still pending atomically closes the order and recognizes a full refund. refund is the amount already credited to Wallet; if wallet headroom temporarily prevents the credit, refund_pending=1. Repeating the cancellation returns the same successful outcome without duplicating money.

An eligible subscription cancellation may initially return status=Processing, status_key=cancelling, cancel=0, and refund=0 while terminal confirmation is pending. For ordinary orders and subscriptions, refund remains the amount already credited to Wallet; refund_pending=1 means recognized refund money is still waiting for Wallet headroom.

{
  "order": 7002,
  "status": "Processing",
  "status_key": "cancelling",
  "cancel": 0,
  "refund": "0.00",
  "refund_pending": 0
}

For a pending subscription cancellation, poll action=status with the same numeric order ID until the result becomes terminal.