Comercios

Registra un comercio con sus sitios, medios de pago e integraciones, consúltalo completo y actualízalo. La creación y la actualización son asíncronas: responden con un proceso cuyo resultado se consulta después.


POST/api/merchants

Crear un comercio

Valida el comercio completo y lo acepta para su registro. La respuesta llega antes de que el comercio exista: trae un processId con el que consultar el resultado.

El selector de la solicitud recorre tres escenarios: el cuerpo mínimo, un comercio con sus sitios y medios de pago —donde se ve lo que un sitio obliga a enviar— y el cuerpo con todos los campos que la petición acepta.

Las tres colecciones del cuerpo —integrations, paymentMethods y sites— tienen reglas propias de identidad y actualización que se explican en Integraciones, Medios de pago y Sitios.

Cabecera

  • Name
    Authorization
    Type
    Authorization
    is Required
    REQUERIDO
    Description

    Token de acceso con el permiso onboarding:create.

    Ejemplo:Bearer 1|tu-token-de-acceso
  • Name
    Idempotency-Key
    Type
    Idempotency-Key
    is Required
    REQUERIDO
    Description

    Identificador único de la operación. Entre 16 y 64 caracteres, y solo puede contener letras, dígitos y los signos _, ., : y -. Reenviar la misma clave con el mismo contenido devuelve el proceso original en lugar de crear uno nuevo.

    Ejemplo:8f1c2d3e4a5b6c7d8e9f0a1b
    Patrón:^[A-Za-z0-9_.:-]{16,64}$
    Longitud máxima:64
    Longitud mínima:16
  • Name
    Content-Type
    Type
    Content-Type
    is Required
    REQUERIDO
    Description
    Ejemplo:application/json
  • Name
    Accept
    Type
    Accept
    is optional
    Description

    Recomendado.

    Ejemplo:application/json

Solicitud

Estado del comercio. Los campos viajan en la raíz del cuerpo, junto a las colecciones.

Una clave desconocida en la raíz se ignora en silencio; dentro de un elemento de cualquier colección, en cambio, responde 422 nombrándola.

  • Name
    name
    Type
    string
    is Required
    REQUERIDO
    Description

    Razón social del comercio.

    Ejemplo:Comercializadora Acme S.A.S.
    Longitud máxima:80
  • Name
    brand
    Type
    string
    is Required
    REQUERIDO
    Description

    Nombre comercial, el que ve el comprador.

    Ejemplo:Acme
    Longitud máxima:60
  • Name
    active
    Type
    boolean
    is optional
    Description

    Si el comercio queda habilitado.

    Valor por defecto:true
    Ejemplo:true
  • Name
    url
    Type
    string|null
    is optional
    Description

    Sitio web del comercio.

    Ejemplo:https://acme.example.com
    Formato:uri
    Longitud máxima:255
  • Name
    incrementType
    Type
    string
    is optional
    Description

    Referencia usada para incrementos.

    Valores permitidos:SMLMVIPC
    Ejemplo:SMLMV
  • Name
    mcc
    Type
    string
    is optional
    Description

    Código de categoría de comercio. Debe existir en el catálogo.

    Ejemplo:5411
  • Name
    size
    Type
    string
    is optional
    Description

    Tamaño del comercio, del catálogo de tamaños: XS microempresa (menos de 10 empleados), S pequeña empresa (menos de 50), M mediana empresa (menos de 250) y L gran empresa (más de 250).

    Valores permitidos:XSSML
    Ejemplo:M
  • Name
    timezone
    Type
    string
    is optional
    Description

    Zona horaria en formato IANA, del catálogo de zonas.

    Ejemplo:America/Bogota
  • Name
    languages
    Type
    array
    is Required
    REQUERIDO
    Description

    Idiomas con los que opera el comercio. Es un conjunto: repetir un valor responde 422, y la comparación ignora mayúsculas.

    Ejemplo:esen
  • Name
    currencies
    Type
    array
    is Required
    REQUERIDO
    Description

    Monedas que el comercio maneja, como códigos ISO del catálogo. Es un conjunto, igual que languages.

    Ejemplo:COPUSD
  • Name
    document
    Type
    Document
    is Required
    REQUERIDO
    Description

    Documento de identificación fiscal del comercio.

  • Name
    address
    Type
    Address
    is Required
    REQUERIDO
    Description

    Dirección fiscal del comercio.

  • Name
    legalRepresentative
    Type
    LegalRepresentative
    is Required
    REQUERIDO
    Description
  • Name
    billing
    Type
    Billing
    is optional
    Description

    Datos de facturación del comercio.

  • Name
    travelAgency
    Type
    TravelAgency
    is optional
    Description

    Aplicable solo a comercios del sector turismo.

  • Name
    control
    Type
    Control
    is Required
    REQUERIDO
    Description

    Estructura comercial bajo la que queda registrado el comercio.

  • Name
    integrations
    Type
    array[Integration]
    is optional
    Description

    Integraciones del comercio con proveedores externos. Es un upsert por type: una integración que el cuerpo no nombra sobrevive intacta, y no hay forma de eliminarla.

  • Name
    paymentMethods
    Type
    array[PaymentMethod]
    is optional
    Description

    Medios de pago que el comercio acepta. Un elemento o modifica uno existente por su id, o registra uno nuevo con code; nunca las dos cosas.

  • Name
    sites
    Type
    array[Site]
    is optional
    Description

    Sitios de venta del comercio, con sus propias colecciones.

  • Name
    notification
    Type
    Notification
    is optional
    Description

    URL donde recibir el resultado del proceso. Si se omite, no se envía notificación y el resultado se consulta con GET /api/processes/{processId}.

Solicitud

POST
/api/merchants
curl --request POST \
  --url '{URL_BASE}/api/merchants' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer {TU_TOKEN}' \
  --header 'Idempotency-Key: 8f1c2d3e4a5b6c7d8e9f0a1b' \
  --data '{
    "name": "Comercializadora Acme S.A.S.",
    "brand": "Acme",
    "languages": ["es"],
    "currencies": ["COP"],
    "document": { "type": "NIT", "number": "9001234567" },
    "address": { "city": "Bogota", "country": "CO", "state": 11 },
    "legalRepresentative": { "name": "Ada", "surname": "Lovelace" },
    "control": { "reseller": 1 }
  }'

Respuesta

La clave de idempotencia ya se había usado con este mismo contenido. Devuelve el proceso original, con el mismo processId.

  • Name
    status
    Type
    Status
    is Required
    REQUERIDO
    Description

    Estado de la petición o del proceso. Presente en todas las respuestas.

    El código HTTP dice si la llamada funcionó; status.status dice qué pasó con el proceso.

  • Name
    processId
    Type
    string
    is Required
    REQUERIDO
    Description

    Identificador del proceso, en minúsculas. Con él se consulta el resultado.

    Ejemplo:01kz0609xy2hd666mnx6b0jxpc
  • Name
    action
    Type
    string
    is Required
    REQUERIDO
    Description

    Operación pedida.

    Valores permitidos:merchant.createmerchant.update
    Ejemplo:merchant.create
  • Name
    result
    Type
    object|null
    is optional
    Description

    Siempre null en la aceptación. El resultado llega al consultar el proceso.

    Ejemplo:null
  • Name
    notification
    Type
    object|null
    is optional
    Description

    Estado de la entrega del webhook, o null si no se registró una URL.

Respuesta

POST
/api/merchants
{
  "status": {
    "status": "OK",
    "reason": null,
    "message": "The request was accepted and will be processed shortly.",
    "date": "2026-08-17T15:14:03+00:00"
  },
  "processId": "01kz0609xy2hd666mnx6b0jxpc",
  "action": "merchant.create",
  "result": null,
  "notification": null
}

GET/api/merchants/{merchantId}

Consultar un comercio

Devuelve el comercio completo en una sola respuesta: sus datos, sus medios de pago, sus integraciones y todos sus sitios, cada uno con sus propios medios de pago e integraciones. Es una consulta síncrona y de solo lectura: no crea proceso ni envía notificación.

Varios campos salen con una forma distinta de la que acepta la escritura —montos como texto, objetos vacíos como [], valores que el sistema completa—, así que la respuesta no se puede reenviar tal cual en un PATCH. Las reglas de lectura están en Consultar un comercio.

Parámetros

  • Name
    merchantId
    Type
    merchantId
    is Required
    REQUERIDO
    Description

    Identificador del comercio, tal como lo publica result.merchantId. Debe ser numérico: uno que no lo sea responde 404 sin llegar al endpoint.

    Ejemplo:18

Cabecera

  • Name
    Authorization
    Type
    Authorization
    is Required
    REQUERIDO
    Description

    Token de acceso con el permiso onboarding:read.

    Ejemplo:Bearer 1|tu-token-de-acceso
  • Name
    Accept
    Type
    Accept
    is optional
    Description

    Recomendado.

    Ejemplo:application/json

Solicitud

GET
/api/merchants/{merchantId}
curl --request GET \
  --url '{URL_BASE}/api/merchants/18' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer {TU_TOKEN}'

Respuesta

El comercio existe. Los campos viajan en la raíz, junto a status. Un comercio o un sitio deshabilitado se devuelve igual, con active: false.

  • Name
    status
    Type
    Status
    is Required
    REQUERIDO
    Description

    Estado de la petición o del proceso. Presente en todas las respuestas.

    El código HTTP dice si la llamada funcionó; status.status dice qué pasó con el proceso.

  • Name
    id
    Type
    integer
    is Required
    REQUERIDO
    Description

    Identificador del comercio. Es el result.merchantId del proceso de creación.

    Ejemplo:18
  • Name
    name
    Type
    string
    is Required
    REQUERIDO
    Description

    Nombre o razón social.

    Ejemplo:Comercializadora Acme S.A.S.
  • Name
    brand
    Type
    string
    is Required
    REQUERIDO
    Description

    Marca. Si no está registrada, sale el valor de name.

    Ejemplo:Acme
  • Name
    mcc
    Type
    string|null
    is Required
    REQUERIDO
    Description
    Ejemplo:5411
  • Name
    active
    Type
    boolean
    is Required
    REQUERIDO
    Description

    Si el comercio está habilitado.

  • Name
    timezone
    Type
    string|null
    is Required
    REQUERIDO
    Description
    Ejemplo:America/Bogota
  • Name
    size
    Type
    string|null
    is Required
    REQUERIDO
    Description

    Código de tamaño del comercio.

    Ejemplo:M
  • Name
    incrementType
    Type
    string
    is Required
    REQUERIDO
    Description

    Si no está registrado, SMLMV.

    Valores permitidos:SMLMVIPC
  • Name
    languages
    Type
    array|null
    is Required
    REQUERIDO
    Description

    Códigos de idioma en orden alfabético, con la grafía con que están registrados: pueden venir en minúscula aunque sites[].language salga en mayúscula. null si no tiene ninguno.

    Ejemplo:enes
  • Name
    currencies
    Type
    array|null
    is Required
    REQUERIDO
    Description

    Códigos de moneda en orden alfabético. null si no tiene ninguna.

    Ejemplo:COPUSD
  • Name
    url
    Type
    string|null
    is Required
    REQUERIDO
    Description
    Ejemplo:https://acme.example.com
  • Name
    document
    Type
    object
    is Required
    REQUERIDO
    Description
  • Name
    address
    Type
    object
    is Required
    REQUERIDO
    Description
  • Name
    legalRepresentative
    Type
    object
    is Required
    REQUERIDO
    Description

    name y surname se deducen del nombre completo registrado con una regla aproximada, así que pueden no coincidir con los que se enviaron. Ver Consultar un comercio.

  • Name
    billing
    Type
    object
    is Required
    REQUERIDO
    Description
  • Name
    travelAgency
    Type
    object
    is Required
    REQUERIDO
    Description
  • Name
    control
    Type
    object
    is Required
    REQUERIDO
    Description
  • Name
    paymentMethods
    Type
    array[PaymentMethodRead]
    is Required
    REQUERIDO
    Description

    Medios de pago del comercio, por su id.

  • Name
    integrations
    Type
    array[IntegrationRead]
    is Required
    REQUERIDO
    Description

    Integraciones del comercio, por su id.

  • Name
    sites
    Type
    array[SiteRead]
    is Required
    REQUERIDO
    Description

    Sitios del comercio, por su id. [] si no tiene ninguno.

Respuesta

GET
/api/merchants/{merchantId}
{
  "status": {
    "status": "OK",
    "reason": null,
    "message": null,
    "date": "2026-09-22T21:27:20+00:00"
  },
  "id": 18,
  "name": "Comercializadora Acme S.A.S.",
  "brand": "Acme",
  "mcc": "5411",
  "active": true,
  "timezone": "America/Bogota",
  "size": "M",
  "incrementType": "SMLMV",
  "languages": ["en", "es"],
  "currencies": ["COP", "USD"],
  "url": "https://acme.example.com",
  "document": {
    "type": "NIT",
    "number": "9001234567"
  },
  "address": {
    "street": "Carrera 43A # 1-50, Torre 2",
    "city": "Bogota",
    "state": 11,
    "country": "CO",
    "phone": "6013905000",
    "postalCode": "110111"
  },
  "legalRepresentative": {
    "name": "Ada",
    "surname": "Lovelace",
    "document": "1020304050",
    "documentType": "CC"
  },
  "billing": {
    "contact": "Contabilidad Acme",
    "mail": "[email protected]",
    "registrationNumber": "9001234567-1",
    "taxType": 1,
    "taxRegime": 1,
    "organizationType": 1,
    "ciiu": "4791"
  },
  "travelAgency": {
    "dispersion": false,
    "iata": "ABCD12"
  },
  "control": {
    "seller": 1,
    "reseller": 1,
    "paymentFacilitator": null
  },
  "paymentMethods": [
    {
      "id": 64,
      "customerId": 18,
      "code": "CR_VS",
      "name": "Credibanco Visa",
      "commissionModel": "P",
      "commissionValue": 2.5,
      "accountNumber": "1234567890",
      "accountType": 2,
      "franchise": "VISA",
      "financialEntity": 7,
      "order": 1,
      "disabled": false,
      "creditRules": [],
      "settings": {
        "username": "usuario-ejemplo",
        "password": "clave-ejemplo",
        "retailCode": "0012345678",
        "terminalNumber": "TERM0001"
      }
    },
    {
      "id": 65,
      "customerId": 18,
      "code": "_PSE_",
      "name": "Cuentas débito ahorro y corriente (PSE)",
      "commissionModel": "F",
      "commissionValue": 1200,
      "accountNumber": "1234567890",
      "accountType": 1,
      "franchise": null,
      "financialEntity": null,
      "order": 2,
      "disabled": false,
      "creditRules": [],
      "settings": {
        "entityCode": "9001234567",
        "serviceCode": "001"
      }
    }
  ],
  "integrations": [
    {
      "id": 42,
      "customerId": 18,
      "type": "kount",
      "settings": {
        "sandbox": false,
        "website": "ACME",
        "merchant": "201000"
      }
    }
  ],
  "sites": [
    {
      "id": 214,
      "login": "aabbccdd1234567890aabbccdd123456",
      "tranKey": "exampleTranKey16",
      "md5Hash": "exampleMd5Hash16",
      "customerId": 18,
      "name": "Tienda principal",
      "displayName": "Acme",
      "type": "INT",
      "category": "ECOMMERCE",
      "email": "[email protected]",
      "customBatch": "1001",
      "language": "ES",
      "currency": "COP",
      "onTest": true,
      "productionDate": "2026-09-01",
      "active": true,
      "createdAt": "2026-09-22 16:27:16",
      "expiration": "2030-12-31 23:59:59",
      "integration": {
        "allowPartial": false,
        "allowWallet": true,
        "allowConfirmationFlow": false,
        "checkoutAttemptsLimit": 5,
        "connectionMethod": "REDIRECT",
        "checkoutVersion": "v4",
        "notificationUrl": "https://notificaciones.example.com/webhook/214",
        "analyticsCode": "G-ABCDE12345",
        "sourceRestriction": "checkout",
        "returnAdditional": true,
        "payerFieldsType": 1
      },
      "control": {
        "minAmount": "1000.00",
        "maxAmount": "5000000.00",
        "allowedDays": 127,
        "allowedHours": "ffffffffffffffffffffffffffffffffffffffffff",
        "delegatedAuthorization": "ffffffffffffffffffffffffffffffffffffffffff",
        "filterPse": false,
        "filterTuya": false,
        "filterSafetypay": false,
        "prechargeFilter": 0,
        "allowedBankCountries": ["CO", "EC"],
        "filterByBin": false,
        "exceptionBinsList": ["411111"]
      },
      "threeDS": {
        "setting": "LOW",
        "minAmount": "0.00"
      },
      "historic": {
        "lowerScore": null,
        "rejectionScore": null,
        "behaviour": "DISABLED"
      },
      "creditBureau": {
        "behaviour": 0,
        "minAmount": 0,
        "paymentGroups": [],
        "onCalibration": 0,
        "behaviours": {
          "onFailed": false,
          "onNoMatch": false,
          "onMatch": false
        }
      },
      "riskEngine": {
        "behaviour": 0,
        "minAmount": 0,
        "approvalScore": 0,
        "rejectionScore": 0,
        "onCalibration": 0,
        "paymentGroups": [],
        "behaviours": {
          "onFailed": false,
          "onLowRisk": false,
          "onMediumRisk": false,
          "onHighRisk": false
        }
      },
      "securityFilters": {
        "filterLockedByTries": true,
        "allowedIssuerCountries": ["CO"],
        "forceIPMatch": 0,
        "excludeIPCountry": ["VE"],
        "onlyWhitelisted": false,
        "allowedIPCountries": ["CO", "US"],
        "allowedCardsDay": 2,
        "allowedCardsByIP": 30,
        "allowedCardsMonth": 2,
        "allowedCardsYear": 5,
        "dayMax": 2,
        "dayMaxAmount": "100000000.00",
        "monthMax": 5,
        "monthMaxAmount": "100000000.00"
      },
      "operation": {
        "disableTax": false,
        "calculateTax": false,
        "taxPercentage": 19,
        "patternReference": "1234567890",
        "mailCustomer": true,
        "mailMerchant": false
      },
      "subscriptionValidation": {
        "enable": false,
        "amount": 0
      },
      "branding": {
        "buttonColor": "#1a73e8",
        "sidebarColor": "#202124",
        "logoUrl": "https://media.example.com/sites/branding/logo-acme.png"
      },
      "promotions": [
        {
          "code": "BIENVENIDA",
          "description": "Descuento de bienvenida",
          "type": "MERCHANT",
          "startDate": "2026-09-21",
          "endDate": "2026-10-22",
          "condition": null,
          "discountBase": "5000.0000",
          "discountVariable": "0.0000",
          "maxDiscount": "0.0000",
          "franchise": null
        }
      ],
      "metadata": {
        "contractRef": "AC-2026-0042",
        "onboardingBatch": 17
      },
      "paymentMethods": [
        {
          "id": 131,
          "siteId": 214,
          "customerPaymentId": 64,
          "code": "CR_VS",
          "name": "Credibanco Visa",
          "order": 1,
          "commissionModel": null,
          "commissionValue": null,
          "minAmount": null,
          "maxAmount": null,
          "accountNumber": null,
          "accountType": null,
          "franchise": "VISA",
          "financialEntity": null,
          "disabled": false,
          "settings": [],
          "creditRules": []
        }
      ],
      "integrations": [
        {
          "id": 78,
          "siteId": 214,
          "type": "notifier",
          "settings": {
            "enabled": true,
            "handler": "raw",
            "additional": {
              "uri": "https://acme.example.com/hooks/pagos"
            },
            "retry_after": 60,
            "retry_until": 60,
            "allowed_statuses": ["APPROVED", "REJECTED"]
          }
        }
      ]
    }
  ]
}

PATCH/api/merchants/{merchantId}

Actualizar un comercio

Escribe solo los campos que el cuerpo nombra. El resto del comercio conserva su valor, y ningún campo es obligatorio — pero el cuerpo debe nombrar al menos uno: un {} responde 422 con la clave de error body, y un cuerpo que solo trae notification cuenta igualmente como vacío.

Dentro de las colecciones, cada elemento o modifica una fila existente por su identificador, o crea una nueva. Un sitio sin id es un sitio que se crea, y entonces vuelven a ser obligatorios todos sus campos: el error lo dice explícitamente, The sites.0.displayName field is required when sites.0.id is not present.

Parámetros

  • Name
    merchantId
    Type
    merchantId
    is Required
    REQUERIDO
    Description

    Identificador del comercio, tal como lo publica result.merchantId. Debe ser numérico: uno que no lo sea responde 404 sin llegar al endpoint.

    Ejemplo:18

Cabecera

  • Name
    Authorization
    Type
    Authorization
    is Required
    REQUERIDO
    Description

    Token de acceso con el permiso onboarding:update.

    Ejemplo:Bearer 1|tu-token-de-acceso
  • Name
    Idempotency-Key
    Type
    Idempotency-Key
    is Required
    REQUERIDO
    Description

    Identificador único de la operación. El comercio de la URL forma parte de la comparación: la misma clave apuntada a otro comercio responde 409.

    Ejemplo:4b7e1a9c2d3f5e6a8b0c1d2e
    Patrón:^[A-Za-z0-9_.:-]{16,64}$
    Longitud máxima:64
    Longitud mínima:16
  • Name
    Content-Type
    Type
    Content-Type
    is Required
    REQUERIDO
    Description
    Ejemplo:application/json

Solicitud

Estado del comercio. Los campos viajan en la raíz del cuerpo, junto a las colecciones.

Una clave desconocida en la raíz se ignora en silencio; dentro de un elemento de cualquier colección, en cambio, responde 422 nombrándola.

  • Name
    name
    Type
    string
    is Required
    REQUERIDO
    Description

    Razón social del comercio.

    Ejemplo:Comercializadora Acme S.A.S.
    Longitud máxima:80
  • Name
    brand
    Type
    string
    is Required
    REQUERIDO
    Description

    Nombre comercial, el que ve el comprador.

    Ejemplo:Acme
    Longitud máxima:60
  • Name
    active
    Type
    boolean
    is optional
    Description

    Si el comercio queda habilitado.

    Valor por defecto:true
    Ejemplo:true
  • Name
    url
    Type
    string|null
    is optional
    Description

    Sitio web del comercio.

    Ejemplo:https://acme.example.com
    Formato:uri
    Longitud máxima:255
  • Name
    incrementType
    Type
    string
    is optional
    Description

    Referencia usada para incrementos.

    Valores permitidos:SMLMVIPC
    Ejemplo:SMLMV
  • Name
    mcc
    Type
    string
    is optional
    Description

    Código de categoría de comercio. Debe existir en el catálogo.

    Ejemplo:5411
  • Name
    size
    Type
    string
    is optional
    Description

    Tamaño del comercio, del catálogo de tamaños: XS microempresa (menos de 10 empleados), S pequeña empresa (menos de 50), M mediana empresa (menos de 250) y L gran empresa (más de 250).

    Valores permitidos:XSSML
    Ejemplo:M
  • Name
    timezone
    Type
    string
    is optional
    Description

    Zona horaria en formato IANA, del catálogo de zonas.

    Ejemplo:America/Bogota
  • Name
    languages
    Type
    array
    is Required
    REQUERIDO
    Description

    Idiomas con los que opera el comercio. Es un conjunto: repetir un valor responde 422, y la comparación ignora mayúsculas.

    Ejemplo:esen
  • Name
    currencies
    Type
    array
    is Required
    REQUERIDO
    Description

    Monedas que el comercio maneja, como códigos ISO del catálogo. Es un conjunto, igual que languages.

    Ejemplo:COPUSD
  • Name
    document
    Type
    Document
    is Required
    REQUERIDO
    Description

    Documento de identificación fiscal del comercio.

  • Name
    address
    Type
    Address
    is Required
    REQUERIDO
    Description

    Dirección fiscal del comercio.

  • Name
    legalRepresentative
    Type
    LegalRepresentative
    is Required
    REQUERIDO
    Description
  • Name
    billing
    Type
    Billing
    is optional
    Description

    Datos de facturación del comercio.

  • Name
    travelAgency
    Type
    TravelAgency
    is optional
    Description

    Aplicable solo a comercios del sector turismo.

  • Name
    control
    Type
    Control
    is Required
    REQUERIDO
    Description

    Estructura comercial bajo la que queda registrado el comercio.

  • Name
    integrations
    Type
    array[Integration]
    is optional
    Description

    Integraciones del comercio con proveedores externos. Es un upsert por type: una integración que el cuerpo no nombra sobrevive intacta, y no hay forma de eliminarla.

  • Name
    paymentMethods
    Type
    array[PaymentMethod]
    is optional
    Description

    Medios de pago que el comercio acepta. Un elemento o modifica uno existente por su id, o registra uno nuevo con code; nunca las dos cosas.

  • Name
    sites
    Type
    array[Site]
    is optional
    Description

    Sitios de venta del comercio, con sus propias colecciones.

  • Name
    notification
    Type
    Notification
    is optional
    Description

    URL donde recibir el resultado del proceso. Si se omite, no se envía notificación y el resultado se consulta con GET /api/processes/{processId}.

Solicitud

PATCH
/api/merchants/{merchantId}
curl --request PATCH \
  --url '{URL_BASE}/api/merchants/18' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer {TU_TOKEN}' \
  --header 'Idempotency-Key: 4b7e1a9c2d3f5e6a8b0c1d2e' \
  --data '{
    "name": "Comercializadora Acme S.A.S.",
    "brand": "Acme Pagos",
    "url": "https://pagos.acme.example.com"
  }'

Respuesta

Replay de una clave de idempotencia ya usada con el mismo contenido.

  • Name
    status
    Type
    Status
    is Required
    REQUERIDO
    Description

    Estado de la petición o del proceso. Presente en todas las respuestas.

    El código HTTP dice si la llamada funcionó; status.status dice qué pasó con el proceso.

  • Name
    processId
    Type
    string
    is Required
    REQUERIDO
    Description

    Identificador del proceso, en minúsculas. Con él se consulta el resultado.

    Ejemplo:01kz0609xy2hd666mnx6b0jxpc
  • Name
    action
    Type
    string
    is Required
    REQUERIDO
    Description

    Operación pedida.

    Valores permitidos:merchant.createmerchant.update
    Ejemplo:merchant.create
  • Name
    result
    Type
    object|null
    is optional
    Description

    Siempre null en la aceptación. El resultado llega al consultar el proceso.

    Ejemplo:null
  • Name
    notification
    Type
    object|null
    is optional
    Description

    Estado de la entrega del webhook, o null si no se registró una URL.

Respuesta

PATCH
/api/merchants/{merchantId}
{
  "status": {
    "status": "OK",
    "reason": null,
    "message": "The request was accepted and will be processed shortly.",
    "date": "2026-08-17T15:20:41+00:00"
  },
  "processId": "01kz0a13bc4de777pqy8c1kxqd",
  "action": "merchant.update",
  "result": null,
  "notification": null
}