API

Introducción

La API de Openpay está diseña sobre REST, por lo tanto encontrarás que las URL están orientadas a recursos y se usa códigos de respuesta HTTP para indicar los errores en la API.

Todas las respuestas de la API están en formato JSON, incluyendo errores.

En el caso de usar los clientes existentes del API de Openpay (Java, Php, C#, Python, Ruby, NodeJS), las respuestas son específicamente del tipo definido en dichos clientes en sus respectivos lenguajes.

API Endpoints

Recurso disponibles

a) Por Comercio

/v1/{MERCHANT_ID}/...

/fees
/fees/{FEE_ID}
/charges
/charges/{TRANSACTION_ID}
/payouts
/payouts/{TRANSACTION_ID}
/cards
/cards/{CARD_ID}
/customers
/customers/{CUSTOMER_ID}
/plans
/plans/{PLAN_ID}
​/tokens
/tokens/{TOKEN_ID}

b) Por Cliente

/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/...

/cards
/cards/{CARD_ID}
/bankaccounts
/bankaccounts/{BANKACCOUNT_ID}
/charges
/charges/{TRANSACTION_ID}
/payouts
/payouts/{TRANSACTION_ID}
/transfers
/transfers/{TRANSACTION_ID}
/subscriptions
/subscriptions/{SUBSCRIPTION_ID}

La API REST de Openpay tiene un ambiente de pruebas (sandbox) y un ambiente de producción. Usa las credenciales que se generaron al momento de tu registro para realizar la integración de tu sistema con Openpay. Una vez que estes listo para pasar a producción y tu solicitud sea aprobada, se generarán nuevas credenciales para acceder al ambiente de producción.

La siguientes URIs forman la base de los endpoints para los ambientes soportados:

  • Pruebas, URI base:
    https://sandbox-api.openpay.mx
  • Producción, URI base:
    https://api.openpay.mx

Un endpoint completo esta formado por la URI base del ambiente, el identificador del comercio y el recurso.

Por ejemplo, si queremos crear un nuevo cliente, el endpoint sería:

POST https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers

Para crear una petición completa es necesaria envíar las cabeceras HTTP correctas y la información en formato JSON.

Autenticación

Ejemplo de autenticación

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

El parámetro -u se ocupa para realizar la autenticación HTTP Basic (al agregar dos puntos después de la llave privada se previene el uso de contraseña)

Producción

Solo es necesario usar la URI base https://api.openpay.mx

Para realizar peticiones a la API de Openpay, es necesario enviar la llave de API (API Key) en todas tus llamadas a nuestros servidores. ​La llave la puedes obtener desde el dashboard.

Existen 2 tipos de llaves de API:

  • Privada.- Para llamadas entre servidores y con acceso total a todas las operaciones de la API (nunca debe ser compartida).
  • Pública.- Sólo se debe utilizar en llamadas desde JavaScript. Esta llave sólo tiene permitido realizar crear tarjetas o crear tokens

Para la autenticación al API debes usar autenticación de acceso básica, donde la llave de API es el nombre de usuario. La contraseña no es requerida y debe dejarse en blanco por fines de simplicidad.

Errores

Openpay regresa objetos de JSON en las respuestas del servicio, incluso en caso de errores por lo que cuando exista un error.

Objeto Error

Ejemplo de objeto

{
    "category" : "request",
    "description" : "The customer with id 'm4hqp35pswl02mmc567' does not exist",
    "http_code" : 404,
    "error_code" : 1005,
    "request_id" : "1981cdb8-19cb-4bad-8256-e95d58bc035c",
    "fraud_rules": [
        "Billing <> BIN Country for VISA/MC"
    ]
}
PropiedadDescripción
categorystring
request: Indica un error causado por datos enviados por el cliente. Por ejemplo, una petición inválida, un intento de una transacción sin fondos, o una transferencia a una cuenta que no existe.

internal: Indica un error del lado de Openpay, y ocurrira muy raramente.

gateway: Indica un error durante la transacción de los fondos de una tarjeta a la cuenta de Openpay o de la cuenta hacia un banco o tarjeta.

error_codenumeric
El código del error de Openpay indicando el problema que ocurrió.
descriptionstring
Descripción del error.
http_codestring
Código de error HTTP de la respuesta.
request_idstring
Identificador de la petición.
fraud_rulesarray
Arreglo con la lista de coincidencia de reglas definidas para deteccion de fraudes.

Códigos de error

Generales

CódigoError HTTPCausa
1000500 Internal Server ErrorOcurrió un error interno en el servidor de Openpay
1001400 Bad RequestEl formato de la petición no es JSON, los campos no tienen el formato correcto, o la petición no tiene campos que son requeridos.
1002401 UnauthorizedLa llamada no esta autenticada o la autenticación es incorrecta.
1003422 Unprocessable EntityLa operación no se pudo completar por que el valor de uno o más de los parametros no es correcto.
1004503 Service UnavailableUn servicio necesario para el procesamiento de la transacción no se encuentra disponible.
1005404 Not FoundUno de los recursos requeridos no existe.
1006409 ConflictYa existe una transacción con el mismo ID de orden.
1007402 Payment RequiredLa transferencia de fondos entre una cuenta de banco o tarjeta y la cuenta de Openpay no fue aceptada.
1008423 LockedUna de las cuentas requeridas en la petición se encuentra desactivada.
1009413 Request Entity too largeEl cuerpo de la petición es demasiado grande.
1010403 ForbiddenSe esta utilizando la llave pública para hacer una llamada que requiere la llave privada, o bien, se esta usando la llave privada desde JavaScript.

Almacenamiento

CódigoError HTTPCausa
2001409 ConflictLa cuenta de banco con esta CLABE ya se encuentra registrada en el cliente.
2002409 ConflictLa tarjeta con este número ya se encuentra registrada en el cliente.
2003409 ConflictEl cliente con este identificador externo (External ID) ya existe.
2004422 Unprocessable EntityEl dígito verificador del número de tarjeta es inválido de acuerdo al algoritmo Luhn.
2005400 Bad RequestLa fecha de expiración de la tarjeta es anterior a la fecha actual.
2006400 Bad RequestEl código de seguridad de la tarjeta (CVV2) no fue proporcionado.
2007412 Precondition FailedEl número de tarjeta es de prueba, solamente puede usarse en Sandbox.
2008412 Precondition FailedLa tarjeta consultada no es valida para puntos.
2009412 Precondition FailedEl código de seguridad de la tarjeta (CVV2) no no es valido.

Tarjetas

CódigoError HTTPCausa
3001402 Payment RequiredLa tarjeta fue declinada.
3002402 Payment RequiredLa tarjeta ha expirado.
3003402 Payment RequiredLa tarjeta no tiene fondos suficientes.
3004402 Payment RequiredLa tarjeta ha sido identificada como una tarjeta robada.
3005402 Payment RequiredLa tarjeta ha sido identificada como una tarjeta fraudulenta.
3006412 Precondition FailedLa operación no esta permitida para este cliente o esta transacción.
3008412 Precondition FailedLa tarjeta no es soportada en transacciones en linea.
3009402 Payment RequiredLa tarjeta fue reportada como perdida.
3010402 Payment RequiredEl banco ha restringido la tarjeta.
3011402 Payment RequiredEl banco ha solicitado que la tarjeta sea retenida. Contacte al banco.
3012412 Precondition FailedSe requiere solicitar al banco autorización para realizar este pago.

Cuentas

CódigoError HTTPCausa
4001412 Preconditon FailedLa cuenta de Openpay no tiene fondos suficientes.

Cargos

Los cargos se pueden realizar a tarjetas, tiendas y bancos. A cada cargo se le asigna un identificador único en el sistema.

Los cargos a tarjeta puedes hacerlos a una tarjeta guardada usando el id de la tarjeta, usando un token o puedes enviar la información de la tarjeta al momento de la invocación.

Con id de tarjeta o token

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges

Ejemplo de petición con comercio

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "source_id" : "kqgykn96i7bcs1wwhvgw",
   "method" : "card",
   "amount" : 100,
   "currency" : "MXN",
   "description" : "Cargo inicial a mi cuenta",
   "order_id" : "oid-00051",
   "device_session_id" : "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f",
   "customer" : {
        "name" : "Juan",
        "last_name" : "Vazquez Juarez",
        "phone_number" : "4423456723",
        "email" : "juan.vazquez@empresa.com.mx"
   }
}'

Ejemplo de respuesta

{
   "id":"trzjaozcik8msyqshka4",
   "amount":100.00,
   "authorization":"801585",
   "method":"card",
   "operation_type":"in",
   "transaction_type":"charge",
   "card":{
      "id":"kqgykn96i7bcs1wwhvgw",
      "type":"debit",
      "brand":"visa",
      "address":null,
      "card_number":"411111XXXXXX1111",
      "holder_name":"Juan Perez Ramirez",
      "expiration_year":"20",
      "expiration_month":"12",
      "allows_charges":true,
      "allows_payouts":true,
      "creation_date":"2014-05-26T11:02:16-05:00",
      "bank_name":"Banamex",
      "bank_code":"002"
   },
   "status":"completed",
   "currency":"USD",
   "exchange_rate" : {
      "from" : "USD",
      "date" : "2014-11-21",
      "value" : 13.61,
      "to" : "MXN"
   },
   "creation_date":"2014-05-26T11:02:45-05:00",
   "operation_date":"2014-05-26T11:02:45-05:00",
   "description":"Cargo inicial a mi cuenta",
   "error_message":null,
   "order_id":"oid-00051"
}

Este tipo de cargo requiere una tarjeta guardada o que hayas generado un token. Para guardar tarjetas consulta como crear una tarjeta y para usar tokens consulta la sección creación de tokens.

Una vez que tengas una tarjeta guardada o un token usa la propiedad source_id para enviar el identificador.

La propiedad device_session_id deberá ser generada desde el API JavaScript, véase Fraud detection using device data.

Sistema antifraude personalizado
Es posible enviar información adicional a la plataforma Openpay para incrementar su base de conocimientos, esto le permitirá aplicar reglas personalizadas de acuerdo al giro del comercio y de manera oportuna, con el propósito de detectar con la mayor efectividad posible los intentos de fraude.

Petición

PropiedadDescripción
methodstring (requerido)
Debe contener el valor card para indicat que el cargo se hará de una tarjeta.
source_idstring (requerido, longitud = 45)
ID de la tarjeta guardada o el id del token creado de donde se retirarán los fondos.
amountnumeric (requerido)
Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales.
cvv2numeric (requerido, longitud = 3-4)
Código de seguridad como aparece en la parte de atrás de la tarjeta. Generalmente 3 dígitos.
Se utiliza solo para cargos con Tarjetas Guardadas.
currencystring (opcional)
Tipo de moneda del cargo. Por el momento solo se soportan 2 tipos de monedas: Pesos Mexicanos(MXN) y Dólares Americanos(USD).
descriptionstring (requerido, longitud = 250)
Una descripción asociada al cargo.
order_idstring (opcional, longitud = 100)
Identificador único del cargo. Debe ser único entre todas las transacciones.
device_session_idstring (requerido, longitud = 255)
Identificador del dispositivo generado con la herramienta antifraudes
captureboolean (opcional, default = true)
Indica si el cargo se hace o no inmediatamente, cuando el valor es false el cargo se maneja como una autorización (o preautorización) y solo se reserva el monto para ser confirmado o cancelado en una segunda llamada.
customerobjeto (requerido)
Información del cliente al que se le realiza el cargo. Se puede ocupar los mismos parámetros usados en la creación de un cliente pero no se creará una cuenta al cliente.

Nota: Este parámetro solo se puede utilizar creando el cargo a nivel comercio

Si desea crear un cliente y llevar un historial de sus cargos consulte como crear un cliente y realice el cargo a nivel cliente.

payment_planobjeto (opcional)
Datos del plan de meses sin intereses que se desea utilizar en el cargo. Ver Objeto PaymentPlan.
metadatalist(key, value) (opcional)
Listado de campos personalizados de antifraude, estos campos deben de apegarse a las reglas para creación de campos personalizados de antifraude
use_card_pointsstring (opcional, default = NONE)
ONLY_POINTSCargo solo con puntos (Consulta de puntos)
MIXEDCargo con pesos y puntos
NONECargo solo con pesos
Los valores que indican puntos solo se deben usarse si la propiedad points_card de la tarjeta es true, de otra forma ocurrirá un error.
send_emailboolean (opcional)
Usado para cargos de tipo redirect. Indica si se desea enviar un email que direccione al formulario de pago de Openpay.
redirect_urlstring (requerido)
Usado para cargos de tipo redirect. Indica la url a la que redireccionar despues de una transaccion exitosa en el fomulario de pago de openpay.

Nota: Este parámetro solo se puede utilizar si se especifica el manejo de 3D Secure.

use_3d_securestring (opcional)
Se debe especificar este parámetro en true para manejar 3D Secure.

Respuesta

Regresa un objeto de transacción con la información del cargo o una respuesta de error.

Con redireccionamiento

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges

Ejemplo de petición con comercio

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "method" : "card",
   "amount" : 100,
   "description" : "Cargo inicial a mi cuenta",
   "order_id" : "oid-00051",
   "customer" : {
        "name" : "Juan",
        "last_name" : "Vazquez Juarez",
        "phone_number" : "4423456723",
        "email" : "juan.vazquez@empresa.com.mx"
   },
   "confirm" : "false",
   "send_email":"false",
   "redirect_url":"http://www.openpay.mx/index.html"
}'

Ejemplo de respuesta


{
  "id": "trq7yrthx5vc4gtjdkwg",
  "authorization": null,
  "method": "card",
  "operation_type": "in",
  "transaction_type": "charge",
  "status": "charge_pending",
  "conciliated": false,
  "creation_date": "2016-09-09T18:52:02-05:00",
  "operation_date": "2016-09-09T18:52:02-05:00",
  "description": "Cargo desde terminal virtual de 111",
  "error_message": null,
  "amount": 100,
  "currency": "MXN",
  "payment_method": {
    "type": "redirect",
    "url": "https://sandbox-api.openpay.mx/v1/mexzhpxok3houd5lbvz1/charges/trq7yrthx5vc4gtjdkwg/card_capture"
  },
  "customer": {
    "name": "Juan",
    "last_name": "Vazquez Juarez",
    "email": "juan.vazquez@empresa.com.mx",
    "phone_number": "4423456723",
    "creation_date": "2016-09-09T18:52:02-05:00",
    "clabe": null,
    "external_id": null
  }
}

Este tipo de cargo no requiere una tarjeta guardada o que hayas generado un token.

Petición

PropiedadDescripción
methodstring (requerido en card)
Debe contener el valor card para indicat que el cargo se hará de una tarjeta.
amountnumeric (requerido)
Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales.
descriptionstring (requerido, longitud = 250)
Una descripción asociada al cargo.
order_idstring (opcional, longitud = 100)
Identificador único del cargo. Debe ser único entre todas las transacciones.
customerobjeto (requerido)
Información del cliente al que se le realiza el cargo. Se puede ocupar los mismos parámetros usados en la creación de un cliente pero no se creará una cuenta al cliente.

Nota: Este parámetro solo se puede utilizar creando el cargo a nivel comercio

Si desea crear un cliente y llevar un historial de sus cargos consulte como crear un cliente y realice el cargo a nivel cliente.

confirmboolean (requerido en false)
El valor false indica que se trata de un cargo con terminal virtual.
send_emailboolean (opcional)
Indica si se desea enviar un email que direccione al formulario de pago de openpay.
redirect_urlstring (requerido)
Indica la url a la que redireccionar despues de una transaccion exitosa en el fomulario de pago de openpay.

Respuesta

Regresa un objeto de transacción con la información del cargo o una respuesta de error.

Cargo en tienda

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "method" : "store",
   "amount" : 100,
   "description" : "Cargo con tienda",
   "order_id" : "oid-00053",
   "due_date" : "2014-05-20T13:45:00"
} '

Ejemplo de respuesta

{
   "id":"trnirkiyobo5qfex55ef",
   "amount":100.00,
   "authorization":null,
   "method":"store",
   "operation_type":"in",
   "transaction_type":"charge",
   "status":"in_progress",
   "currency":"MXN",
   "creation_date":"2014-05-26T13:48:25-05:00",
   "operation_date":"2014-05-26T13:48:25-05:00",
   "due_date":"2014-05-28T13:45:00-05:00",
   "description":"Cargo con tienda",
   "error_message":null,
   "order_id":"oid-00053",
   "customer_id":"ag4nktpdzebjiye1tlze",
   "payment_method":{
      "type":"store",
      "reference":"000020TRNIRKIYOBO5QFEX55EF0100009",
      "paybin_reference":"0101990000001065",
      "barcode_url":"https://sandbox-api.openpay.mx/barcode/000020TRNIRKIYOBO5QFEX55EF0100009?width=1&height=45&text=false",
      "barcode_paybin_url":"https://sandbox-api.openpay.mx/barcode/0101990000001065?width=1&height=45&text=false"
   }
}

Para un pago en una tienda de conveniencia se debe crear un petición de tipo cargo indicando como método store. Esto generará una respuesta con un número de referencia y una URL a un código de barras, los cuales debes de utilizar para crear un recibo a tu cliente y que con él pueda realizar el pago en una de las tienda de conveniencia aceptadas. El código de barras es de tipo Code 128.

Petición

PropiedadDescripción
methodstring (requerido)
Debe contener el valor store para indicar que el pago se hará en tienda.
amountnumeric (requerido)
Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales.
descriptionstring (requerido, longitud = 250)
Una descripción asociada al cargo.
order_idstring (opcional, longitud = 100)
Identificador único del cargo. Debe ser único entre todas las transacciones.
due_datedatetime (opcional)
Fecha de vigencia para hacer el pago en la tienda en formato ISO 8601.

Ejemplo (UTC): 2014-08-01T00:50:00Z
Nota: Del lado del servidor se cambiara a hora central

Ejemplo (Central Time): 2014-08-01T11:51:23-05:00

customerobjeto (requerido)
Información del cliente al que se le realiza el cargo. Se puede ocupar los mismos parámetros usados en la creación de un cliente pero no se creará una cuenta al cliente.

Nota: Este parámetro solo se puede utilizar creando el cargo a nivel comercio

Si desea crear un cliente y llevar un historial de sus cargos consulte como crear un cliente y realize el cargo a nivel cliente.

Respuesta

Regresa un objeto de transacción con la información del cargo o una respuesta de error.

Cargo en banco

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "method" : "bank_account",
   "amount" : 100,
   "description" : "Cargo con banco",
   "order_id" : "oid-00055",
   "due_date"
} '

Ejemplo de respuesta

{
   "id":"trnzf2xjwpupjfryyj23",
   "amount":100.00,
   "authorization":null,
   "method":"bank_account",
   "operation_type":"in",
   "transaction_type":"charge",
   "status":"in_progress",
   "currency":"MXN",
   "creation_date":"2014-05-26T13:51:25-05:00",
   "operation_date":"2014-05-26T13:51:25-05:00",
   "description":"Cargo con banco",
   "error_message":null,
   "order_id":"oid-00055",
   "customer_id":"ag4nktpdzebjiye1tlze",
   "payment_method":{
      "type":"bank_transfer",
      "agreement" : "1411217",
      "bank":"BBVA Bancomer",
      "clabe":"012914002014112176",
      "name":"11030021342311520255"
   }
}

Para un cargo a banco se debe crear una petición de tipo cargo indicando como método bank_account. Esto te generará una respuesta con un número de convenio CIE Bancomer, número de CLABE bancaria y una referencia, estos datos los debes de indicar a tu cliente en un recibo para que realice la transferencia vía SPEI.

Petición

PropiedadDescripción
methodstring (requerido)
Debe contener el valor bank_account para indicar que se pagará con transferencia bancaria.
amountnumeric (requerido)
Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales.
descriptionstring (requerido, longitud = 250)
Una descripción asociada al cargo.
order_idstring (opcional, longitud = 100)
Identificador único del cargo. Debe ser único entre todas las transacciones.
due_datedatetime (opcional)
Fecha de vigencia para hacer el cargo a banco en formato ISO 8601.

Ejemplo (UTC): 2014-08-01T00:50:00Z
Nota: Del lado del servidor se cambiara a hora central

Ejemplo (Central Time): 2014-08-01T11:51:23-05:00

customerobjeto (opcional)
Información del cliente al que se le realiza el cargo. Se puede ocupar los mismos parámetros usados en la creación de un cliente pero no se creará una cuenta al cliente.

Nota: Este parámetro solo se puede utilizar creando el cargo a nivel comercio

Si desea crear un cliente y llevar un historial de sus cargos consulte como crear un cliente y realize el cargo a nivel cliente.

Respuesta

Regresa un objeto de transacción con la información del cargo o una respuesta de error.

Cargo en Alipay

Definicion

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "description": "Cargo Alipay",
   "amount": "2000.00",
   "method": "alipay",
   "redirect_url" : "http://www.example.com/myRedirectUrl"
} '

Ejemplo de respuesta

{
    "id": "truq1dwjz0kmssvpbrlj",
    "authorization": null,
    "operation_type": "in",
    "method": "alipay",
    "transaction_type": "charge",
    "status": "charge_pending",
    "conciliated": false,
    "creation_date": "2018-06-14T12:42:11-05:00",
    "operation_date": "2018-06-14T12:42:11-05:00",
    "description": "Cargo Alipay",
    "error_message": null,
    "order_id": null,
    "due_date": "2018-06-15T12:42:11-05:00",
    "payment_method": {
        "type": "redirect",
        "url": "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges/truq1dwjo0kmssvqbrlj/redirect/"
    },
    "amount": 2000,
    "currency": "MXN",
    "fee": {
        "amount": 2.00  ,
        "tax": 0,
        "currency": "MXN"
    }
}

Para realizar una transacción con un pago mediante Alipay es necesario indicar el método de pago como alipay. La respuesta de esta transacción generará una URL de pago en la que el usuario podrá introducir sus datos de cuenta de Alipay, o escanear un código de barras que le permitirá pagar mediante la aplicación móvil.

Petición

PropiedadDescripción
methodstring (requerido)
Debe contener el valor alipay para indicar que el pago se hará en Alipay.
amountnumeric (requerido)
Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales.
descriptionstring (requerido, longitud = 250)
Una descripción asociada al cargo.
order_idstring (opcional, longitud = 100)
Identificador único del cargo. Debe ser único entre todas las transacciones.
due_datedatetime (opcional)
Fecha de vigencia para hacer el pago en Alipay en formato ISO 8601. El usuario podría tener hasta 15 minutos adicionales después de esta fecha después de iniciar su sesión para hacer su pago.

Ejemplo (UTC): 2014-08-01T00:50:00Z
Nota: Del lado del servidor se cambiara a hora central

Ejemplo (Central Time): 2014-08-01T11:51:23-05:00

customerobjeto
Información del cliente al que se le realiza el cargo. Se puede ocupar los mismos parámetros usados en la creación de un cliente pero no se creará una cuenta al cliente.

Nota: Este parámetro solo se puede utilizar creando el cargo a nivel comercio

Si desea crear un cliente y llevar un historial de sus cargos consulte como crear un cliente y realize el cargo a nivel cliente.

redirect_urlstring (requerido)
Indica la url a la que redireccionar despues de una transaccion exitosa, al recibir la llamada en esta url el comercio deberá tomar el atributo id con el id de la transacción para consultar el resultado.

Respuesta

Regresa un objeto de transacción con la información del cargo o una respuesta de error.

Cargo con IVR

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges

Ejemplo de petición con comercio

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "method" : "card",
   "confirm": "ivr",
   "amount" : 100,
   "currency" : "MXN",
   "description" : "Cargo IVR",
   "order_id" : "oid-00051",
   "customer" : {
        "name" : "Juan",
        "last_name" : "Vazquez Juarez",
        "phone_number" : "4423456723",
        "email" : "juan.vazquez@empresa.com.mx"
   }
}'

Ejemplo de respuesta

{
    "id": "tranxr78lb4i58xaliu2",
    "authorization": null,
    "operation_type": "in",
    "transaction_type": "charge",
    "status": "charge_pending",
    "conciliated": false,
    "creation_date": "2020-10-16T12:22:25-05:00",
    "operation_date": "2020-10-16T12:22:25-05:00",
    "description": "Cargo IVR",
    "error_message": null,
    "order_id": "ord-323",
    "due_date": "2020-10-17T00:59:59-05:00",
    "payment_method": {
        "type": "ivr",
        "phone_number": "525588969143",
        "ivr_key": 676105,
        "attempts": 0
    },
    "amount": 100.00,
    "currency": "MXN",
    "customer": {
        "name": "JUAN",
        "last_name": "PEREZ",
        "email": "juan.urbina@hotmail.com",
        "phone_number": "45155352828",
        "address": null,
        "creation_date": "2020-10-16T12:22:25-05:00",
        "external_id": null,
        "clabe": null
    },
    "method": "card"
}

Sistema antifraude personalizado
Es posible enviar información adicional a la plataforma Openpay para incrementar su base de conocimientos, esto le permitirá aplicar reglas personalizadas de acuerdo al giro del comercio y de manera oportuna, con el propósito de detectar con la mayor efectividad posible los intentos de fraude.

Petición

PropiedadDescripción
methodstring (requerido)
Debe contener el valor card para indicar que el cargo se hará de una tarjeta.
confirmstring (requerido)
Debe contener el valor ivr para indicar que la confirmación se hará por IVR.
amountnumeric (requerido)
Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales.
currencystring (opcional)
Tipo de moneda del cargo. Por el momento solo se soportan 2 tipos de monedas: Pesos Mexicanos(MXN) y Dólares Americanos(USD).
descriptionstring (requerido, longitud = 250)
Una descripción asociada al cargo.
order_idstring (opcional, longitud = 100)
Identificador único del cargo. Debe ser único entre todas las transacciones.
customerobjeto (requerido)
Información del cliente al que se le realiza el cargo. Se puede ocupar los mismos parámetros usados en la creación de un cliente pero no se creará una cuenta al cliente.

Nota: Este parámetro solo se puede utilizar creando el cargo a nivel comercio

Si desea crear un cliente y llevar un historial de sus cargos consulte como crear un cliente y realice el cargo a nivel cliente.

metadatalist(key, value) (opcional)
Listado de campos personalizados de antifraude, estos campos deben de apegarse a las reglas para creación de campos personalizados de antifraude
send_emailboolean (opcional)
Usado para cargos de tipo redirect. Indica si se desea enviar un email que direccione al formulario de pago de Openpay.

Respuesta

Regresa un objeto de transacción con la información del cargo o una respuesta de error.

Confirmar un cargo

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}/capture

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges/{TRANSACTION_ID}/capture

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges/tryqihxac3msedn4yxed/capture \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
    "amount" : 100.00
} '

Ejemplo de respuesta

{
   "id":"tryqihxac3msedn4yxed",
   "amount":100.00,
   "authorization":"801585",
   "method":"card",
   "operation_type":"in",
   "transaction_type":"charge",
   "card":{
      "type":"debit",
      "brand":"visa",
      "address":null,
      "card_number":"411111XXXXXX1111",
      "holder_name":"Juan Perez Ramirez",
      "expiration_year":"20",
      "expiration_month":"12",
      "allows_charges":true,
      "allows_payouts":true,
      "bank_name":"Banamex",
      "bank_code":"002"
   },
   "status":"completed",
   "currency":"MXN",
   "creation_date":"2014-05-26T14:00:17-05:00",
   "operation_date":"2014-05-26T14:00:17-05:00",
   "description":"Cargo inicial a mi cuenta",
   "error_message":null,
   "order_id":null,
   "customer_id":"ag4nktpdzebjiye1tlze"
}

Confirmar un cargo creado con la propieda de capture = "false", este método es la segunda parte de la creación de un cargo con tarjeta (id o token) y puede confirmar el monto capturado en la primera llamada o un monto menor.

Petición

PropiedadDescripción
amountnumeric (opcional)
Cantidad a confirmar. Puede ser menor o igual al monto capturado hasta dos dígitos decimales.

Respuesta

Regresa un objeto de transacción con la información del cargo o una respuesta de error.

Devolver un cargo

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}/refund

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges/{TRANSACTION_ID}/refund

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges/tr6cxbcefzatd10guvvw/refund \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "description" : "devolución",
   "amount" : 100.00
} '

Ejemplo de respuesta

{
   "id":"tr6cxbcefzatd10guvvw",
   "amount":100.00,
   "authorization":"801585",
   "method":"card",
   "operation_type":"in",
   "transaction_type":"charge",
   "card":{
      "type":"debit",
      "brand":"visa",
      "address":null,
      "card_number":"411111XXXXXX1111",
      "holder_name":"Juan Perez Ramirez",
      "expiration_year":"20",
      "expiration_month":"12",
      "allows_charges":true,
      "allows_payouts":true,
      "bank_name":"Banamex",
      "bank_code":"002"
   },
   "status":"completed",
   "refund":{
      "id":"trcbsmjkroqmjobxqhpb",
      "amount":100.00,
      "authorization":"801585",
      "method":"card",
      "operation_type":"out",
      "transaction_type":"refund",
      "status":"completed",
      "currency":"MXN",
      "creation_date":"2014-05-26T13:56:21-05:00",
      "operation_date":"2014-05-26T13:56:21-05:00",
      "description":"devolucion",
      "error_message":null,
      "order_id":null,
      "customer_id":"ag4nktpdzebjiye1tlze"
   },
   "currency":"MXN",
   "creation_date":"2014-05-26T11:56:25-05:00",
   "operation_date":"2014-05-26T11:56:25-05:00",
   "description":"Cargo inicial a mi cuenta",
   "error_message":null,
   "order_id":"oid-00052",
   "customer_id":"ag4nktpdzebjiye1tlze"
}

Si deseas realizar una devolución de un cargo hecho a tarjeta puedes ocupar este método. El monto a devolver será por el total del cargo o un monto menor. Ten en cuenta que la devolución puede tardar en aparecer en el estado de cuenta de tu cliente de 1 a 3 días hábiles.

Petición

PropiedadDescripción
descriptionstring (opcional, longitud = 250)
Texto libre para describir motivo de la devolución.
amountnumeric (opcional)
Cantidad a reembolsar. Debe ser una cantidad mayor a cero y menor o igual al cargo original, con hasta dos dígitos decimales.

Respuesta

Regresa un objeto de transacción con la información del cargo o una respuesta de error.

Obtener un cargo

Definición

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges/{TRANSACTION_ID}

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges/{TRANSACTION_ID}

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges/tr6cxbcefzatd10guvvw \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

{
   "id":"tr6cxbcefzatd10guvvw",
   "amount":100.00,
   "authorization":"801585",
   "method":"card",
   "operation_type":"in",
   "transaction_type":"charge",
   "card":{
      "type":"debit",
      "brand":"visa",
      "address":null,
      "card_number":"411111XXXXXX1111",
      "holder_name":"Juan Perez Ramirez",
      "expiration_year":"20",
      "expiration_month":"12",
      "allows_charges":true,
      "allows_payouts":true,
      "bank_name":"Banamex",
      "bank_code":"002"
   },
   "status":"completed",
   "refund":{
      "id":"trcbsmjkroqmjobxqhpb",
      "amount":100.00,
      "authorization":"801585",
      "method":"card",
      "operation_type":"out",
      "transaction_type":"refund",
      "status":"completed",
      "currency":"MXN",
      "creation_date":"2014-05-26T13:56:21-05:00",
      "operation_date":"2014-05-26T13:56:21-05:00",
      "description":"devolucion",
      "error_message":null,
      "order_id":null,
      "customer_id":"ag4nktpdzebjiye1tlze"
   },
   "currency":"MXN",
   "creation_date":"2014-05-26T11:56:25-05:00",
   "operation_date":"2014-05-26T11:56:25-05:00",
   "description":"Cargo inicial a mi cuenta",
   "error_message":null,
   "order_id":"oid-00052",
   "customer_id":"ag4nktpdzebjiye1tlze"
}

Regresa la información de un cargo generado en cualquier momento solo con conocer el id de cargo.

Petición

PropiedadDescripción
transaction_idstring (requerido, longitud = 45)
Identificador del cargo a consultar.

Respuesta

Regresa un objeto de transacción con la información del cargo o una respuesta de error.

Listado de cargos

Definición

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/charges

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/charges

Ejemplo de petición con cliente

curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/charges?creation[gte]=2013-11-01&limit=2" \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:  

Ejemplo de respuesta

[
   {
      "id":"tryqihxac3msedn4yxed",
      "amount":100.00,
      "authorization":"801585",
      "method":"card",
      "operation_type":"in",
      "transaction_type":"charge",
      "card":{
         "type":"debit",
         "brand":"visa",
         "address":null,
         "card_number":"411111XXXXXX1111",
         "holder_name":"Juan Perez Ramirez",
         "expiration_year":"20",
         "expiration_month":"12",
         "allows_charges":true,
         "allows_payouts":true,
         "bank_name":"Banamex",
         "bank_code":"002"
      },
      "status":"completed",
      "currency":"MXN",
      "creation_date":"2014-05-26T14:00:17-05:00",
      "operation_date":"2014-05-26T14:00:17-05:00",
      "description":"Cargo inicial a mi cuenta",
      "error_message":null,
      "order_id":null,
      "customer_id":"ag4nktpdzebjiye1tlze"
   },
   {
      "id":"trnzf2xjwpupjfryyj23",
      "amount":100.00,
      "authorization":null,
      "method":"bank_account",
      "operation_type":"in",
      "transaction_type":"charge",
      "status":"in_progress",
      "currency":"MXN",
      "creation_date":"2014-05-26T13:51:25-05:00",
      "operation_date":"2014-05-26T13:51:25-05:00",
      "description":"Cargo con banco",
      "error_message":null,
      "order_id":"oid-00055",
      "customer_id":"ag4nktpdzebjiye1tlze",
      "payment_method":{
         "type":"bank_transfer",
         "agreement" : "1411217",
         "bank":"BBVA Bancomer",
         "clabe":"012914002014112176",
         "name":"11030021342311520255"
      }
   }
]

Obtiene un listado de los cargos realizados por comercio o cliente.

Petición

Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.

PropiedadDescripción
order_idstring
Identificador único de la orden generado por el comercio y asociado a la transaccion mediante el campo order_id de la petición del cargo.
creationdate
Igual a la fecha de creación. Formato yyyy-mm-dd
creation[gte]date
Mayor a la fecha de creación. Formato yyyy-mm-dd
creation[lte]date
Menor a la fecha de creación. Formato yyyy-mm-dd
offsetnumeric
Número de registros a omitir al inicio, por defecto 0.
limitnumeric
Número de registros que se requieren, por defecto 10.
amountnumeric
Igual al monto.
amount[gte]numeric
Mayor o igual al monto.
amount[lte]numeric
Menor o igual al monto.
statusTransactionStatus
Estado de la transacción (IN_PROGRESS,COMPLETED,REFUNDED,CHARGEBACK_PENDING,CHARGEBACK_ACCEPTED,CHARGEBACK_ADJUSTMENT,CHARGE_PENDING,CANCELLED,FAILED).

Respuesta

Regresa un arreglo de objetos de transacción de los cargos en orden descendente por fecha de creación.

Pagos o retiros

Un pago es la transacción que permite extraer los fondos de una cuenta Openpay y enviarlos a una cuenta bancaria. Los pagos se pueden realizar desde las cuentas de los clientes o desde tu cuenta de comercio.

Pago a id registrado

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/payouts

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/payouts

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/payouts \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
    "method": "bank_account",
    "destination_id": "b3d54sd3mdjf75udjfvoc",
    "amount": 10.50,
    "description": "Retiro de saldo semanal",
    "order_id": "oid-00021"
}' 

Ejemplo de respuesta

{
   "amount":10.5,
   "authorization":null,
   "method":"bank_account",
   "currency":"MXN",
   "operation_type":"out",
   "transaction_type":"payout",
   "bank_account":{
      "id":"b3d54sd3mdjf75udjfvoc",
      "clabe":"012XXXXXXXXXX24616",
      "bank_code":"012",
      "bank_name":"BANCOMER",
      "alias":null,
      "holder_name":"Mi empresa"
   },
   "status":"in_progress",
   "id":"tm50pl40gf6awvalw1ei",
   "creation_date":"2013-11-15T13:42:00-06:00",
   "description":"Retiro de saldo semanal",
   "error_message":null,
   "order_id":"oid-00021",
   "customer_id":"aayr5jjb1fln44yautef"
}

Envío un pago a una cuenta bancaria previamente registrada. Consulte como crear una cuenta de bancaria

Petición

PropiedadDescripción
methodstring (requerido)
Debe contener el valor bank_account.
destination_idstring (requerido, longitud = 45)
El ID de la cuenta bancaria previamente registrada.
amountnumeric (requerido)
Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales.
descriptionstring (requerido, longitud = 250)
Una descripción asociada al cargo.
order_idstring (opcional, longitud = 100)
Identificador único del cargo. Debe ser único entre todas las transacciones.

Respuesta

Regresa un objeto de transacción con la información del pago o una respuesta de error.

Pago a cuenta bancaria

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/payouts

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/payouts

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/asynwirguzkgq2bizogo/payouts \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "method":"bank_account",
   "bank_account":{
      "clabe":"012298026516924616",
      "holder_name":"Mi empresa"
   },
   "amount":100.00,
   "description":"Retiro de saldo semanal",
   "order_id":"oid-1110011"
}' 

Ejemplo de respuesta

{
   "id":"tr4f2atubqchinw71vfs",
   "amount":10.50,
   "authorization":null,
   "method":"bank_account",
   "operation_type":"out",
   "transaction_type":"payout",
   "status":"in_progress",
   "currency":"MXN",
   "creation_date":"2014-05-26T17:23:03-05:00",
   "operation_date":"2014-05-26T17:23:03-05:00",
   "description":"Retiro de saldo semanal",
   "error_message":null,
   "order_id":"oid-1110011",
   "bank_account":{
      "clabe":"012XXXXXXXXXX24616",
      "bank_code":"012",
      "bank_name":"BANCOMER",
      "alias":null,
      "holder_name":"Mi empresa"
   },
   "customer_id":"asynwirguzkgq2bizogo"
}

Envía un pago a una cuenta bancaria.

Petición

PropiedadDescripción
methodstring (requerido)
Debe contener el valor bank_account.
bank_accountobject (requerido)
Datos de la cuenta bancaria a la que se enviarán los fondos.

clabe.- Número de cuenta CLABE de la cuenta a la que se enviarán los fondos.
holder_name.- Nombre del propietario de la cuenta.

amountnumeric (requerido)
Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales.
descriptionstring (requerido, longitud = 250)
Una descripción asociada al cargo.
order_idstring (opcional, longitud = 100)
Identificador único del cargo. Debe ser único entre todas las transacciones.

Respuesta

Regresa un objeto de transacción con la información del pago o una respuesta de error.

Obtener un pago

Definición

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/payouts/{TRANSACTION_ID}

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/payouts/{TRANSACTION_ID}

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/asynwirguzkgq2bizogo/payouts/trwpxhrgfeub9eqdyvqz \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

{
   "id":"trwpxhrgfeub9eqdyvqz",
   "amount":10.50,
   "authorization":"TRWPXHRGFEUB9EQDYVQZ",
   "method":"bank_account",
   "operation_type":"out",
   "transaction_type":"payout",
   "bank_account":{
      "clabe":"012XXXXXXXXXX24616",
      "bank_code":"012",
      "bank_name":"BANCOMER",
      "alias":null,
      "holder_name":"Mi empresa"
   },
   "status":"completed",
   "currency":"MXN",
   "creation_date":"2014-05-26T17:04:26-05:00",
   "operation_date":"2014-05-26T17:06:28-05:00",
   "description":"Retiro de saldo semanal",
   "error_message":null,
   "order_id":"oid-00021",
   "customer_id":"asynwirguzkgq2bizogo"
}

Regresa la información de un pago realizado. Es necesario conocer el id del pago.

Petición

PropiedadDescripción
transaction_idstring (requerido, longitud = 45)
Identificador del pago a consultar.

Respuesta

Regresa un objeto de transacción con la información del pago o una respuesta de error.

Cancelar un pago

Definición

Comercio
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/payouts/{TRANSACTION_ID}

Comercio
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/payouts/{TRANSACTION_ID}

Ejemplo de petición con cliente

curl -X DELETE https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/asynwirguzkgq2bizogo/payouts/trozeipf364jqrsbt3ej \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

{
   "id":"trozeipf364jqrsbt3ej",
   "amount":10.50,
   "authorization":"TROZEIPF364JQRSBT3EJ",
   "method":"bank_account",
   "operation_type":"out",
   "transaction_type":"payout",
   "bank_account":{
      "clabe":"012XXXXXXXXXX24616",
      "bank_code":"012",
      "bank_name":"BANCOMER",
      "alias":null,
      "holder_name":"Mi empresa"
   },
   "status":"cancelled",
   "currency":"MXN",
   "creation_date":"2014-05-26T17:04:26-05:00",
   "operation_date":"2014-05-26T17:06:28-05:00",
   "description":"Retiro de saldo semanal",
   "error_message":null,
   "order_id":"oid-00021",
   "customer_id":"asynwirguzkgq2bizogo"
}

Cancela un pago previamente programado en estado in_progress, es decir el pago no debe estar completado. Es necesario conocer el id del pago.

Petición

PropiedadDescripción
transaction_idstring (requerido, longitud = 45)
Identificador del pago a cancelar.

Respuesta

Regresa un objeto de transacción con la información del pago cancelado o una respuesta de error.

Listado de pagos

Definición

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/payouts

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/payouts

Ejemplo de petición

curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/asynwirguzkgq2bizogo/payouts?creation[gte]=2013-11-01&limit=2&payout_type=AUTOMATIC" \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: 

Ejemplo de respuesta

[
   {
      "id":"tr4f2atubqchinw71vfs",
      "amount":10.50,
      "authorization":"TR4F2ATUBQCHINW71VFS",
      "method":"bank_account",
      "operation_type":"out",
      "transaction_type":"payout",
      "status":"completed",
      "currency":"MXN",
      "creation_date":"2014-05-26T17:23:03-05:00",
      "operation_date":"2014-05-26T17:26:27-05:00",
      "description":"Retiro de saldo semanal",
      "error_message":null,
      "order_id":"oid-1110011",
      "bank_account":{
         "clabe":"012XXXXXXXXXX24616",
         "bank_code":"012",
         "bank_name":"BANCOMER",
         "alias":null,
         "holder_name":"Mi empresa"
      },
      "customer_id":"asynwirguzkgq2bizogo"
   },
   {
      "id":"trwpxhrgfeub9eqdyvqz",
      "amount":10.50,
      "authorization":"TRWPXHRGFEUB9EQDYVQZ",
      "method":"bank_account",
      "operation_type":"out",
      "transaction_type":"payout",
      "bank_account":{
         "clabe":"012XXXXXXXXXX24616",
         "bank_code":"012",
         "bank_name":"BANCOMER",
         "alias":null,
         "holder_name":"Mi empresa"
      },
      "status":"completed",
      "currency":"MXN",
      "creation_date":"2014-05-26T17:04:26-05:00",
      "operation_date":"2014-05-26T17:06:28-05:00",
      "description":"Retiro de saldo semanal",
      "error_message":null,
      "order_id":"oid-00021",
      "customer_id":"asynwirguzkgq2bizogo"
   }
]

Obtiene un listado de los pagos realizados a nivel comercio o cliente.

Petición

Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.

PropiedadDescripción
creationdate
Igual a la fecha de creación. Formato yyyy-mm-dd
creation[gte]date
Mayor a la fecha de creación. Formato yyyy-mm-dd
creation[lte]date
Menor a la fecha de creación. Formato yyyy-mm-dd
offsetnumeric
Número de registros a omitir al inicio, por defecto 0.
limitnumeric
Número de registros que se requieren, por defecto 10.
amountnumeric
Igual al monto.
amount[gte]numeric
Mayor o igual al monto.
amount[lte]numeric
Menor o igual al monto.
payout_typestring (opcional, ALL, AUTOMATIC o MANUAL)
Tipo de payout usado para filtrar las transacciones

Respuesta

Regresa un listado de objetos de transacción de los pagos en orden descendente por fecha de creación.

Resumen de Pagos

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/reports/payout/{TRANSACTION_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/reports/payout/trwpxhrgfeub9eqdyvqz \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

{
  "in": 2700,
  "out": 2400,
  "charged_adjustments": 0,
  "refunded_adjustments": 0
}

Regresa el resumen de un pago realizado. Es necesario conocer el id del pago.

Petición

PropiedadDescripción
transaction_idstring (requerido, longitud = 45)
Identificador del pago a consultar.

Respuesta

Regresa un objeto de resumen de pagos con el resumen del pago o una respuesta de error.

Objeto Resumen de Pagos

Ejemplo de objeto

{
   "in":2700,
   "out":2400,
   "charged_adjustments":0,
   "refunded_adjustments":0
}
PropiedadDescripción
innumeric
Monto total de entrada, Debe ser una cantidad con hasta 2 dígitos decimales.
outnumeric
Monto total de salida, Debe ser una cantidad con hasta 2 dígitos decimales.
charged_adjustmentsnumeric
Monto total de cargos de ajuste, Debe ser una cantidad con hasta 2 dígitos decimales.
refunded_adjustmentsnumeric
Monto total de cargos de devolución, Debe ser una cantidad con hasta 2 dígitos decimales.

Detalle de Pagos

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/reports/payout/{TRANSACTION_ID}/detail

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/reports/payout/trwpxhrgfeub9eqdyvqz/detail?detail_type=IN \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

[
  {
    "id": "trqcwapqeilg596zwrvr",
    "authorization": "7BXqDL1fjb",
    "method": "bank_account",
    "operation_type": "in",
    "transaction_type": "charge",
    "status": "completed",
    "conciliated": true,
    "creation_date": "2016-09-13T12:57:34-05:00",
    "operation_date": "2016-09-13T12:57:34-05:00",
    "description": "mexzhpxok3houd5lbvz1",
    "error_message": null,
    "order_id": null,
    "bank_account": {
      "clabe": "113XXXXXXXXXX09568",
      "bank_code": "113",
      "bank_name": "VE POR MAS",
      "rfc": "OPE130906HN4",
      "holder_name": "persona003"
    },
    "amount": 700,
    "currency": "MXN"
  },
  {
    "id": "tru6lsl6xpvseqp87vjd",
    "authorization": "FPVYiN4nyw",
    "method": "card",
    "operation_type": "in",
    "transaction_type": "charge",
    "card": {
      "type": "debit",
      "brand": "mastercard",
      "address": null,
      "card_number": "555555XXXXXX4444",
      "holder_name": "persona003",
      "expiration_year": null,
      "expiration_month": null,
      "allows_charges": false,
      "allows_payouts": false,
      "bank_name": "MASARI",
      "bank_code": "602"
    },
    "status": "completed",
    "conciliated": true,
    "creation_date": "2016-09-13T12:57:16-05:00",
    "operation_date": "2016-09-13T12:57:16-05:00",
    "description": "mexzhpxok3houd5lbvz1",
    "error_message": null,
    "order_id": null,
    "amount": 2000,
    "currency": "MXN"
  }
]

Regresa el listado las transacciones involucradas en un pago realizado. Es necesario conocer el id del pago.

Petición

PropiedadDescripción
transaction_idstring (requerido, longitud = 45)
Identificador del pago a consultar.
detail_typestring (IN, OUT, CHARGED_ADJUSTMENTS, REFUNDED_ADJUSTMENTS)
Tipo de detalle.
offsetnumeric
Número de registros a omitir al inicio, por defecto 0.
limitnumeric
Número de registros que se requieren, por defecto 10.

Respuesta

Regresa un listado de objetos transacción o una respuesta de error.

Clientes

Los clientes son recursos en Openpay que se manejan dentro de su cuenta de comercio y puede representar usuarios, clientes o socios segun el tipo de negocio.

A los clientes les puedes agregar tarjetas y cuentas de banco para despues realizar transacciones de Cargo, Transferencia o Pago.

Objeto Cliente

Ejemplo de objeto

{
   "id":"cz4nkhrlcu9k7qd4lwqx",
   "creation_date":"2013-11-08T12:04:46-06:00",
   "name":"Rodrigo",
   "last_name":"Velazco Perez",
   "email":"rodrigo.velazco@payments.com", 
   "phone_number":"4425667045",
   "external_id":"cliente1",
   "status":"active",
   "balance":103,
   "address":{
      "line1":"Av. 5 de febrero No. 1080 int Roble 207",
      "line2":"Carrillo puerto",
      "line3":"Zona industrial carrillo puerto",
      "postal_code":"06500",
      "state":"Querétaro",
      "city":"Querétaro",
      "country_code":"MX"
   },
   "store": {
       "reference": "OPENPAY02DQ35YOY7",
       "barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
   },
   "clabe": "646180109400423323"
}
PropiedadDescripción
idstring
Identificador único del cliente.
creation_datedatetime
Fecha y hora en que se creó el cliente en formato ISO 8601
namestring
Nombre del cliente.
last_namestring
Apellidos del cliente.
emailstring
Cuenta de correo electrónico del cliente.
phone_numbernumeric
Número telefónico del Cliente.
statusstring
Estatus de la cuenta del cliente puede ser active o deleted. Si la cuenta se encuentra en estatus deleted no se permite realizar ninguna transacción.
balancenumeric
Saldo en la cuenta con dos decimales.
clabenumeric
Cuenta CLABE asociada con la que puede recibir fondos realizando una transferencia desde cualquier banco en México.
addressobject
Dirección del Cliente. Usada comúnmente como dirección de envío.
storeobject
Contiene la referencia que se puede utilizar para realizar depósitos en tiendas de conveniencia, también se incluye la url para generar el código de barras.

Crear un nuevo cliente

Definición

POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "name": "customer name",
   "email": "customer_email@me.com",
   "requires_account": false 
   }' 

Ejemplo de respuesta

{
   "id":"anbnldwgni1way3yp2dw",
   "name":"customer name",
   "last_name":null,
   "email":"customer_email@me.com",
   "phone_number":null,
   "address":null,
   "creation_date":"2014-05-20T16:47:47-05:00",
   "external_id":null,
   "store": {
       "reference": "OPENPAY02DQ35YOY7",
       "barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
   },
   "clabe": "646180109400423323"
}

Crea un objeto cliente.

Petición

PropiedadDescripción
external_idstring (opcional, longitud = 100)
Identificador externo único para el cliente asignado por el comercio.
namestring (requerido, longitud = 100)
Nombre(s) del cliente.
last_namestring (opcional, longitud = 100)
Apellidos del cliente.
emailstring (requerido, longitud = 100)
Cuenta de correo electrónico del Cliente.
requires_accountboolean (opcional, default = false)
Enviar con valor true si requiere que el cliente se cree con cuenta para manejo del saldo.
phone_numberstring (opcional, longitud = 100)
Número telefónico del Cliente.
addressobject (opcional)
Dirección del Cliente. Usada comúnmente como dirección de envío.

Respuesta

Un objeto cliente en caso de que se hayan enviado todos los datos correctamente, o una respuesta de error si ocurrió algún problema en la creación.

Actualizar un cliente

Definición

PUT https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/anbnldwgni1way3yp2dw \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X PUT -d '{
   "name": "customer name",
   "email": "customer_email@me.com",
   "address":{
      "city":"Queretaro",
      "state":"Queretaro",
      "line1":"Calle 10",
      "postal_code":"76000",
      "line2":"col. san pablo",
      "line3":"entre la calle 1 y la 2",
      "country_code":"MX"
   },
   "phone_number":"44209087654"
 }' 

Ejemplo de respuesta

{
   "id":"anbnldwgni1way3yp2dw",
   "name":"customer name",
   "last_name":null,
   "email":"customer_email@me.com",
   "phone_number":"44209087654",
   "address":{
      "line1":"Calle 10",
      "line2":"col. san pablo",
      "line3":"entre la calle 1 y la 2",
      "state":"Queretaro",
      "city":"Queretaro",
      "postal_code":"76000",
      "country_code":"MX"
   },
   "store": {
       "reference": "OPENPAY02DQ35YOY7",
       "barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
   },
   "clabe": "646180109400423323",
   "creation_date":"2014-05-20T16:47:47-05:00",
   "external_id":null
}

Actualiza uno o más datos del cliente.

Petición

PropiedadDescripción
namestring (requerido, longitud = 100)
Nombre(s) del cliente.
last_namestring (opcional, longitud = 100)
Apellidos del cliente.
emailstring (requerido, longitud = 100)
Cuenta de correo electrónico del Cliente.
phone_numberstring (opcional, longitud = 100)
Número telefónico del Cliente.
addressobject
Dirección del Cliente. Usada comúnmente como dirección de envío.

Respuesta

Regresa un objeto cliente con la información actualizada, o una respuesta de error si ocurrió algún problema en la actualización.

Obtener un cliente existente

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/anbnldwgni1way3yp2dw \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" 

Ejemplo de respuesta

{
   "id":"anbnldwgni1way3yp2dw",
   "name":"customer name",
   "last_name":null,
   "email":"customer_email@me.com",
   "phone_number":"44209087654",
   "address":{
      "line1":"Calle 10",
      "line2":"col. san pablo",
      "line3":"entre la calle 1 y la 2",
      "state":"Queretaro",
      "city":"Queretaro",
      "postal_code":"76000",
      "country_code":"MX"
   },
   "store": {
       "reference": "OPENPAY02DQ35YOY7",
       "barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
   },
   "clabe": "646180109400423323",
   "creation_date":"2014-05-20T16:47:47-05:00",
   "external_id":null
}

Obtiene la información actual de un cliente existente. Solo es necesario especificar el identificador que fue regresado al momento de crear el cliente.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador único del cliente que se desea obtener.

Respuesta

Si el identificador existe regresa un objeto cliente con la información del cliente.

Eliminar un cliente

Definición

DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/anbnldwgni1way3yp2dw \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X DELETE

Elimina un cliente permanentemente. Openpay mantiene los registros de las operaciones. El cliente no se podrá borrar si su saldo es mayor a 0 (para cliente con manejo de saldo)

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador único del cliente a borrar.

Respuesta

Si el cliente se borra correctamente la respuesta es vacía, si no se puede borrar se regresa un objeto error indicando el motivo.

Listado de clientes

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers

Ejemplo de petición

curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers?creation[gte]=2013-11-01&limit=2" \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" 

Ejemplo de respuesta

[{
   "id":"cpjdhf754ythr65yu9k7q",
   "creation_date":"2013-11-08T12:04:46-06:00",
   "name":"Rodrigo",
   "last_name":"Velazco Perez",
   "email":"rodrigo.velazco@payments.com",
   "phone_number":"4425667045",
   "status":"active",
   "balance":142.5,
   "store": {
       "reference": "OPENPAY02DQ35YOY7",
       "barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
   },
   "clabe": "646180109400423323"
}, {
   "id":"cz4nkhrlcu9k7qd4lwqx",
   "creation_date":"2013-11-07T14:54:46-06:00",
   "name":"Eriberto",
   "last_name":"Rodriguez Lopez",
   "email":"eriberto.rodriguez@payments.com",
   "phone_number":"442",
   "status":"active",
   "balance":103,
   "store": {
       "reference": "OPENPAY02DQWERWJ3",
       "barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQWERWJ3?width=1&height=45&text=false"
   },
   "clabe": "646180109400423323"
}]

Regresa una lista de los cliente registrados, si desea delimitar el resultado se pueden utilizar los filtros.

Petición

Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.

PropiedadDescripción
external_idstring
Identificador único del cliente asignado por el comercio que se desea obtener.
creationdate
Igual a la fecha de creación del cliente. Formato yyyy-mm-dd
creation[gte]date
Mayor a la fecha de creación del cliente .Formato yyyy-mm-dd
creation[lte]date
Menor a la fecha de creación del cliente .Formato yyyy-mm-dd
offsetnumeric
Número de registros a omitir al inicio, por defecto 0.
limitnumeric
Número de registros que se requieren, por defecto 10.

Respuesta

Regresa un arreglo de objetos cliente.

Transferencias

El servicio permite transferir fondos entre las cuentas de tus clientes.

Transferir entre clientes

Definición

POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/transfers

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/transfers \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{                                            
     "customer_id" : "dvocf97jd20es3tw5laz",
     "amount" : 12.50,          
     "description" : "Transferencia entre cuentas",
     "order_id" : "oid-1245"
}' 

Ejemplo de respuesta

{
   "amount":12.50,
   "authorization":null,
   "method":"customer",
   "operation_type":"out",
   "currency":"MXN",
   "transaction_type":"transfer",
   "status":"completed",
   "id":"twpmbike2jejex3pahzd",
   "creation_date":"2013-11-15T10:33:19-06:00",
   "description":"Transferencia entre cuentas",
   "error_message":null,
   "order_id":"oid-1245",
   "customer_id":"a9pvykxz4g5rg0fplze0",
   "store": {
       "reference": "OPENPAY02DQ35YOY7",
       "barcode_url": "https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false"
   },
   "clabe": "646180109400423323"
}

Realiza la transferencia de fondos de una cuenta de cliente a otra. Los fondos serán cargos a una cuenta origen y abonados a la cuenta destino, lo cual generá dos transacciones.

Petición

PropiedadDescripción
customer_idstring (requerido, longitud = 45)
El ID de Openpay del cliente al que deseas enviarle los fondos.
amountnumeric (requerido)
Cantidad a transferir. Debe ser una cantidad mayor a un peso, con hasta dos dígitos decimales.
descriptionstring (requerido, longitud = 250)
Una descripción asociada a la transferencia.
order_idstring (opcional, longitud = 100)
Identificador único de la transferencia. Será asignado a la transacción de retiro.

Respuesta

Si la transacción se realiza correctamente, la respuesta contendrá un objeto de transacción. Este objeto representará el retiro de fondos del cliente actual. En caso de error, se regresará el objeto de error.

Obtener una transferencia

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/transfers/{TRANSACTION_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/transfers/twpmbike2jejex3pahzd \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" 

Ejemplo de respuesta

{
   "amount":12.50,
   "authorization":null,
   "method":"customer",
   "operation_type":"out",
   "currency":"MXN",
   "transaction_type":"transfer",
   "status":"completed",
   "id":"twpmbike2jejex3pahzd",
   "creation_date":"2013-11-15T10:33:19-06:00",
   "description":"Transferencia entre cuentas",
   "error_message":null,
   "order_id":"oid-1245",
   "customer_id":"dvocf97jd20es3tw5laz"
}

Con el identificador del cliente y el identificador de la transferencia, se puede obtener el detalle de la transacción. La transacción de salida se encontrará en el cliente desde el cual se realizó la transferencia, y la transacción de entrada en el cliente que recibió el monto.

Petición

PropiedadDescripción
customer_idstring (requerido, longitud = 45)
Identificador del cliente
transaction_idstring (requerido, longitud = 45)
Identificador de la transferencia

Respuesta

Regresa un objeto de transacción

Listado de transferencias

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/transfers

Ejemplo de petición

curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/transfers?limit=2" \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: 

Ejemplo de respuesta

[
   {
      "amount":130.00,
      "authorization":null,
      "method":"customer",
      "currency":"MXN",
      "operation_type":"out",
      "transaction_type":"transfer",
      "status":"completed",
      "id":"a74mbe4e2j5gc6gfahzd",
      "creation_date":"2013-09-18T00:31:19-06:00",
      "description":"Una descripcion",
      "error_message":null,
      "order_id":"20131115103317",
      "customer_id":"afk4csrazjp1udezj1po"
   },
   {
      "amount":130.00,
      "authorization":null,
      "method":"customer",
      "currency":"MXN",
      "operation_type":"in",
      "transaction_type":"transfer",
      "status":"completed",
      "id":"a74mbe4e2j5gc6gfahzd",
      "creation_date":"2013-09-18T00:31:19-06:00",
      "description":"Una descripcion",
      "error_message":null,
      "order_id":null,
      "customer_id":"agdn58ngcnogqmzruz1i"
   }
]

Permite consultar las transacciones de entrada y salida de un cliente.

Petición

Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.

PropiedadDescripción
creationdate
Igual a la fecha de creación. Formato yyyy-mm-dd
creation[gte]date
Mayor a la fecha de creación. Formato yyyy-mm-dd
creation[lte]date
Menor a la fecha de creación. Formato yyyy-mm-dd
offsetnumeric
Número de registros a omitir al inicio, por defecto 0.
limitnumeric
Número de registros que se requieren, por defecto 10.

Respuesta

Listado de objetos transacción de las transferencias realizadas, cada uno con el identificador del cliente al que se le realizó. Las transacciones serán listadas en orden descendente por fecha de creación.

Tarjetas

Dentro de la plataforma Openpay podrás agregar tarjetas a la cuenta del cliente, eliminarlas, recuperar alguna en específico y listarlas​.

Se pueden almacenar múltiples tarjetas de débito y/o crédito a nivel cliente o a nivel comercio para realizar cargos posteriormente sin la necesidad de introducir nuevamente la información.

Objeto Tarjeta

Ejemplo de objeto

{
   "type":"debit",
   "brand":"mastercard",
   "address":{
      "line1":"Av 5 de Febrero",
      "line2":"Roble 207",
      "line3":"col carrillo",
      "state":"Queretaro",
      "city":"Querétaro",
      "postal_code":"76900",
      "country_code":"MX"
   },
   "id":"kgipbqixvjg3gbzowl7l",
   "card_number":"1111",
   "holder_name":"Juan Perez Ramirez",
   "expiration_year":"20",
   "expiration_month":"12",
   "allows_charges":true,
   "allows_payouts":false,
   "creation_date":"2013-12-12T17:50:00-06:00",
   "bank_name":"DESCONOCIDO",
   "bank_code":"000",
   "customer_id":"a2b79p8xmzeyvmolqfja",
   "points_card":true
}
PropiedadDescripción
idstring
Identificador único de la tarjeta.
creation_datedatetime
Fecha y hora en que se creó la tarjeta en formato ISO 8601
holder_namestring
Nombre del tarjeta habiente.
card_numbernumeric
Número de tarjeta, puede ser de 16 o 19 dígitos.
cvv2numeric
Código de seguridad como aparece en la parte de atrás de la tarjeta. Generalmente 3 dígitos.
expiration_monthnumeric
Mes de expiración tal como aparece en la tarjeta.
expiration_yearnumeric
Año de expiración tal como aparece en la tarjeta.
addressobject
Dirección de facturación del tarjeta habiente.
allows_chargesboolean
Permite conocer si se pueden realizar cargos a la tarjeta.
allows_payoutsboolean
Permite conocer si se pueden realizar envíos de pagos a la tarjeta.
brandstring
Marca de la tarjeta: visa, mastercard, carnet o american express.
typestring
Tipo de la tarjeta: debit, credit, cash, etc.
bank_namestring
Nombre del banco emisor.
bank_codestring
Código del banco emisor.
customer_idstring
Identificador del cliente al que pertenece la tarjeta. Si la tarjeta es a nivel comercio este valor será null.
points_cardboolean
Indica si la tarjeta soporta el pago con puntos.

Crear una tarjeta

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "card_number":"4111111111111111",
   "holder_name":"Juan Perez Ramirez",
   "expiration_year":"20",
   "expiration_month":"12",
   "cvv2":"110",
   "device_session_id" : "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f"
 }' 

Ejemplo de respuesta

{
   "id":"ktrpvymgatocelsciak7",
   "type":"debit",
   "brand":"visa",
   "card_number":"411111XXXXXX1111",
   "holder_name":"Juan Perez Ramirez",
   "expiration_year":"20",
   "expiration_month":"12",
   "allows_charges":true,
   "allows_payouts":true,
   "creation_date":"2014-05-21T17:31:01-05:00",
   "bank_name":"Banamex",
   "customer_id":"ag4nktpdzebjiye1tlze",
   "bank_code":"002"
}

Cuando se crea una tarjeta debe especificarse cliente, si no se especifica el cliente la tarjeta quedará registrada para la cuenta del comercio. Una vez guardada la tarjeta no se puede obtener el número y código de seguridad.

Al momento de guardar la tarjeta se generará un id que podrá ser usado para hacer cargos a la tarjeta, envíos a una tarjeta o simplemente obtener la información no sensible de la tarjeta.

Cuando se crea una tarjeta puede usarse o no la implementación del sistema antifraude. La propiedad device_session_id deberá ser generada desde el API JavaScript, véase Fraud detection using device data.

Petición

PropiedadDescripción
holder_namestring (requerido, longitud = 80)
Nombre del tarjeta habiente.
card_numbernumeric (requerido)
Número de tarjeta puede ser de 16 o 19 dígitos.
cvv2numeric (requerido)
Código de seguridad como aparece en la parte de atrás de la tarjeta. Generalmente 3 dígitos.
expiration_monthnumeric (requerido)
Mes de expiración tal como aparece en la tarjeta.
expiration_yearnumeric (requerido)
Año de expiración tal como aparece en la tarjeta.
device_session_idstring (opcional, longitud = 255)
Identificador del dispositivo generado con la herramienta antifraudes.
addressobject
Dirección de facturación del tarjeta habiente.

Respuesta

Regresa un objeto tarjeta cuando se creó correctamente o una respuesta de error si ocurrió algún problema en la creación.

Crear una tarjeta con token

Definición

Comercio
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards

Cliente
POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
      "token_id":"tokgslwpdcrkhlgxqi9a",
      "device_session_id":"8VIoXj0hN5dswYHQ9X1mVCiB72M7FY9o"
   }' 

Ejemplo de respuesta

{
   "type":"credit",
   "brand":"visa",
   "id":"kso4st83wxaibffyt6su",
   "card_number":"4242",
   "holder_name":"Juan Perez Ramirez",
   "expiration_year":"15",
   "expiration_month":"12",
   "allows_charges":true,
   "allows_payouts":false,
   "creation_date":"2014-02-12T10:57:09-06:00",
   "bank_name":"BANCOMER",
   "bank_code":"012",
   "customer_id":"a2b79p8xmzeyvmolqfja"
}

Crea una tarjeta a partir de un token obtenido desde el navegador o dispositivo del cliente. Esta forma evita que la información sensible de la tarjeta pase por tus servidores.

Petición

PropiedadDescripción
token_idstring (requerido, longitud = 45)
Identificador del token generado en el navegador o dispositivo del cliente.
device_session_idstring (requerido, longitud = 255)
Identificador del dispositivo generado con la herramienta antifraudes

Respuesta

Regresa un objeto tarjeta

Obtener una tarjeta

Definición

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards/{CARD_ID}

Cliente
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/ktrpvymgatocelsciak7 \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" 

Ejemplo de respuesta

{
   "id":"ktrpvymgatocelsciak7",
   "type":"debit",
   "brand":"visa",
   "card_number":"411111XXXXXX1111",
   "holder_name":"Juan Perez Ramirez",
   "expiration_year":"20",
   "expiration_month":"12",
   "allows_charges":true,
   "allows_payouts":true,
   "creation_date":"2014-05-21T17:31:01-05:00",
   "bank_name":"Banamex",
   "customer_id":"ag4nktpdzebjiye1tlze",
   "bank_code":"002"
}

Obtiene los detalles de una tarjeta solicitándola con su id.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador único de la tarjeta

Respuesta

Regresa un objeto tarjeta

Consulta de puntos

Definición

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards/{CARD_ID}/points

Cliente
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}/points

Token
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/tokens/{TOKEN_ID}/points

Ejemplo de petición con cliente

curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/ktrpvymgatocelsciak7/points" \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

[
   {
      "points_type": "santander",
      "remaining_points":"300",
      "remaining_mxn":"22.5"
   }
]

Regresa el balance de puntos de la tarjeta. Solo aplicable a puntos Santander, Scotiabank y Bancomer.

Petición

Puedes consultar los puntos de una tarjeta perteneciente a un comercio o un cliente mediante el id de la tarjeta

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador único de la tarjeta

También puedes consultar los puntos de la tarjeta de un comercio mediante el token de la tarjeta

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador de token

Respuesta

PropiedadDescripción
points_typeTipo de puntos aceptados por la tarjeta (Santander, Scotiabank ó Bancomer)
remaining_pointsCantidad de puntos restante
remaining_mxnSaldo de puntos restante en pesos

Eliminar una tarjeta

Definición

Comercio
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards/{CARD_ID}

Cliente
DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/ktrpvymgatocelsciak7 \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -X DELETE

Elimina una tarjeta del cliente o comercio. Una vez eliminada no se permitirá hacer movimientos, sin embargo, se mantendrán todos los registros de operaciones que haya realizado y se podrán consultar en el dashboard.

Para eliminarla sólo es necesario proporcionar el identificador de la tarjeta.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador único de la tarjeta

Respuesta

Si la tarjeta se borra correctamente la respuesta es vacía, si no se puede borrar se regresa un objeto error indicando el motivo.

Listado de tarjetas

Definición

Comercio
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers

Cliente
GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards

Ejemplo de petición con cliente

curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards?limit=2" \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: 

Ejemplo de respuesta

[
   {
      "id":"kxq1rpdymlcpxekvjsxm",
      "card_number":"1118",
      "holder_name":"Pedro Paramo",
      "expiration_year":"15",
      "expiration_month":"12",
      "allows_charges":true,
      "allows_payouts":true,
      "creation_date":"2013-11-20T09:22:25-06:00",
      "bank_name":"BBVA BANCOMER",
      "bank_code":"012",
      "type":"debit",
      "brand":"mastercard"
   },
   {
      "id":"kgjy0jiami01kkpdoywr",
      "card_number":"1111",
      "holder_name":"Pedro Paramo",
      "expiration_year":"15",
      "expiration_month":"12",
      "allows_charges":true,
      "allows_payouts":true,
      "creation_date":"2013-11-19T13:26:12-06:00",
      "bank_name":"BBVA BANCOMER",
      "bank_code":"012",
      "type":"debit",
      "brand":"mastercard"
   }
]

Regresa una lista de las tarjetas registrados por comercio o cliente, si desea delimitar el resultado se pueden utilizar los filtros.

Petición

Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.

PropiedadDescripción
creationdate
Igual a la fecha de creación. Formato yyyy-mm-dd
creation[gte]date
Mayor a la fecha de creación. Formato yyyy-mm-dd
creation[lte]date
Menor a la fecha de creación. Formato yyyy-mm-dd
offsetnumeric
Número de registros a omitir al inicio, por defecto 0.
limitnumeric
Número de registros que se requieren, por defecto 10.

Respuesta

Listado de objetos tarjeta registrados de acuerdo a los parámetros proporcionados, ordenadas por fecha de creación en orden descendente.

Actualizar tarjeta

Definición

Comercio
PUT https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/cards/{CARD_ID}

Cliente
PUT https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/cards/{CARD_ID}

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/cards/kysc8pycq8hnlzivk1x4 \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X PUT -d '{
      "cvv2":"000"
   }' 

Ejemplo de respuesta

{
}

Actualiza los datos de una tarjeta desde el navegador o dispositivo del cliente. También permite enviar un cvv2 que se usará en el próximo cargo que se realice a esta tarjeta. De esta forma evita que la información sensible de la tarjeta pase por tus servidores.

Petición

PropiedadDescripción
holder_namestring (opcional)
Nombre del tarjeta habiente.
cvv2string (opcional)
Código de seguridad como aparece en la parte de atrás de la tarjeta. Generalmente 3 dígitos.
expiration_monthnumeric (opcional)
Mes de expiración tal como aparece en la tarjeta.
expiration_yearnumeric (opcional)
Año de expiración tal como aparece en la tarjeta.
merchant_idstring (condicional)
ID del comercio. Usado solamente cuando se usa un grupo de comercio.

Respuesta

Actualmente regresa un JSON sin datos. Considerar que se podría extender la respuesta en el futuro.

Cuentas Bancarias

Se pueden almacenar múltiples cuentas bancarias por cliente o por comercio para posteriormente retirar fondos.

Objeto Cuenta Bancaria

Ejemplo de objeto

{
   "id":"brppwl9nwmruogk2do0j",
   "clabe":"032180000118359719",
   "bank_code":"032",
   "bank_name":"IXE",
   "alias":null,
   "holder_name":"Juan Hernández Sánchez",
   "creation_date":"2013-11-14T12:29:18-06shell00"
}
PropiedadDescripción
idstring
ID de la cuenta bancaria.
holder_namestring
Nombre completo del titular.
aliasstring
Nombre por el cual se identifica a la cuenta bancaria.
clabestring
Número CLABE asignado a la cuenta bancaria.
bank_namestring
Nombre abreviado del banco donde radica la cuenta, en base al siguiente catálogo de Códigos de Banco.
bank_codestring
Código del banco donde radica la cuenta bancaria, en base al siguiente catálogo de Códigos de Banco.
creation_date datetime
Fecha y hora en que se creó la cuenta bancaria en formato ISO 8601.

Crear una cuenta bancaria

Definición

POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/bankaccounts

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/bankaccounts \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "clabe":"032180000118359719",
   "alias":"Cuenta principal",
   "holder_name":"Juan Hernández Sánchez"
}'

Ejemplo de respuesta

{
   "id":"buyj4apkwilpp2jfxr9r",
   "clabe":"032XXXXXXXXXX59719",
   "bank_code":"032",
   "bank_name":"IXE",
   "alias":"Cuenta principal",
   "holder_name":"Juan Hernández Sánchez",
   "creation_date":"2014-05-22T11:02:10-05:00"
}

Crea y asigna una cuenta bancaria al cliente espeficado.

Petición

PropiedadDescripción
holder_namestring (requerido, longitud = 80)
Nombre completo del titular.
aliasstring (opcional, longitud = 45)
Nombre por el cual el se identifica a la cuenta bancaria.
clabestring (requerido, longitud = 45)
Número CLABE asignado a la cuenta bancaria.

Respuesta

Regresa un objeto cuenta bancaria creado o un error en caso de ocurrir algún problema.

Obtener una cuenta bancaria

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/bankaccounts/{BANK_ACCOUNT_ID}

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/bankaccounts/buyj4apkwilpp2jfxr9r \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

{
   "id":"buyj4apkwilpp2jfxr9r",
   "clabe":"032XXXXXXXXXX59719",
   "bank_code":"032",
   "bank_name":"IXE",
   "alias":"Cuenta principal",
   "holder_name":"Juan Hernández Sánchez",
   "creation_date":"2014-05-22T11:02:10-05:00"
}

Obtiene los detalles de una cuenta bancaria asignada a un cliente.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador único de la cuenta bancaria

Respuesta

Regresa un objeto cuenta bancaria

Eliminar una cuenta bancaria

Definición

DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/bankaccounts/{BANK_ACCOUNT_ID}

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/bankaccounts/buyj4apkwilpp2jfxr9r \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -X DELETE

Elimina la cuenta bancaria asociada al cliente. Las transacciones que se encuentran asociadas a esta cuenta no sufren cambios y se podrán seguir consultando.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador único de la cuenta bancaria.

Respuesta

Si la cuenta bancaria se borra correctamente la respuesta es vacía, si no se puede borrar se regresa un objeto error indicando el motivo.

Listado de cuentas bancarias

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/bankaccounts

Ejemplo de petición con cliente

curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/bankaccounts?limit=2" \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: 

Ejemplo de respuesta

[{
   "id":"brppwl9nwmruogk2do0j",
   "clabe":"032180000118359719",
   "bank_code":"032",
   "bank_name":"IXE",
   "alias":null,
   "holder_name":"Juan Hernández Sánchez",
   "creation_date":"2013-11-14T12:29:18-06:00"
},
{
   "id":"bb0zt72rxoyiwz9jzzai",
   "clabe":"012680012426485980",
   "bank_code":"012",
   "bank_name":"BANCOMER",
   "alias":null,
   "holder_name":"Juan Hernández Sánchez",
   "creation_date":"2013-11-14T18:07:45-06:00"
}]

Regresa los detalles de todas las cuentas bancarias del cliente especificado en la petición.

Petición

Puede realizar una búsqueda utilizando los siguiente parámetros como filtros.

PropiedadDescripción
creationdate
Igual a la fecha de creación. Formato yyyy-mm-dd
creation[gte]date
Mayor a la fecha de creación. Formato yyyy-mm-dd
creation[lte]date
Menor a la fecha de creación. Formato yyyy-mm-dd
offsetnumeric
Número de registros a omitir al inicio, por defecto 0.
limitnumeric
Número de registros que se requieren, por defecto 10.

Respuesta

Listado de objetos cuenta bancaria registrados de acuerdo a los parámetros proporcionados, ordenadas por fecha de creación en orden descendente.

Planes

Los planes son recursos en Openpay que permiten crear plantillas para las suscripciones. Con ellos podrás definir la cantidad y frecuencia con la que se realizarán los cargos recurrentes.

Objeto Plan

Ejemplo de objeto

{
    "name": "Curso de ingles",
    "status": "active",
    "amount": 150,
    "currency": "MXN",
    "id": "patpflacwilazguj6bem",
    "creation_date": "2013-12-13T09:43:52-06:00",
    "repeat_every": 1,
    "repeat_unit": "month",
    "retry_times": 2,
    "status_after_retry": "cancelled",
    "trial_days": 30
}
PropiedadDescripción
idstring
Identificador único del Plan.
creation_datedatetime
Fecha y hora en que se creó el Plan en formato ISO 8601
namestring
Nombre del Plan.
amountnumeric
Monto que se aplicará cada vez que se cobre la suscripción. Debe ser una cantidad mayor a cero, con hasta 2 dígitos decimales.
currencystring
Moneda usada en la operación, por default es MXN
repeat_everynumeric
Número de unidades tiempo entre los que se cobrará la suscripción. Por ejemplo, repeat_unit=month y repeat_every=2 indica que se cobrará cada 2 meses.
repeat_unitstring
Especifica la frecuencia de cobro. Puede ser semanal(week), mensual(month) o anual(year).
retry_timesnumeric
Número de reintentos de cobro de la suscripción. Cuando se agotan los intentos se pone en el estatus determinado por el campo status_after_retry.
statusstring
Estatus del Plan puede ser active o deleted. Si el plan se encuentra en estado deleted no se permite registrar nuevas suscripciones, pero las que ya están registradas, se siguen cobrando.
status_after_retrystring
Este campo especifica el status en el que se pondrá la suscripción una vez que se agotaron los intentos. Puede ser: unpaid o cancelled
trial_daysnumeric
Número de días de prueba por defecto que tendrá la suscripción.

Crear un nuevo plan

Definición

POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/plans

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/plans \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
  "amount": 150.00,
  "status_after_retry": "cancelled",
  "retry_times": 2,
  "name": "Curso de ingles",
  "repeat_unit": "month",
  "trial_days": "30",
  "repeat_every": "1"
}' 

Ejemplo de respuesta

{
   "id":"p8e6x3hafqqsbmnoevrt",
   "name":"Curso de ingles",
   "status":"active",
   "amount":150.00,
   "currency":"MXN",
   "creation_date":"2014-05-22T12:29:31-05:00",
   "repeat_every":1,
   "repeat_unit":"month",
   "retry_times":2,
   "status_after_retry":"cancelled",
   "trial_days":30
}

Crea un nuevo plan al se podrán suscribir uno o varios clientes.

Petición

PropiedadDescripción
namestring (requerido, longitud = 255)
Nombre del Plan.
amountnumeric (requerido)
Monto que se aplicará cada vez que se cobre la suscripción. Debe ser una cantidad mayor a cero, con hasta 2 dígitos decimales.
repeat_everynumeric (requerido)
Número de unidades tiempo entre los que se cobrara la suscripción. Por ejemplo, repeat_unit=month y repeat_every=2 indica que se cobrara cada 2 meses.
repeat_unitnumeric (requerido)
Especifica la frecuencia de cobro. Puede ser semanal(week), mensual(month) o anual(year).
retry_timesnumeric (opcional)
Número de reintentos de cobro de la suscripción. Cuando se agotan los intentos se pone en el estado determinado por el campo status_after_retry.
status_after_retrystring (requerido, valores = “UNPAID/CANCELLED”)
Este campo especifica el status en el que se pondrá la suscripción una vez que se agotaron los intentos. Puede ser: unpaid o cancelled
trial_daysnumeric (requerido)
Número de días de prueba por defecto que tendrán las suscripciones que se creen a partir del plan creado.

Respuesta

Regresa un objeto plan creado o un error en caso de ocurrir algún problema.

Actualizar un plan existente

Definición

PUT https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/plans/{PLAN_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/plans/p8e6x3hafqqsbmnoevrt \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X PUT -d '{
      "name": "Curso de aleman",
      "trial_days": "60"
   }' 

Ejemplo de respuesta

{
   "id":"p8e6x3hafqqsbmnoevrt",
   "name":"Curso de aleman",
   "status":"active",
   "amount":150.00,
   "currency":"MXN",
   "creation_date":"2014-05-22T12:29:31-05:00",
   "repeat_every":1,
   "repeat_unit":"month",
   "retry_times":2,
   "status_after_retry":"cancelled",
   "trial_days":60
}

Actualiza la información de un plan. Se requiere tener el id del plan y solo se puede actualizar cierta información.

Petición

PropiedadDescripción
namestring (opcional, longitud = 80)
Nombre del Plan.
trial_daysnumeric (opcional)
Número de días de prueba por defecto que tendrán las suscripciones que se creen a partir del plan creado.

Respuesta

Regresa un objeto plan con la información actualizada o una respuesta de error si ocurrió algún problema en la actualización.

Obtener un plan

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/plans/{PLAN_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/plans/p8e6x3hafqqsbmnoevrt \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

{
   "id":"p8e6x3hafqqsbmnoevrt",
   "name":"Curso de aleman",
   "status":"active",
   "amount":150.00,
   "currency":"MXN",
   "creation_date":"2014-05-22T12:29:31-05:00",
   "repeat_every":1,
   "repeat_unit":"month",
   "retry_times":2,
   "status_after_retry":"cancelled",
   "trial_days":60
}

Obtiene los detalles de un plan.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador del plan.

Respuesta

Regresa un objeto plan

Eliminar un plan

Definición

DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/plans/{PLAN_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/plans/p8e6x3hafqqsbmnoevrt \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -X DELETE

Al eliminar un plan no se permitirán crear mas suscripciones asociadas a él, sin embargo las suscripciones ya asociadas se mantienen y se continuan cobrando.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador del plan a eliminar

Respuesta

Si el plan se borra correctamente la respuesta es vacía, si no se puede borrar se regresa un objeto error indicando el motivo.

Listado de planes

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/plans

Ejemplo de petición

curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/plans?limit=10" \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: 

Ejemplo de respuesta

[
    {
        "name": "Curso de aleman",
        "status": "active",
        "amount": 150,
        "currency": "MXN",
        "id": "patpflacwilazguj6bem",
        "creation_date": "2013-12-13T09:43:52-06:00",
        "repeat_every": 1,
        "repeat_unit": "month",
        "retry_times": 2,
        "status_after_retry": "cancelled",
        "trial_days": 60
    },
    {
        "name": "Curso de ingles",
        "status": "active",
        "amount": 150,
        "currency": "MXN",
        "id": "pjl7wfryrrd1tznr0fnl",
        "creation_date": "2013-12-13T11:36:40-06:00",
        "repeat_every": 1,
        "repeat_unit": "month",
        "retry_times": 2,
        "status_after_retry": "cancelled",
        "trial_days": 30
    }
]

Regresa los detalles de todos los planes que están activos.

Petición

Se pueden realizar búsquedas utilizando los siguiente parámetros.

PropiedadDescripción
creationdate
Igual a la fecha de creación. Formato yyyy-mm-dd
creation[gte]date
Mayor a la fecha de creación. Formato yyyy-mm-dd
creation[lte]date
Menor a la fecha de creación. Formato yyyy-mm-dd
offsetnumeric
Número de registros a omitir al inicio, por defecto 0.
limitnumeric
Número de registros que se requieren, por defecto 10.

Respuesta

Listado de objetos plan registrados de acuerdo a los parámetros proporcionados, ordenadas por fecha de creación en orden descendente.

Suscripciones

Las suscripciones permiten asociar un cliente y una tarjeta para que se puedan realizar cargos recurrentes.

Para poder suscribir algún cliente es necesario primero crear un plan.

Objeto Suscripción

Ejemplo de objeto

{
    "status": "trial",
    "card": {
        "type": "debit",
        "brand": "mastercard",
        "card_number": "1111",
        "holder_name": "Juan Perez Ramirez",
        "expiration_year": "20",
        "expiration_month": "12",
        "allows_charges": true,
        "allows_payouts": false,
        "creation_date": "2013-12-13T12:39:46-06:00",
        "bank_name": "DESCONOCIDO",
        "customer_id": null,
        "bank_code": "000"
    },
    "id": "svxdm1suclzipbi4pavm",
    "cancel_at_period_end": false,
    "charge_date": "2014-01-12",
    "creation_date": "2013-12-13T12:39:46-06:00",
    "current_period_number": 0,
    "period_end_date": "2014-01-11",
    "trial_end_date": "2014-01-11",
    "plan_id": "pjl7wfryrrd1tznr0fnl",
    "customer_id": "a2b79p8xmzeyvmolqfja"
}
PropiedadDescripción
idstring
Identificador único del Plan.
creation_datedatetime
Fecha y hora en que se creó la suscripción en formato ISO 8601
cancel_at_period_endstring
Indica si se cancela la suscripción al terminar el periodo.
charge_datenumeric
Fecha en la que se cobrar la suscripción.
current_period_numberstring
Indica el periodo actual a cobrar.
period_end_datenumeric
Fecha en la que se termina el periodo actual, un día antes del siguiente cobro.
trial_end_datestring
Fecha en la que termina el periodo de prueba. Un día después de esta fecha, se realiza el primer cargo.
plan_idnumeric
Identificador del plan sobre el que se crea la suscripción.
statusstring
Estado de la suscripción puede ser “active”, “trial”, “past_due”, “unpaid”, o “cancelled”. Si la suscripción tiene periodo de prueba, se pone en status “trial”, si no tiene periodo de prueba, o cuando termino el periodo de prueba y se logro efectuar el primer pago, se pone en “active”, cuando el cobro no logro efectuarse, se coloca en “past_due”, y cuando se agotan los intentos de cobro, se coloca de acuerdo a la configuración del plan, en “unpaid” o en “cancelled”. Cuando se coloca en “unpaid”, y se quiere reactivar la suscripción, es necesario actualizar el medio de pago (tarjeta) de la suscripción. En cualquier otro caso, el status se establece como “cancelled”.
customer_idstring
Identificador del customer al que pertenece la suscripción.
cardobject
Medio de pago con el cual se cobrará la suscripción. Ver objeto tarjeta

Crear una nueva suscripción

Definición

POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "card":{
      "card_number":"4111111111111111",
      "holder_name":"Juan Perez Ramirez",
      "expiration_year":"20",
      "expiration_month":"12",
      "cvv2":"110",
      "device_session_id":"kR1MiQhz2otdIuUlQkbEyitIqVMiI16f"
   },
   "plan_id":"pbi4kb8hpb64x0uud2eb"
}' 

Ejemplo de respuesta

{
   "id":"s0gmyor4yqtyv1miqwr0",
   "status":"trial",
   "card":{
      "type":"debit",
      "brand":"visa",
      "address":null,
      "card_number":"411111XXXXXX1111",
      "holder_name":"Juan Perez Ramirez",
      "expiration_year":"20",
      "expiration_month":"12",
      "allows_charges":true,
      "allows_payouts":true,
      "bank_name":"Banamex",
      "bank_code":"002"
   },
   "cancel_at_period_end":false,
   "charge_date":"2014-06-21",
   "creation_date":"2014-05-22T15:56:18-05:00",
   "current_period_number":0,
   "period_end_date":"2014-06-20",
   "trial_end_date":"2014-06-20",
   "plan_id":"pbi4kb8hpb64x0uud2eb",
   "customer_id":"ag4nktpdzebjiye1tlze"
}

Crea una suscripción para un cliente existente. Se puede ocupar una tarjeta previamente creada o se pueden enviar los datos de la tarjeta en donde se realizarán los cargos, estos últimos pueden incluir la propiedad device_session_id para usar la herramienta antifraudes, véase Fraud detection using device data.

Petición

PropiedadDescripción
plan_idstring (requerido, longitud = 45)
Identificador del plan sobre el que se crea la suscripción.
trial_end_datestring (opcional, longitud = 10)
Último día de prueba del cliente. Si no se indica se utilizará el valor de trial_days del plan para calcularlo. Si se indica una fecha anterior al día de hoy, se interpretará como una suscripción sin días de prueba. (Con formato yyy-mm-dd)
source_idstring (requerido si no se envía card, longitud = 45)
Identificador del token o la tarjeta previamente registrada al cliente con la que se cobrará la suscripción.
card object (requerido si no se envía source_id)
Medio de pago con el cual se cobrará la suscripción. Ver objeto tarjeta

Respuesta

Regresa el objeto suscripción creado o una respuesta de error si ocurrió algún problema en la creación.

Actualizar una suscripción

Definición

PUT https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions/s0gmyor4yqtyv1miqwr0 \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X PUT -d '{
  "trial_end_date": "2016-01-11",
   "card": {
        "card_number": "343434343434343",
        "holder_name": "Juan Perez Ramirez",
        "expiration_year": "20",
        "expiration_month": "12",
        "cvv2":"1234"
    }
}' 

Ejemplo de respuesta

{
   "id":"s0gmyor4yqtyv1miqwr0",
   "status":"trial",
   "card":{
      "type":"credit",
      "brand":"american_express",
      "address":null,
      "card_number":"343434XXXXX4343",
      "holder_name":"Juan Perez Ramirez",
      "expiration_year":"20",
      "expiration_month":"12",
      "allows_charges":true,
      "allows_payouts":false,
      "bank_name":"AMERICAN EXPRESS",
      "bank_code":"103"
   },
   "cancel_at_period_end":false,
   "charge_date":"2016-01-12",
   "creation_date":"2014-05-22T15:56:18-05:00",
   "current_period_number":0,
   "period_end_date":"2016-01-11",
   "trial_end_date":"2016-01-11",
   "plan_id":"pbi4kb8hpb64x0uud2eb",
   "customer_id":"ag4nktpdzebjiye1tlze"
}

Actualiza la información de una suscripción activa.

Petición

PropiedadDescripción
cancel_at_period_endbooelan (opcional)
Indica si se cancela la suscripción al terminar el periodo.
trial_end_datestring (opcional, longitud = 10)
Último día de prueba del cliente. Si no se indica se utilizará el valor de trial_days del plan para calcularlo. Si se indica una fecha anterior al día de hoy, se interpretará como una suscripción sin días de prueba. (Con formato yyy-mm-dd)
source_idstring (opcional, longitud = 45)
Identificador del token o la tarjeta previamente registrada al cliente con la que se cobrará la suscripción.
card object (opcional)
Medio de pago con el cual se cobrará la suscripción. Ver objeto tarjeta

Respuesta

Regresa el objeto suscripción actualizado o una respuesta de error si ocurrió algún problema en la actualización.

Obtener un suscripción

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions/{SUBSCRIPTION_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions/s0gmyor4yqtyv1miqwr0 \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

{
   "id":"s0gmyor4yqtyv1miqwr0",
   "status":"trial",
   "card":{
      "type":"credit",
      "brand":"american_express",
      "address":null,
      "card_number":"343434XXXXX4343",
      "holder_name":"Juan Perez Ramirez",
      "expiration_year":"20",
      "expiration_month":"12",
      "allows_charges":true,
      "allows_payouts":false,
      "bank_name":"AMERICAN EXPRESS",
      "bank_code":"103"
   },
   "cancel_at_period_end":false,
   "charge_date":"2016-01-12",
   "creation_date":"2014-05-22T15:56:18-05:00",
   "current_period_number":0,
   "period_end_date":"2016-01-11",
   "trial_end_date":"2016-01-11",
   "plan_id":"pbi4kb8hpb64x0uud2eb",
   "customer_id":"ag4nktpdzebjiye1tlze"
}

Obtiene los detalles de la suscripción de un cliente.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador de la suscripción

Respuesta

Regresa un objeto suscripción

Cancelar suscripción

Definición

DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions/{SUBSCRIPTION_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions/s0gmyor4yqtyv1miqwr0 \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -X DELETE

Cancela inmediatamente la suscrípción del cliente. Ya no se realizarán más cargos a la tarjeta y todos los cargos pendientes se cancelarán.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador del plan a eliminar

Respuesta

Si la suscripción se cancelo correctamente la respuesta es vacía, si no se regresa un objeto error indicando el motivo.

Listado de suscripciones

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/customers/{CUSTOMER_ID}/subscriptions

Ejemplo de petición

curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/customers/ag4nktpdzebjiye1tlze/subscriptions?limit=10" \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: 

Ejemplo de respuesta

[
   {
      "id":"s0gmyor4yqtyv1miqwr0",
      "status":"trial",
      "card":{
         "type":"credit",
         "brand":"american_express",
         "address":null,
         "card_number":"343434XXXXX4343",
         "holder_name":"Juan Perez Ramirez",
         "expiration_year":"20",
         "expiration_month":"12",
         "allows_charges":true,
         "allows_payouts":false,
         "bank_name":"AMERICAN EXPRESS",
         "bank_code":"103"
      },
      "cancel_at_period_end":false,
      "charge_date":"2016-01-12",
      "creation_date":"2014-05-22T15:56:18-05:00",
      "current_period_number":0,
      "period_end_date":"2016-01-11",
      "trial_end_date":"2016-01-11",
      "plan_id":"pbi4kb8hpb64x0uud2eb",
      "customer_id":"ag4nktpdzebjiye1tlze"
   }
]

Regresa los detalles de todas las suscripciones activas para un cliente en específico.

Petición

Se pueden realizar búsquedas utilizando los siguiente parámetros.

PropiedadDescripción
creationdate
Igual a la fecha de creación. Formato yyyy-mm-dd
creation[gte]date
Mayor a la fecha de creación. Formato yyyy-mm-dd
creation[lte]date
Menor a la fecha de creación. Formato yyyy-mm-dd
offsetnumeric
Número de registros a omitir al inicio, por defecto 0.
limitnumeric
Número de registros que se requieren, por defecto 10.

Respuesta

Listado de objetos suscripción que tiene el cliente. Ordenados por fecha de creación en orden descendente.

Comisiones

Si las cuentas de los clientes fueron creadas para que manejarán su propio saldo, se puede realizar el cobro de una comisión el cual se verá reflejado en la cuenta del comercio.

Cobrar Comisión

Definición

POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/fees

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/fees \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{                                            
     "customer_id" : "dvocf97jd20es3tw5laz",
     "amount" : 12.50,          
     "description" : "Cobro de Comisión",
     "order_id" : "oid-1245"
}' 

Ejemplo de respuesta

{
   "amount":12.50,
   "authorization":null,
   "method":"customer",
   "operation_type":"out",
   "currency":"MXN",
   "transaction_type":"fee",
   "status":"completed",
   "id":"th8tafyrkakdbyry3kxi",
   "creation_date":"2013-11-18T10:33:03-06:00",
   "description":"Cobro de comisión",
   "error_message":null,
   "order_id":"oid-1245",
   "customer_id":"dvocf97jd20es3tw5laz"
}

Cobra una comisión a la cuenta de un cliente.

Petición

PropiedadDescripción
customer_idstring (requerido, longitud = 45)
El identificador único del cliente al que deseas cobrarle la comisión.
amountnumeric (requerido)
Cantidad del cargo. Debe ser una cantidad mayor a cero, con hasta dos dígitos decimales.
descriptionstring (requerido, longitud = 250)
Una descripción asociada al cobro de comisión.
order_idstring (opcional, longitud = 100)
Identificador único de la comisión. Debe ser único para todas las transacciones.

Regresa

El objeto de transacción de la comisión, con su fecha de creación y su id o una respuesta de error.

Devolver Comisión

Definición

POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/fees/{TRANSACTION_ID}/refund

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/fees/trzjaozcik8msyqshka4/refund \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{                                            
     "description" : "Devolución de Comisión"
}' 

Ejemplo de respuesta

{
  "id": "th8tafyrkakdbyry3kxi",
  "authorization": null,
  "method": "customer",
  "operation_type": "in",
  "transaction_type": "refund",
  "status": "completed",
  "conciliated": true,
  "creation_date": "2016-09-06T11:56:57-05:00",
  "operation_date": "2016-09-06T11:56:57-05:00",
  "description": "devolución de comisión merchant03",
  "error_message": null,
  "order_id": null,
  "customer_id": "ar2btmquidjhykdaztp6",
  "amount": 11.11,
  "currency": "MXN"
}

Devuelve una comisión a la cuenta de un cliente.

Petición

PropiedadDescripción
descriptionstring (opcional, longitud = 250)
Una descripción asociada al reembolso de la comisión.

Regresa

El objeto de transacción del reembolso, con su fecha de creación y su id o una respuesta de error.

Listado de comisiones

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/fees

Ejemplo de petición

curl -g "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/fees?limit=10" \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: 

Ejemplo de respuesta

[
   {
      "amount":30.00,
      "authorization":null,
      "method":"customer",
      "operation_type":"out",
      "currency":"MXN",
      "transaction_type":"fee",
      "status":"completed",
      "id":"th8tafyrkakdbyry3kxi",
      "creation_date":"2013-11-18T10:33:03-06:00",
      "description":"Cobro de comisión",
      "error_message":null,
      "order_id":"oid-1367",
      "customer_id":"dvocf97jd20es3tw5laz"
   },
   {
      "amount":12.00,
      "authorization":null,
      "method":"customer",
      "operation_type":"out",
      "currency":"MXN",
      "transaction_type":"fee",
      "status":"completed",
      "id":"tdzottaaohuhosf4cdv9",
      "creation_date":"2013-11-17T05:35:00-06:00",
      "description":"Cobro de comisión",
      "error_message":null,
      "order_id":"oid-1366",
      "customer_id":"afk4csrazjp1udezj1po"
   }
]

Regresa los detalles de todas las comisiones cobradas del comercio.

Petición

Se pueden realizar búsquedas utilizando los siguientes parámetros.

PropiedadDescripción
creationdate
Igual a la fecha de creación. Formato yyyy-mm-dd
creation[gte]date
Mayor a la fecha de creación. Formato yyyy-mm-dd
creation[lte]date
Menor a la fecha de creación. Formato yyyy-mm-dd
offsetnumeric
Número de registros a omitir al inicio, por defecto 0.
limitnumeric
Número de registros que se requieren, por defecto 10.

Respuesta

Regresa un arreglo de objetos transacción de las comisiones cobradas en orden descendente por fecha, cada uno con el identificador del cliente al que se le realizó.

Webhooks

Estos permiten notificar al cliente cuando un evento ha sucedido en la plataforma, para que el comercio pueda tomar las acciones correspondientes.

Objeto Webhook

Ejemplo de objeto

  {
    "id" : "wxvanstudf4ssme8khmc",
    "url" : "http://requestb.in/11vxrsf1",
    "user" : "juanito",
    "password" : "passjuanito",
    "event_types" : [
      "charge.refunded",
      "charge.failed",
      "charge.cancelled",
      "charge.created",
      "chargeback.accepted"
    ],
    "status":"verified"
}
PropiedadDescripción
idstring
Identificador único del webhook.
urlstring
URL del webhook
userstring
Nombre de usuario para autenticación básica del webhook.
passwordstring
Contraseña para autenticación básica del webhook.
event_typesarray[string]
Listado de eventos a los que responderá el webhook.
statusstring
Estado del webhook, indica si está verificado (verified) o no está verificado (unverified).
EventoCategoríaDescripción
charge.refundedCargosInforma cuando es reembolsado un cargo.
charge.failedCargosInforma cuando un cargo falló y no se aplico.
charge.cancelledCargosInforma cuando un cargo es cancelado.
charge.createdCargosInforma cuando un cargo es programado.
charge.succeededCargosInforma cuando un cargo es aplicado.
charge.rescored.to.declineCargosInforma cuando a un cargo le es recalculado su score y es declinado.
subscription.charge.failedSuscripciónInforma cuando el cargo de una suscripción falló.
payout.createdPagosInforma cuando un pago fue programado para el siguiente día.
payout.succeededPagosInforma cuando un pago programado se ha aplicado.
payout.failedPagosInforma cuando un pago falló.
transfer.succeededTransferenciasInforma cuando se realiza una transferencia entre dos cuentas Openpay.
fee.succeededComisionesInforma cuando se cobra un Fee a un Customer.
fee.refund.succeededComisionesInforma cuando se reembolsa un Fee a un Customer.
spei.receivedSPEIInforma cuando se recibe un pago por SPEI para agregar fondos a la cuenta.
chargeback.createdContracargosInforma cuando se recibió un chargeback de una transacción y se está iniciando la investigación.
chargeback.rejectedContracargosInforma cuando un contracargo fue rechazado.
chargeback.acceptedContracargosInforma cuando un contracargo fue aceptado.
order.createdOrdenInforma cuando una orden es creada y programada.
order.activatedOrdenInforma cuando una orden es activada.
order.payment.receivedOrdenInforma cuando el pago de una orden es recibido.
order.completedOrdenInforma cuando una orden es completada.
order.expiredOrdenInforma cuando una orden ha expirado.
order.cancelledOrdenInforma cuando una orden es cancelada.
order.payment.cancelledOrdenInforma cuando el pago de una orden es cancelado.

Características de un servicio Webhook válido

  • Endpoint: Solo dominios (No IPs). ejemplo: https://notifications.merchant.com
  • Puerto: 443/TCP, 1518/TCP, 1519/TCP, 8443/TCP y 10443/TCP
  • Protocolo: HTTPS/TLS_1.2
  • Certificado: Válido (firmado por CA pública y match con dominio).

Crear un Webhook

Definición

POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/webhooks

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/webhooks \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
    "url" : "http://requestb.in/11vxrsf1",
    "user" : "juanito",
    "password" : "passjuanito",
    "event_types" : [
      "charge.refunded",
      "charge.failed",
      "charge.cancelled",
      "charge.created",
      "chargeback.accepted"
    ]
}'

Ejemplo de respuesta

{
  "id" : "wkn0t30zfxpmhr5usgfa",
  "url" : "http://requestb.in/qt3bq0qt",
  "user" : "juanito",
  "event_types" : [
    "charge.succeeded",
    "charge.created",
    "charge.cancelled",
    "charge.failed"
  ],
  "status" : "verified"
}

Al crear un nuevo webhook se hará una petición a la url indicada para verificar el webhook.

Al momento de guardar el webhook se generará un id que podrá ser usado para eliminar o simplemente obtener la información no sensible del webhook.

Petición

PropiedadDescripción
urlstring
URL del webhook
userstring
Nombre de usuario para autenticación básica del webhook.
passwordstring
Contraseña para autenticación básica del webhook.
event_typesarray[string]
Listado de eventos a los que responderá el webhook.

Respuesta

Regresa un objeto webhook cuando se creó correctamente o una respuesta de error si ocurrió algún problema en la creación.

Obtener un Webhook

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/webhooks/{WEBHOOK_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/webhooks/wxvanstudf4ssme8khmc \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json"

Ejemplo de respuesta

  {
    "id" : "wxvanstudf4ssme8khmc",
    "url" : "http://requestb.in/11vxrsf1",
    "user" : "juanito",
    "event_types" : [
      "verification",
      "charge.refunded",
      "charge.failed",
      "charge.cancelled",
      "charge.created",
      "charge.succeeded",
      "subscription.charge.failed",
      "payout.created",
      "payout.succeeded",
      "payout.failed",
      "transfer.succeeded",
      "fee.succeeded",
      "spei.received",
      "chargeback.created",
      "chargeback.rejected",
      "chargeback.accepted"
    ],
    "status" : "verified"
  }

Obtiene los detalles de un webhook solicitándolo con su id.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador único del webhook

Respuesta

Regresa un objeto webhook

Eliminar un Webhook

Definición

DELETE https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/webhooks/{WEBHOOK_ID}

Ejemplo de petición con cliente

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/webhooks/wxvanstudf4ssme8khmc \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -X DELETE

Elimina un webhook del comercio.

Para eliminarlo sólo es necesario proporcionar el identificador del webhook.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador único del webhook

Respuesta

Si el webhook se borra correctamente la respuesta es vacía, si no se puede borrar se regresa un objeto error indicando el motivo.

Listado de Webhook

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/webhooks

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/webhooks \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json"

Ejemplo de respuesta

[
  {
    "id" : "wDashboard185",
    "event_types" : [
      "verification",
      "charge.refunded",
      "charge.failed",
      "charge.cancelled",
      "charge.created",
      "charge.succeeded",
      "subscription.charge.failed",
      "payout.created",
      "payout.succeeded",
      "payout.failed",
      "transfer.succeeded",
      "fee.succeeded",
      "spei.received",
      "chargeback.created",
      "chargeback.rejected",
      "chargeback.accepted"
    ],
    "url" : "http://requestb.in/11vxrsf1",
    "status" : "verified"
  },
  {
    "id" : "wDashboard186",
    "event_types" : [
      "verification",
      "charge.refunded",
      "charge.failed",
      "charge.cancelled",
      "charge.created",
      "charge.succeeded",
      "subscription.charge.failed"
    ],
    "url" : "http://requestb.in/1fhpiog1",
    "status" : "verified"
  }
]

Regresa una lista de webhooks registrados por comercio.

Petición

Respuesta

Listado de objetos objeto webhook registrados de acuerdo a los parámetros proporcionados.

Tokens

El objetivo de generar tokens es que se capture la información de la tarjeta desde el navegador o dispositivo del usuario final para que dicha información no viaje a través de tu servidor y así puede evitar o reducir certificaciones PCI.

Para usar esta funcionalidad de la API, te recomendamos usar nuestra librería en JavaScript para cuando tu aplicación esté en Web y nuestros SDK’s de Android o iOS para cuando esté en móvil.

Características

  • Se crean a nivel comercio
  • No se ligan a ningún cliente
  • Después de crearse solo se puede usar una sola vez, para hacer un cargo con token

Objeto Token

Ejemplo de objeto

{
      "id":"tokfa4swch8gr4icy2ma",
      "card":{
         "card_number":"1111",
         "holder_name":"Juan Perez Ramirez",
         "expiration_year":"20",
         "expiration_month":"04",
         "address":{
            "line1":"Av 5 de febrero",
            "line2":"Roble 207",
            "line3":"Queretaro",
            "state":"Queretaro",
            "city":"Queretaro",
            "postal_code":"76900",
            "country_code":"MX"
         },
         "creation_date":"2014-01-30T13:53:11-06:00",
         "brand":"visa",
         "points_card":false
      }
   }
PropiedadDescripción
idstring
Identificador del token. Esté es el que deberás usar para posteriormente hacer un cargo.
cardobject
Datos de la tarjeta asociada al token. Ver objeto tarjeta

Crear un nuevo token

Definición

POST https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/tokens

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/tokens \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab: \
   -H "Content-type: application/json" \
   -X POST -d '{
   "card_number":"4111111111111111",
   "holder_name":"Juan Perez Ramirez",
   "expiration_year":"20",
   "expiration_month":"12",
   "cvv2":"110",
   "address":{
      "city":"Querétaro",
      "country_code":"MX",
      "postal_code":"76900",
      "line1":"Av 5 de Febrero",
      "line2":"Roble 207",
      "line3":"col carrillo",
      "state":"Queretaro"
   }
}' 

Ejemplo de respuesta

{
   "id":"k1n0mscnjwhxqia8q7cm",
   "card":{
      "card_number":"411111XXXXXX1111",
      "holder_name":"Juan Perez Ramirez",
      "expiration_year":"20",
      "expiration_month":"12",
      "address":{
         "line1":"Av 5 de Febrero",
         "line2":"Roble 207",
         "line3":"col carrillo",
         "state":"Queretaro",
         "city":"Querétaro",
         "postal_code":"76900",
         "country_code":"MX"
      },
      "creation_date":null,
      "brand":"visa"
   }
}

Para la creación de un token en Openpay es necesario enviar el objeto con la información a registrar. Una vez guardado el token no se puede obtener el número y código de seguridad ya que esta información es encriptada.

Petición

PropiedadDescripción
holder_namestring (requerido)
Nombre del tarjeta habiente.
card_numbernumeric (requerido)
Número de tarjeta puede ser de 16 o 19 dígitos.
cvv2numeric (requerido)
Código de seguridad como aparece en la parte de atrás de la tarjeta. Generalmente 3 dígitos.
expiration_monthnumeric (requerido)
Mes de expiración tal como aparece en la tarjeta.
expiration_yearnumeric (requerido)
Año de expiración tal como aparece en la tarjeta.
addressobject (opcional)
Dirección de facturación del tarjeta habiente.

Repuesta

Regresa el objeto token creado o una respuesta de error si ocurrió algún problema en la creación.

Obtener un token

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}/tokens/{TOKEN_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/tokens/k1n0mscnjwhxqia8q7cm \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

{
   "id":"k1n0mscnjwhxqia8q7cm",
   "card":{
      "card_number":"411111XXXXXX1111",
      "holder_name":"Juan Perez Ramirez",
      "expiration_year":"20",
      "expiration_month":"12",
      "address":{
         "line1":"Av 5 de Febrero",
         "line2":"Roble 207",
         "line3":"col carrillo",
         "state":"Queretaro",
         "city":"Querétaro",
         "postal_code":"76900",
         "country_code":"MX"
      },
      "creation_date":null,
      "brand":"visa"
   }
}

Obtiene los detalles de un token. Es necesario tener el id.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
Identificador de token.

Respuesta

Regresa un objeto token

Comercio

El objeto comercio permite consultar la información de tu cuenta a través de la API.

Objeto Comercio

Ejemplo de Objeto:

{ 
   "id": "m9lrykwsmljagrfb38rs", 
   "creationDate": "2013-11-13T16:58:40-06:00", 
   "name": "Promociones en linea", 
   "email": "contacto@enlinea.com.mx", 
   "phone": "(321) 222-2222", 
   "status": "active", 
   "balance": 1000, 
   "clabe": "646180109400000542" 
} 
PropiedadDescripción
idstring
Identificador único asignado al momento de su creación.
creation_datedatetime
Fecha de creación de la transacción en formato ISO 8601.
namestring
Nombre del comercio con el que se registró el comercio.
emailstring
Cuenta de correo electrónico registrada para el comercio.
phonestring
Número teléfonico registrado del comercio.
statusstring
Estatus de la cuenta del Comercio puede ser active o deleted. Si la cuenta se encuentra en estatus deleted no se permite realizar ninguna transacción.
balancenumeric
Saldo en la cuenta con dos decimales.
clabenumeric
Cuenta CLABE asociada con la que puede recibir fondos realizando una transferencia desde cualquier banco en México vía SPEI.

Obtener un comercio

Definición

GET https://sandbox-api.openpay.mx/v1/{MERCHANT_ID}

Ejemplo de petición

curl https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

{
   "name":"Demo Openpay",
   "email":"demo@openpay.mx",
   "phone":"(442) 258-1039",
   "status":"active",
   "balance":218.73,
   "clabe":"646180109400135624",
   "id":"mzdtln0bmtms6o3kck8f",
   "creation_date":"2014-01-23T10:45:53-06:00"
}

Obtiene los detalles la cuenta del comercio. Solo se requiere indicar el id único del comercio que se quiere obtener.

Petición

PropiedadDescripción
idstring (requerido, longitud = 45)
identificador único del comercio.

Respuesta

Si el identificador es correcto regresa un objeto comercio.

Tiendas

El objeto representa una tienda de conveniencia

Objeto Tienda

Ejemplo de Objeto:

{
    "id_store": 4913,
    "id": 115,
    "name": "0503 SAN PABLO -QRO",
    "last_update": "2016-02-04T00:52:16-06:00",
    "status": "active",
    "geolocation": {
      "lng": -100.421865,
      "lat": 20.618171,
      "place_id": "ChIJwSN2wpNa04URsDryLW517lg"
    },
    "address": {
      "line1": "AV. 5 DE FEBRERO KM 7.5 NO 1341",
      "line2": "SAN PABLO",
      "line3": null,
      "state": "QUERETARO",
      "city": "QUERETARO",
      "postal_code": "76030",
      "country_code": "MX"
    },
    "paynet_chain": {
      "name": "EXTRA",
      "logo": "http://www.openpay.mx/logotipos/extra.png",
      "thumb": "http://www.openpay.mx/thumb/extra.png",
      "max_amount": 99999.99
    }
  }
PropiedadDescripción
id_storestring
Identificador único asignado al momento de su creación.
idstring
Identificador único por cadena.
namedatetime
Nombre de la tienda.
last_updatestring
Fecha de la ultima actualización de la tienda en formato ISO 8601.
geolocationobjeto
Representación geográfica de la tienda por medio de coordenadas, Latitud y Longitud.
addressobjeto
Dirección de la tienda.
paynet_chainobjeto
Cadena paynet a la que pertence.

Obtener lista de tiendas por ubicación

Definición

GET https://api.openpay.mx/stores?latitud={latitud}&longitud={longitud}&kilometers={radio}&amount={monto}

Ejemplo de petición

curl https://api.openpay.mx/stores?latitud=20.618975&longitud=-100.422290&kilometers=1.5&amount=4000 \
   -u sk_e568c42a6c384b7ab02cd47d2e407cab:

Ejemplo de respuesta

[
  {
    "id_store": 4913,
    "id": 115,
    "name": "0503 SAN PABLO -QRO",
    "last_update": "2016-02-04T00:52:16-06:00",
    "status": "active",
    "geolocation": {
      "lng": -100.421865,
      "lat": 20.618171,
      "place_id": "ChIJwSN2wpNa04URsDryLW517lg"
    },
    "address": {
      "line1": "AV. 5 DE FEBRERO KM 7.5 NO 1341",
      "line2": "SAN PABLO",
      "line3": null,
      "state": "QUERETARO",
      "city": "QUERETARO",
      "postal_code": "76030",
      "country_code": "MX"
    },
    "paynet_chain": {
      "name": "EXTRA",
      "logo": "http://www.openpay.mx/logotipos/extra.png",
      "thumb": "http://www.openpay.mx/thumb/extra.png",
      "max_amount": 99999.99
    }
  },
  {
    "id_store": 4726,
    "id": 68,
    "name": "ASTURIANO TECNOLOGICO",
    "last_update": "2016-02-04T00:52:16-06:00",
    "status": "active",
    "geolocation": {
      "lng": -100.410136,
      "lat": 20.61632,
      "place_id": "EktQcm9sIFRlY25vbMOzZ2ljbyBOdGUgOTk5LCBTYW4gUGFibG8sIFNhbnRpYWdvIGRlIFF1ZXLDqXRhcm8sIFFyby4sIE3DqXhpY28"
    },
    "address": {
      "line1": "PROLONGACION TECNOLOGICO NORTE #999",
      "line2": "SAN PABLO",
      "line3": null,
      "state": "QUERETARO",
      "city": "QUERETARO",
      "postal_code": "76159",
      "country_code": "MX"
    },
    "paynet_chain": {
      "name": "EL ASTURIANO",
      "logo": "http://www.openpay.mx/logotipos/asturiano.png",
      "thumb": "http://www.openpay.mx/thumb/asturiano.png",
      "max_amount": 99999.99
    }
  }
]

Obtiene los detalles la cuenta del comercio. Solo se requiere indicar el id unico del comercio que se quiere obtener.

Petición

PropiedadDescripción
latitudnumeric (requerido)
Latitud de la ubicacion geográfica de la tienda
longitudnumeric (requerido)
Longitud de la ubicacion geográfica de la tienda
kilometersnumeric (requerido)
Distancia del radio de la búsqueda en kilometros
amountnumeric (requerido)
Monto de la compra

Respuesta

Si se encuentran tiendas cerca del rango se devolverá un arreglo con las tiendas encontradas.

Objetos Comunes

Información de objetos compartidos en peticiones y respuestas.

Objeto Transacción

Ejemplo de Objeto:

{
   "id":"trehwr2zarltvae56vxl",
   "authorization":null,
   "transaction_type":"payout",
   "operation_type":"out",
   "currency":"MXN",
   "method":"bank",
   "creation_date":"2013-11-14T18:29:35-06:00",
   "order_id":"000001",
   "status":"in_progress",
   "amount":500,
   "description":"Pago de ganancias",
   "error_message":null,
   "customer_id":"afk4csrazjp1udezj1po",
   "bank_account":{
      "rfc":ONE316015PM1,
      "mobile":null,
      "alias":null,
      "bank_name":"BANCOMER",
      "creation_date":"2013-11-14T18:29:34-06:00",
      "clabe":"012XXXXXXXXXX24616",
      "holder_name":"Juan Tapia Trejo",
      "bank_code":"012"
   }
}
PropiedadDescripción
idstring
Identificador único asignado por Openpay al momento de su creación.
authorizationstring
Número de autorización generado por el procesador.
transaction_typestring
Tipo de transacción que fue creada: fee, charge, payout, transfer.
operation_typestring
Tipo de afectación en la cuenta: in, out.
methodstring
Tipo de método usado en la transacción: card, bank o customer.
creation_datedatetime
Fecha de creación de la transacción en formato ISO 8601.
order_idstring
Referencia única o número de orden/transacción.
statusstring
Estatus actual de la transacción. Posibles valores: completed, in_progress, failed.
amountnumeric
Cantidad de la transacción a dos decimales.
descriptionstring
Descripción de la transacción.
error_messagestring
Si la transacción está en status: failed, en este campo se mostrará la razón del fallo.
customer_idstring
Identificardor único del cliente al cual pertence la transacción. Si el valor es nulo, la transacción pertenece a la cuenta del comercio.
currencystring
Moneda usada en la operación, por default es MXN.
bank_accountobjeto
Datos de la cuenta bancaria usada en la transacción. Ver objeto BankAccoount
cardobjeto
Datos de la tarjeta usada en la transacción. Ver objeto Card
card_pointsobjeto
Datos de los puntos de la tarjeta usados para el pago, si fueron utilizados. Ver objeto CardPoints

Objeto Dirección

Ejemplo de Objeto:

{
   "line1":"Av 5 de Febrero",
   "line2":"Roble 207",
   "line3":"col carrillo",
   "state":"Queretaro",
   "city":"Querétaro",
   "postal_code":"76900",
   "country_code":"MX" 
}
PropiedadDescripción
line1string (requerido)
Primera línea de dirección del tarjeta habiente. Usada comúnmente para indicar la calle y número exterior e interior.
line2string
Segunda línea de la dirección del tarjeta habiente. Usada comúnmente para indicar condominio, suite o delegación.
line3string
Tercer línea de la dirección del tarjeta habiente. Usada comúnmente para indicar la colonia.
postal_codestring (requerido)
Código postal del tarjeta habiente
statestring (requerido)
Estado del tarjeta habiente
citystring (requerido)
Ciudad del tarjeta habiente
country_codestring (requerido)
Código del país del tarjeta habiente a dos caracteres en formato ISO_3166-1

Objeto Store

Ejemplo de Objeto:

{
   "reference":"OPENPAY02DQ35YOY7",
   "barcode_url":"https://sandbox-api.openpay.mx/barcode/OPENPAY02DQ35YOY7?width=1&height=45&text=false",
   "paybin_reference":"0101990000001065",
   "barcode_paybin_url":"https://sandbox-api.openpay.mx/barcode/0101990000001065?width=1&height=45&text=false"
}
PropiedadDescripción
referencestring
Es la referencia con la que se puede ir a la tienda y realizar depósitos a la cuenta de Openpay.
barcode_urlstring
Es la url con la cual se puede obtener el codigo de barras de la referencia.
paybin_referencestring
Es la referencia con la que se puede ir a cualquier tienda que acepte Paybin.
barcode_paybin_urlstring
Es la url con la cual se puede obtener el codigo de barras de la referencia Paybin.

Objeto PaymentPlan

Ejemplo de Objeto:

{
   "payments":"6"
}
PropiedadDescripción
paymentsnumeric
Es el número de pagos en los cuales se pretende realizar un cargo a meses sin intereses (3, 6, 9, 12, 18).

Objeto CardPoints

Ejemplo de Objeto:

{
    "used": 134,
    "remaining": 300,
    "caption": "TRANSACCION APROBADA. ME OBLIGO EN LOS TERMINOS Y CONDICIONES DEL PROGRAMA RECOMPENSAS SANTANDER. PARA CUALQUIER DUDA O ACLARACION LLAME AL 01800 RECOMPE (73-266-73).",
    "amount": 10
}
PropiedadDescripción
usednumeric
Cantidad de puntos usados para realizar este pago.
remainingnumeric
Cantidad de puntos restantes en la tarjeta después de realizar el pago.
amountnumeric
Monto de la transacción que fue pagado mediante puntos.
captionstring (opcional)
Mensaje a mostrar al cliente en su recibo o ticket de compra.

Objeto Geolocation

Ejemplo de Objeto:

{
  "lng": -100.421865,
  "lat": 20.618171,
  "place_id": "ChIJwSN2wpNa04URsDryLW517lg"
}
PropiedadDescripción
lngnumeric
Longitud, coordenada geográfica.
latnumeric
Latitud, coordenada geográfica.
place_idstring
Identificacdor único en google maps

Objeto PaynetChain

Ejemplo de Objeto:

{
      "name": "EXTRA",
      "logo": "http://www.openpay.mx/logotipos/extra.png",
      "thumb": "http://www.openpay.mx/thumb/extra.png",
      "max_amount": 99999.99
    }
PropiedadDescripción
namestring
Nombre de la cadena.
logostring
Url de la imagen del logotipo de la cadena.
thumbstring
Url de la imagen miniatura del logotipo de la cadena.
max_amountnumeric
Monto máximo de pago que aceptan las tiendas de la cadena

Objeto Transaction Status

ValueDescription
IN_PROGRESSTransacción en proceso
COMPLETEDTransacción ejecutada correctamente
REFUNDEDTransacción reembolsada
CHARGEBACK_PENDINGTransacción con contracargo pendiente
CHARGEBACK_ACCEPTEDTransacción con contracargo aceptado
CHARGEBACK_ADJUSTMENTTransacción con ajuste de contracargo
CHARGE_PENDINGTransacción de cargo que no ha sido pagada
CANCELLEDTransacción de cargo que no fue pagada y se ha cancelado
FAILEDTransacción que se intentó pagar pero ocurrió algún error

Facturación Electrónica

Objeto Generación de CFDI

CampoDescripción
openpay_transaction_idOpcional
Id de la transacción en openpay.
invoice_idRequerido
Identificador de factura /orden de compra del comercio.
tipo_comprobanteOpcional (default (I) ingreso)
Objeto Tipo de Comprobante.
serieOpcional (1-25 Alfanumérico)
Serie de la factura en caso de manejar.
folioOpcional pago (1-40 Alfanumérico)
Folio de la factura en caso de manejar.
totalRequerido (Decimal)
Total de la factura.
subtotalRequerido (Decimal)
Subtotal de la factura.
forma_pagoRequerido
Forma de pago
Se debe enviar solamente la clave de pago que corresponda al método de pago realizado.
Objeto Forma de Pago.
metodo_pagoRequerido
Método de pago
Objeto Metodo de Pago.
lugar_expedicionRequerido (5 dígitos)
Código postal del Lugar de expedición.
descuentoOpcional (Decimal)
Monto del descuento.
observacionesOpcional (Alfanumérico)
Observaciones.
total_trasladadosOpcional (Decimal)
Total de impuestos trasladados en caso que existan.
total_retenidosOpcional (Decimal)
Total de impuestos retenidos en caso que existan.
monedaRequerido (3 Alfanumerico)
Moneda en la que se realizó la venta en caso que sea diferente de MXN. (ISO 4217)
tipo_de_cambioRequerido (Decimal)
Tipo de cambio de la moneda en la que se realizó la venta. 1.00 en caso que la moneda sea MXN.
receptorRequerido (Objeto Receptor)
Nodo que contiene los datos del receptor de la factura.
conceptosRequerido (Arreglo de Objeto Concepto)
Arreglo de conceptos incluidos en la factura.
cfdi_relacionadosOpcional (Objeto Relacionados)
Facturas relacionadas.
complementsOpcional (Objeto Complementos)
Complementos.

Objeto Tipo de Comprobante

Tipo comprobante fiscalDocumento Fiscal
(I) ingreso
  • Factura.
  • Honorarios.
  • Nota de cargo.
  • Donativos.
  • Arrendamiento.
(E) egreso
  • Nota de crédito.
  • Nota de devolución.
  • Nómina.
  • Asimilables.
(T) traslado
  • Carta porte.
(N) Nómina
  • Nómina.
(P) Pago
  • Pago.

Objeto Forma de Pago

ClaveDescripción
01Efectivo.
02Cheque nominativo.
03Transferencia electrónica de fondos.
04Tarjeta de Crédito.
05Monedero Electrónico.
06Dinero Electrónico.
08Vales de despensa.
12Dación en pago.
13Pago por subrogación.
14Pago por consignación.
15Condonación.
17Compensación.
23Novación.
24Confusión.
25Remisión de deuda.
26Prescripción o caducidad.
27A satisfacción del acreedor.
28Tarjeta de Débito.
29Tarjeta de Servicio.
30Aplicación de anticipos.
99Otros.

Objeto Metodo de Pago

ClaveDescripción
PUEPago única exhibición.
PPDPagos parciales o diferidos.

Objeto DoctoRelacionado

ClaveDescripción
id_documentoRequerido (16-36 Alfanumérico)
Identificador del documento (uuid).
serieOpcional (1-25 Alfanumérico)
Serie del documento.
folioOpcional (1-40 Alfanumérico)
Folio del documento.
moneda_d_rRequerido (3 Alfabético)
Código de Moneda (ISO 4217).
tipo_cambio_d_rOpcional (Decimal)
Tipo de cambio.
metodo_de_pago_d_rOpcional
Método de pago.
num_parcialidadOpcional
Número de la parcialidad.
imp_saldo_antOpcional (Decimal)
Importe del saldo anterior.
imp_pagadoOpcional (Decimal)
Importe pagado.
imp_saldo_insolutoOpcional (Decimal)
Importe del saldo insoluto.

Objeto Concepto

ClaveDescripción
IdentificadorRequerido (1-100 Alfanumérico)
Identificador del concepto.
cantidadRequerido (Decimal)
Cantidad del concepto.
unidadOpcional(1-20 Alfanumérico)
Unidad del concepto.
clave_unidadRequerido (Alfanumérico, Catálogo Clave Unidad)
Clave de unidad.
descripcionRequerido (1-1000 Alfanumérico)
Descripción del concepto.
valor_unitarioRequerido (Decimal)
Valor unitario del concepto.
importeRequerido (Decimal)
Importe del impuesto trasladado.
claveRequerido (1-10 Numérico)
Clave del producto.
descuentoOpcional (Decimal)
Monto de descuento.
trasladosOpcional (Arreglo de Objeto Impuesto)
Lista de impuestos de traslado.
retencionesOpcional (Arreglo de Objeto Impuesto)
Lista de impuestos de retención.

Objeto Impuesto

ClaveDescripción
impuestoRequerido
Impuesto
Objeto Tipo de Impuesto.
tipo_factorRequerido
Tipo de factor
Códigos:
  • Tasa
  • Cuota
  • Excento
tasaRequerido
Decimal
Tasa que será usada para calcular el impuesto
importeRequerido
Monto del impuesto calculado
baseOpcional
Monto sobre el cual será aplicado el Impuesto

Objeto Tipo de Impuesto

CódigoDescripción
001ISR
002IVA
003IEPS

Objeto Receptor

CampoDescripción
nombreRequerido (1-254 Alfanumérico)
Nombre del receptor de la factura.
rfcRequerido
RFC del receptor de la factura.
emailOpcional
Email del receptor de la factura.
residencia_fiscalOpcional
Código postal de la residencia fiscal.
uso_cfdiRequerido (3 Alfanumérico)
Objeto Uso de CFDI.
paisOpcional (3 Alfanumérico)
Código de país (ISO 3166-1 alfa-3). No debe enviarse si el RFC está registrado con el SAT o es un RFC genérico nacional.

Objeto Uso de CFDI

CódigoDescripción
G01Adquisición de mercancías.
G02Devoluciones, descuentos o bonificaciones.
G03Gastos en general.
I01Construcciones.
I02Mobiliario y equipo de oficina por inversiones.
I03Equipo de transporte.
I04Equipo de cómputo y accesorios.
I05Dados, troqueles, moldes, matrices y herramental.
I06Comunicaciones telefónicas.
I07Comunicaciones satelitales.
I08Otra maquinaria y equipo.
D01Honorarios médicos, dentales y gastos hospitalarios.
D02Gastos médicos por incapacidad o discapacidad.
D03Gastos funerarios.
D04Donativos.
D05Intereses reales efectivamente pagados por créditos hipotecarios (casa habitación).
D06Aportaciones voluntarias al SAR.
D07Primas por seguros de gastos médicos.
D08Gastos de transportación escolar obligatoria.
D09Depósitos en cuentas para el ahorro, primas que tengan como base planes de pensiones.
D10Pagos por servicios educativos (colegiaturas).
P01Por definir.

Objeto Relacionado

CampoDescripción
tipo_relacionRequerido
Tipo relación
Objeto Tipo de Relación.
relacionadosRequerido (Arreglo de Objeto CfdiRelacionado)
Objeto CFDI Relacionado.

Objeto Tipo de Relación

CódigoDescripción
01Nota de crédito de los documentos relacionados.
02Nota de débito de los documentos relacionados.
03Devolución de mercancía sobre facturas o traslados previos.
04Sustitución de los CFDI previos.
05Traslados de mercancías facturados previamente.
06Factura generada por los traslados previos.
07CFDI por aplicación de anticipo.

Objeto CFDI Relacionado

CampoDescripción
uuidRequerido (36 Alfanumérico)
UUID de la factura relacionada.

Objeto Complementos

CampoDescripción
aerolineasOpcional (Objeto Complemento Aerolíneas)
Complemento para aerolíneas.
pagosOpcional (Objeto Complemento Pago)
Complementos de pago.
donatariasOpcional (Objeto Complemento Donatarias)
Complemento Donatarias.

Objeto Complemento Aerolíneas

CampoDescripción
tuaRequerido (Decimal)
Tarifa de uso de aeropuerto.
otrosCargosOpcional (Arreglo de Objeto Aerolíneas Cargo)
Complementos de pago.

Objeto Aerolíneas Cargo

CampoDescripción
codigo_cargoOpcional
Código del cargo.
descripcion_cargoOpcional
Descripción del cargo.
importeOpcional (Decimal)
Monto del cargo.

Objeto Complemento Pago

CampoDescripción
fecha_pagoRequerido
Fecha de la operación.
forma_de_pagoRequerido
Forma de pago.
moneda_pRequerido (Decimal)
Monto del cargo.
tipo_cambio_pRequerido (Decimal)
Tipo de cambio de la moneda en la que se realizó la venta. 1.00 en caso que la moneda sea MXN.
montoRequerido (Decimal)
Monto del pago.
num_operacionOpcional (1-100 Alfanumérico)
Número de pago.
rfc_emisor_cta_ordOpcional
RFC del emisor.
nom_banco_ord_extOpcional (1-300 Alfanumérico)
Nombre del banco.
cta_ordenanteOpcional (10-50 Alfanumérico)
Cuenta ordenante.
rfc_emisor_cta_benBeneficiario.
cta_beneficiarioOpcional (10-50 Alfanumérico)
Cuenta del beneficiario.
tipo_cad_pagoOpcional (único valor válido 01)
Tipo de cadena de pago.
cert_pagoOpcional (byte[])
Certificado de pago.
sello_pagoOpcional (byte[])
Sello de pago.
cad_pagoOpcional (1-8192 Alfanumérico)
Cadena.
docto_relacionadosOpcional (Arreglo Objeto DoctoRelacionado).

Objeto Complemento Donatarias

CampoDescripción
no_autorizacionRequerido
Número de autorización
fecha_autorizacionRequerido
Fecha de autorización (YYYY-MM-DD)
leyendaRequerido
Leyenda

Objeto Respuesta de solicitud de generación

CampoDescripción
invoice_idIdentificador de la factura enviado en la solicitud.
request_idId de petición generado por Openpay.
dateFecha en que se solicitó la generación.
statusPENDING, OK, ERROR.
fiscal_statusACTIVE, CANCELLED.
messageDescripción del status.

Objeto Notificaciones

CampoDescripción
invoice_idIdentificador de la factura enviado en la solicitud.
serieSerie de la factura.
folioFolio de la factura.
transaction_idIdentificador de transacción de Openpay ligado a la factura.
creation_dateFecha de solicitud.
issue_dateFecha de emisión de la factura.
uuidUUID de la factura.
receiver_rfcRFC del receptor de la factura.
totalTotal de la factura.
subtotalSubtotal de la factura.
statusPENDING, OK, ERROR.
fiscal_statusACTIVE, CANCELLED.
cancellation_dateFecha de cancelación de la factura en caso que esté cancelada.
public_xml_linkLiga para descarga del xml de la factura.
public_pdf_linkLiga para descarga del pdf de la factura.
link_expiration_dateExpiración de las ligas de descarga, una vez expiradas los xml / pdf pueden ser descargados desde el dashboard.
messageDetalle del status de la factura.

Contacto

Tu dinero siempre seguro

® Openpay Derechos Reservados 2021