<?php
$page_lang = 'en';
$page_title = 'Corporate merch API — client integration | Corp-Merch.MX';
$page_description = 'REST API for corporate clients: quote, order, status, quality evidence, tracking number and CFDI 4.0 download.';
$og_image = '/assets/images/og-sdk.png';
$page_section = 'sdk';
$page_slug    = 'merch-api';

$labels = [
    'name' => 'Name', 'name_placeholder' => 'Your name',
    'contact' => 'Work email', 'contact_placeholder' => 'name@company.com',
    'company' => 'Company', 'company_placeholder' => 'Company legal name',
    'message' => 'Brief', 'message_placeholder' => 'Tell us about your technical integration case...',
    'submit' => 'Request sandbox access', 'sending' => 'Sending...',
    'turnstile_error' => 'Please confirm you are not a robot'
];

require __DIR__ . '/../../../includes/header.php';
?>
<link rel="alternate" hreflang="es" href="https://corp-merch.com.mx/es/pages/sdk/api-merch">
<link rel="alternate" hreflang="en" href="https://corp-merch.com.mx/en/pages/sdk/merch-api">
<link rel="alternate" hreflang="ru" href="https://corp-merch.com.mx/ru/pages/sdk/api-merch">
<nav class="breadcrumbs"><a href="/en/">Home</a><span class="sep">&rsaquo;</span><span>API</span><span class="sep">&rsaquo;</span><span>Merch API</span></nav>

<section class="hero">
  <div class="container">
    <div class="hero-content">
      <p class="eyebrow">REST · JSON · Bearer token · Sandbox</p>
      <h1>Corporate merch API</h1>
      <p class="hero-subtitle">REST API for corporate clients running their own procurement system, ERP or buying platform who need to integrate the merch operation with Quote, order, real-time status, quality evidence, tracking number and CFDI 4.0 download without going through email.</p>
      <div class="hero-cta"><a href="#contact-form" class="btn btn-primary">Request sandbox access</a></div>
    </div>
  </div>
</section>

<section class="section"><div class="container">
  <h2>What the API is for</h2>
  <p>The API solves the six touchpoints between the client's procurement system and the shop's operation: <strong>quote</strong> with line breakdown, MOQ, lead time, print method and unit price in MXN before VAT; <strong>order</strong> with brief confirmation, sizes per SKU and delivery address; <strong>status</strong> in real time across the shop's stages (reception, art validation, production, quality control, packing, delivery); <strong>quality evidence</strong> with cut photo and signed report when AQL sampling applies; <strong>tracking number</strong> from the logistics operator; <strong>CFDI 4.0</strong> with XML and PDF download when issued.</p>
  <p>The API is not a marketing layer and not a shopping cart. It is a technical integration tool for clients with structured operations. If you operate with paper purchase orders and an owner who sends email, the API is not for you — and that is fine, not all clients need it.</p>
</div></section>

<section class="section section-alt"><div class="container">
  <h2>Architecture and authentication</h2>
  <p>The API exposes REST endpoints with JSON payload. Authentication is via Bearer token delivered to the client's technical owner after the mutual NDA is signed. Each token is bound to a client account and a set of scopes: quote, order, status, evidence, billing. Endpoints are documented with OpenAPI 3.1 and the sandbox replicates production behavior with synthetic data.</p>
  <p>Rate limit is 60 requests per minute per token, with sliding window. When the client's procurement system requires higher volume, it is evaluated case by case and the rate limit is adjusted with prior notice. Webhooks are sent from the shop to the client's system on key events: quote approved, production started, quality control passed, order shipped, CFDI issued. The webhook URL is configured in the client panel.</p>
</div></section>

<section class="section"><div class="container">
  <h2>Main endpoints</h2>
  <p>The API contract is published as technical reference once the NDA is signed. The main endpoints are: <code>POST /v1/quotes</code> to create a quote from a structured brief; <code>GET /v1/quotes/{id}</code> to retrieve the quote with its breakdown; <code>POST /v1/orders</code> to confirm an order from an approved quote; <code>GET /v1/orders/{id}</code> to check order status at any moment; <code>GET /v1/orders/{id}/timeline</code> to reconstruct the history with timestamps per stage; <code>GET /v1/orders/{id}/evidence</code> to download quality control photos and, when applicable, the signed AQL report; <code>GET /v1/orders/{id}/cfdi</code> to download the CFDI 4.0 in XML and PDF; <code>GET /v1/shipments/{tracking}</code> to query the carrier's tracking number.</p>
  <p>The sandbox exposes the same endpoints with synthetic data from already-delivered clients, products and orders. Clients with their own development team can test the integration without affecting their real operation.</p>
</div></section>

<section class="section section-alt"><div class="container">
  <h2>Compatibility with common systems</h2>
  <p>We have integrated the API with clients running SAP Ariba, Coupa, Oracle Procurement Cloud and Latin American procurement platforms. Integration is normally on the client side: the procurement system calls the Corp-Merch.MX API to create a quote, receives the structured response, and triggers the internal approval flow before confirming the order. The CFDI 4.0 invoice is downloaded from the corresponding endpoint and reconciled against the PO in the ERP.</p>
  <p>For clients without deep integration, we offer a web panel with the same information the API exposes: quote, order, status, evidence, tracking number and CFDI download. The panel is the human version of the API and is delivered at no additional cost as part of the service.</p>
</div></section>

<section class="section"><div class="container">
  <h2>Security and compliance</h2>
  <p>Production endpoints run over HTTPS with TLS 1.3. Bearer tokens rotate every 90 days or whenever the client's technical owner changes. Webhooks are signed with HMAC-SHA256 so the client system verifies that the call comes from Corp-Merch.MX. Personal data processed by the API are those needed for billing and delivery — name, email, RFC when applicable, address — and are handled per the Federal Law on Protection of Personal Data Held by Private Parties.</p>
  <p>Access logs are kept for 12 months for audit purposes. When the client requires evidence for its own internal audit or for a PROFECO or SAT visit, we deliver the access log for the corresponding period with authorization from the client's owner.</p>
</div></section>

<section class="section section-alt"><div class="container">
  <h2>Cases where the API does not apply</h2>
  <p>There are three cases where the API is not the right tool. <strong>Client with one order a year</strong>: the cost of technical integration outweighs the benefit of automating; the web panel is enough. <strong>Client without a structured procurement system</strong>: when the order is raised by email and approved by wet signature, the API adds friction without simplifying. <strong>Exploratory brief</strong>: when the client does not yet know exactly what they need, the brief with a commercial owner is still the right path. The API applies when the client already has a recurring flow with Corp-Merch.MX and wants to automate.</p>
</div></section>

<section id="contact-form" class="section"><div class="container">
  <h2>Request sandbox access</h2>
  <p>If you have your own technical team and want to evaluate the integration, we deliver a sandbox token, OpenAPI 3.1 documentation and a typical test case. The transition to production happens after the mutual NDA is signed.</p>
  <?php require __DIR__ . '/../../../includes/form.php'; ?>
</div></section>

<section class="section role-note"><div class="container">
  <p class="role-note-text">The Corp-Merch.MX API is a technical tool for corporate clients with a structured procurement system. It is not an end-consumer sales service and not a shopping cart. Endpoints, scopes and rate limits are documented to the client after the NDA is signed. Corp-Merch.MX operates independently and the API information reflects the capabilities at the time of publication.</p>
</div></section>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","name":"Corporate merch API","description":"REST API for corporate merch: quote, order, status, quality evidence, tracking number and CFDI 4.0 download.","publisher":{"@type":"Organization","name":"Corp-Merch.MX"}}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Does the API have a fee?","acceptedAnswer":{"@type":"Answer","text":"No additional fee. It is delivered as part of the service to recurring clients who want to automate."}},{"@type":"Question","name":"How do I get sandbox access?","acceptedAnswer":{"@type":"Answer","text":"Request access via the form on this page. We deliver a token, OpenAPI 3.1 documentation and a typical test case."}},{"@type":"Question","name":"How long does the integration take?","acceptedAnswer":{"@type":"Answer","text":"It depends on the client system. On average, between two and six weeks from technical kickoff to the first production order."}},{"@type":"Question","name":"Does the API run in Mexico or another region?","acceptedAnswer":{"@type":"Answer","text":"The endpoints run in a region with presence in Mexico. Typical latency from CDMX, Guadalajara and Monterrey is under 80 ms."}}]}
</script>
<?php require __DIR__ . '/../../../includes/footer.php'; ?>
