Skip to content

API Details ​

Technical specification for the CashMyCell Order Completion API endpoint.

Endpoint Information ​

Base URL ​

https://api.cashmycell.com

Path ​

/api/v1/public/order-complete

Method ​

GET

Full URL Example ​

https://api.cashmycell.com/api/v1/public/order-complete?status=COMPLETED&order_value=1499&cmc_id=abc123xyz&reference_id=pqr890mno&ts=1704067200000

Request Parameters ​

All parameters are passed as query parameters in the URL.

ParameterTypeRequiredDescriptionExample
statusStringYesOrder status indicatorCOMPLETED
order_valueString/NumberYesTotal order amount in applicable currency1499
cmc_idStringYesClick identifier provided by CashMyCellabc123xyz789
reference_idStringOptionalUnique order identifier generated by the partner system to help reconcile and track the transaction on their endorder_123
tsNumberYesTimestamp in milliseconds (Unix time)1704067200000

Parameter Details ​

status ​

  • Value: COMPLETED
  • Purpose: Indicates successful order completion
  • Note: Only completed orders should trigger this endpoint

order_value ​

  • Format: Numeric string or number
  • Example: "1499" or 1499
  • Currency: Use the order value in your system's currency (no currency conversion)
  • Decimal: Can include decimals (e.g., "14.99")

cmc_id ​

  • Source: Retrieved from cookie set by Script 1
  • Format: URL-safe string
  • Importance: Required to match conversion with CashMyCell click
  • Encoding: Use encodeURIComponent() for safe transmission

reference_id ​

  • Source: Generated by the partner’s internal order management or transaction system
  • Format: URL-safe string
  • Importance: Used by the partner to reconcile, track, and validate orders within their own system, ensuring accurate reporting and payout matching
  • Encoding: Use encodeURIComponent() for safe transmission

ts (Timestamp) ​

  • Format: Unix timestamp in milliseconds
  • Generation: Use Date.now() in JavaScript
  • Purpose: Server-side timing validation
  • Example: 1704067200000 (January 2, 2024, 12:00 PM UTC)

Request Example ​

JavaScript/Fetch API ​

javascript
const cmcId = 'abc123xyz789'; // Replace with actual cmc_id stored in cookie
const referenceId = 'order_123'; // Replace with actual unique identifier 
const orderValue = '1499'; //Replace with actual order value
const timestamp = Date.now();

const url = `https://api.cashmycell.com/api/v1/public/order-complete?` +
  `status=COMPLETED&` +
  `order_value=${encodeURIComponent(orderValue)}&` +
  `cmc_id=${encodeURIComponent(cmcId)}&` +
  `reference_id=${encodeURIComponent(referenceId)}&` +
  `ts=${timestamp}`;

// Using Image beacon (recommended)
const img = new Image();
img.src = url;

// Or using Fetch
fetch(url)
  .then(response => console.log('Tracked'))
  .catch(error => console.error('Tracking error:', error));

cURL ​

bash
curl "https://api.cashmycell.com/api/v1/public/order-complete?status=COMPLETED&order_value=1499&cmc_id=abc123xyz789&reference_id=order_123&ts=1704067200000"

Python Requests ​

python
import requests
import time

cmc_id = 'abc123xyz789' # Replace with actual cmc_id stored in cookie
reference_id = 'order_123' # Replace with actual unique identifier 
order_value = '1499' # Replace with actual order value
timestamp = int(time.time() * 1000)

url = 'https://api.cashmycell.com/api/v1/public/order-complete'
params = {
    'status': 'COMPLETED',
    'order_value': order_value,
    'cmc_id': cmc_id,
    'reference_id': reference_id,
    'ts': timestamp
}

response = requests.get(url, params=params)
print(response.status_code)

Response ​

Success Response (2xx) ​

The API returns a successful response regardless of parameter values. The response may be:

  • 204 No Content (typical)
  • 200 OK with minimal body
  • Image response (when using tracking pixel)

No specific response body is guaranteed, as this is designed as a fire-and-forget tracking endpoint.

Response Format ​

javascript
// Minimal response (may vary)
HTTP/1.1 200 OK
Content-Type: image/gif
Content-Length: 43

GIF89a...

Expected Behavior ​

  • Request is asynchronously processed
  • Response received immediately
  • Data recorded on CashMyCell servers
  • No correlation ID returned

Important Implementation Details ​

Encoding ​

Always URL-encode parameters that may contain special characters:

javascript
// Correct
encodeURIComponent('$1,499.99') // %241%2C499.99

// Wrong (will fail)
'$1,499.99' // Contains special characters

Using an Image beacon is preferred as it:

  • Works cross-domain without CORS issues
  • Fires asynchronously without blocking
  • Minimal performance impact
  • Proven reliable tracking method
javascript
const img = new Image();
img.src = trackingUrl;
// No need to wait for response

CORS Considerations ​

If using Fetch API, be aware of CORS headers. The tracking pixel method avoids CORS issues entirely.

Timestamp Requirements ​

  • Must be current: Timestamp should be within reasonable window (±5 minutes recommended)
  • Milliseconds: Use milliseconds, not seconds
  • Server sync: Ensure client clock is reasonably synchronized

Verification Steps ​

Step 1: Test the URL ​

Visit the URL in your browser:

https://api.cashmycell.com/api/v1/public/order-complete?status=COMPLETED&order_value=100&cmc_id=test123&ts=1704067200000

You should receive a response (may be invisible image).

Step 2: Check Network Tab ​

In browser DevTools:

  1. Open Network tab
  2. Place order on your website
  3. Look for request to api.cashmycell.com/api/v1/public/order-complete
  4. Verify response status is 200 or 204

Step 3: Verify Conversion ​

In CashMyCell dashboard, check if conversion appears within a few minutes.


Error Handling ​

Missing Parameters ​

If parameters are missing, the request may be:

  • Silently ignored
  • Rejected with 400 error
  • Logged for debugging

Best practice: Always include all required parameters.

Invalid cmc_id ​

  • Conversion won't match to CashMyCell click
  • No error response (silent fail)
  • Check cookie exists before sending

Duplicate Requests ​

If you send the same request twice:

  • First: Recorded normally
  • Second: May be deduplicated or recorded separately
  • Best practice: Add guard to prevent duplicate Script 2 execution

Rate Limiting ​

The /api/v1/public/order-complete endpoint is designed to handle high volume:

  • No strict rate limits per user
  • Fair use policies apply
  • Excessive requests may be throttled

Reasonable usage (one request per successful order) is always safe.


Migration from Old API ​

If you're upgrading from a previous tracking method:

  1. Keep old and new tracking in parallel (2-3 weeks)
  2. Monitor conversion data consistency
  3. Verify CashMyCell team can see conversions
  4. Remove old tracking when confident

Frequently Asked Questions ​

Can I send multiple orders in one request? ​

No. One request per order only. Send separate requests for each conversion.

What happens if cmc_id is invalid? ​

The request will still succeed (200/204), but conversion won't be attributed to any click. Always verify the cookie exists.

Is the endpoint available offline? ​

No, internet connectivity is required to reach the endpoint. If offline, the request will fail silently (no UI impact).

Can I batch requests? ​

No. Send one request per conversion. Batching is not supported.

How long does data take to appear? ​

Conversions typically appear in CashMyCell dashboard within 1-2 minutes.


Support ​

For technical support or integration questions:

CashMyCell Conversion Tracking API · Developed by Panicle Tech