Ender Docs

Charge Checker

Validate credit cards by charging a small amount through payment gateways.

Overview

The Charge Checker validates cards by actually charging a small amount. This provides the most reliable validation as it tests the complete payment flow.

This checker will actually charge the card. Use responsibly and only with authorization.

Endpoint

POST /v1/checkers/charge

Supported Gates

GatewayStatusMin AmountGate IDAccess
Stripe✅ Live$0.50stripe-custom-01FREE
Stripe 2✅ Live$0.50stripe-custom-02PREMIUM
Clover✅ Live$2 (fixed)clover-01PREMIUM

Request

Headers

Authorization: YOUR_API_KEY
Content-Type: application/json

Body Parameters

ParameterTypeRequiredDescription
gateIdstringGate identifier (see table above)
ccstringCard in format: number|mm|yy|cvv
amountstringAmount to charge (defaults to gate minimum)
proxystringProxy URL (system proxy used if omitted)

Example Request

curl -X POST https://api.ender.black/v1/checkers/charge \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "gateId": "stripe-custom-01",
    "cc": "4111111111111111|12|25|123",
    "amount": "5.00",
    "proxy": "http://user:pass@ip:port"
  }'

Response

Success Response (Charged)

{
  "success": true,
  "data": {
    "charged": true,
    "live": true,
    "amount": 5.0,
    "currency": "USD",
    "message": "Charged USD 5.00",
    "status": null
  }
}

Response Fields

FieldTypeDescription
chargedbooleanWhether the card was successfully charged
livebooleanWhether the card is live
amountnumberAmount that was charged
currencystringCurrency code (USD, EUR, etc.)
messagestringStatus message
statusstring|nullAdditional status code

Status Interpretation

chargedliveMeaningCredits
trueanyCard charged successfully5
falsetrueCard is live but not charged3
falsefalseCard is dead/declined1
Error-Technical error0
Add +1 credit when using system proxy.

Get Available Gates

GET /v1/checkers/charge/gates

Response:

{
  "success": true,
  "data": {
    "gates": [
      {
        "type": "stripe",
        "gates": [
          {
            "id": "stripe-custom-01",
            "name": "Stripe Custom 01",
            "minAmount": "$0.50",
            "currency": "USD"
          },
          {
            "id": "stripe-custom-02",
            "name": "Stripe Custom 02",
            "minAmount": "$0.50",
            "currency": "USD"
          }
        ]
      },
      {
        "type": "clover",
        "gates": [
          {
            "id": "clover-01",
            "name": "Clover 01",
            "minAmount": "$2 (fixed)",
            "currency": "USD"
          }
        ]
      }
    ]
  }
}

Error Responses

Amount Below Minimum

{
  "success": false,
  "data": {
    "error": "Amount must be at least 3"
  }
}

Invalid Gate ID

{
  "success": false,
  "data": {
    "error": "Invalid gate ID"
  }
}

Complete Example

async function checkCharge(apiKey, card, gateId, amount, proxy) {
  try {
    const body = {
      gateId,
      cc: card,
    };
 
    if (amount) body.amount = amount;
    if (proxy) body.proxy = proxy;
 
    const response = await fetch("https://api.ender.black/v1/checkers/charge", {
      method: "POST",
      headers: {
        Authorization: apiKey,
        "Content-Type": "application/json",
      },
      body: JSON.stringify(body),
    });
 
    const data = await response.json();
 
    if (!data.success) {
      return {
        status: "error",
        message: data.data.error,
      };
    }
 
    const {
      charged,
      live,
      amount: chargedAmount,
      currency,
      message,
    } = data.data;
 
    if (charged) {
      return {
        status: "charged",
        amount: chargedAmount,
        currency,
        message,
      };
    } else if (live) {
      return { status: "live", message };
    } else {
      return { status: "dead", message };
    }
  } catch (error) {
    return { status: "error", message: error.message };
  }
}
 
// Usage
const result = await checkCharge(
  "YOUR_API_KEY",
  "4111111111111111|12|25|123",
  "stripe-custom-01",
  "10.00",
  "http://user:pass@ip:port"
);
 
console.log(result);
// { status: 'charged', amount: 10.00, currency: 'USD', message: 'Charged USD 10.00' }

Best Practices

  1. Start with minimum amounts to reduce impact
  2. Use reliable proxies for better success rates
  3. Monitor your gates for any issues
  4. Handle all response types properly

On this page