add-order-recurrent (modo recurrente)
Este método se utiliza para crear una nueva orden de venta, no existe un límite y se pueden crear tantas órdenes como lo requiera el usuario, este tipo de orden se considera como orden de pago recurrente o constante, es decir, la orden nunca se va a marcar como completada y podrá seguir recibiendo fondos, un ejemplo de uso para este tipo de ordenes es el de cobros recurrentes de una persona, así se evita estar generando una orden nueva cada vez que una persona necesita pagar algo, otro ejemplo podría ser utilizar este tipo de ordenes para generar una "wallet" a una persona, y en la cual pueda estar depositando fondos de manera regular
Las órdenes recurrentes a diferencia de la ordenes de un solo pago (ordenes modo normal) ya contienen una dirección de depósito al momento de ser generadas, no tienen fecha de expiración y no se tiene que realizar el proceso de abrirla para el cliente con el método show-order-customer, tampoco es necesaria la simulación previa de como quedara una orden de venta al utilizar el método calculate-order, otra diferencia que existe con respecto a las ordenes de tipo normal es que no es necesario generar un carrito de compras, por default las ordenes recurrentes se generan con el servicio de venta general (este servicio se genera de manera automática al dar de alta una tienda, para más información consulte la sección Introducción de esta documentación)
Este tipo de ordenes funcionan muy bien en combinación con el webhook de notificación, ya que se pueden recibir notificaciones cada vez que se realiza un pago a la orden (por la naturaleza de esta orden llamémosle depósito de fondos), para conocer más detalles del funcionamiento del webhook de notificaciones y darlo de alta ingresa en la sección Webhook
Path del método
add-order-recurrent
Endpoint final
PRODUCCION
https://aceptabits.com/api/thirdparty/v1/add-order-recurrent
SANDBOX DE PRUEBAS
https://sandbox.aceptabits.com/api/thirdparty/v1/add-order-recurrent
Método de petición HTTP
POST
Lista de parámetros
Parámetro | Obligatorio | Descripción | valor |
---|---|---|---|
code_customer | Si | Es el código del cliente a la que se asignara la orden | ejemplo: pgbcus52768928368489799 Este código es único de cada cliente, se obtiene al consultar el listado de clientes o al generar un cliente nuevo, consulte los métodos: get-customers, add-customer o show-customer para más detalles Así mismo en estos mismos métodos puedes encontrar la tienda a la que pertenece el cliente con los campos code_shop y name_shop |
code_currency | Si | Es el código de moneda con el que se pagara la orden | ejemplo: PBT o BTC Este código es único para cada moneda soportada en la plataforma, para consultar el listado de monedas soportadas en la plataforma consulta el método: get-currencies |
Para despejar dudas sobre como enviar los parámetros te recomendamos ingersar en la sección de Ejemplos de la presente documentación
Lista de codigos
código | Descripción |
---|---|
0156 | Orden creada con éxito |
código | Descripción |
---|---|
0000 | El Token API no es correcto y la autenticación del usuario ha fallado |
0003 | El Token API no es correcto y la autenticación del usuario ha fallado |
1963 | El Token API no es correcto y la autenticación del usuario ha fallado |
1964 | El código de cliente es requerido |
1965 | El código de moneda es requerido |
1966 | El código de moneda ingresado no es soportado en la plataforma (código de moneda incorrecto) |
1967 | El cliente al que se asignara la orden no existe (código de cliente incorrecto) |
1968 | Ocurrió un problema y no es posible crear la nueva orden, inténtelo nuevamente o consulte con soporte técnico para más ayuda |
1969 | Ocurrió un problema y no es posible crear la nueva orden, inténtelo nuevamente o consulte con soporte técnico para más ayuda |
1970 | Ocurrió un problema y no es posible crear la nueva orden, inténtelo nuevamente o consulte con soporte técnico para más ayuda |
1971 | Ocurrió un problema y no es posible crear la nueva orden, inténtelo nuevamente o consulte con soporte técnico para más ayuda |
1972 | Ocurrió un problema y no es posible crear la nueva orden, inténtelo nuevamente o consulte con soporte técnico para más ayuda |
1973 | El Token API no es correcto y la autenticación del usuario ha fallado |
1974 | Ocurrió un problema y no es posible crear la nueva orden, inténtelo nuevamente o consulte con soporte técnico para más ayuda |
1975 | Ocurrió un problema y no es posible crear la nueva orden, inténtelo nuevamente o consulte con soporte técnico para más ayuda |
Ejemplo de respuesta EXITOSA
Código HTTP 200
{
"status": true,
"success": {
"code": "0156"
},
"data": {
"code": "pgbord313139664138414772",
"address": "0x532Eb2b90B899bAb8A2241ffa5e93be1ab67F9cE",
"slug": "c1928d76774b46c1311c9b8524c528b354b05f7ax8o9sWY84pwN77241Zpt",
"amount_filled": "0.00000000",
"amount_remaining": "0.00000000",
"amount_unconfirmed": "0.00000000",
"code_customer": "pgbcus24995674373276446",
"name_customer": "Mario Chavez Alvarez",
"code_agent": null,
"name_agent": null,
"code_shop": "pgbsho15157253424869256",
"name_shop": "Velas martin",
"code_currency": "USDT",
"currency_full_name": "Tether USDT (USDT)",
"name_currency": "Tether USDT",
"code_blockchain": "POL",
"name_blockchain": "Polygon POS",
"confirmations_counter": "0",
"remaining_seconds": null,
"created_at": "2025-05-08T23:12:09.000000Z",
"created_at_format": "2025-05-08 17:12:09",
"expiration_date": null,
"expiration_date_format": null,
"payment_date": null,
"payment_date_format": null,
"isConfirming": "0",
"isExpired": "0",
"isPaid": "0",
"isWaiting": "0",
"code_blockchain": null,
"name_blockchain": null,
"total": "0.00000000",
"subtotal": "0.00000000",
"commission": "0.00000000",
"commission_percent": "1.50000000",
"total_mxn": "0.00000000",
"subtotal_mxn": "0.00000000",
"commission_mxn": "0.00000000",
"cart": [
{
"id": 388,
"code_product": null,
"code_service": "pgbser16572186371815311",
"name_product": null,
"name_service": "Venta general",
"quantity": "1.00000000",
"total_mxn": "0.00000000",
"unit_price_mxn": "0.00000000",
"extras": []
}
],
"concept": null,
"type_payment_periodic": "2"
}
}
Descripción de la respuesta
- Revisar el listado de
códigos EXITOSO
para conocer el significado desuccess
code
. data
- muestra la información de la orden recién creadacode
- Código de la orden (este código es único para cada orden dada de alta)address
- Muestra la dirección de depósito de la orden, si no se ha mostrado la orden al cliente con el método show-order-customer, este campo se mantendrá con valor nullslug
- Este es el identificador web de la orden (este slug es único para cada orden dada de alta, se utiliza para formar la URL de pago que se puede compartir al cliente)amount_filled
- Muestra la cantidad obtenida de la orden, se va actualizando cada vez que se realiza un pago a la ordenamount_remaining
- Muestra la cantidad restante que falta por obtener en la orden, se va actualizando cada vez que se realiza un pago a la orden (para ordenes recurrentes no existe un monto restante)amount_unconfirmed
- Muestra la cantidad obtenida que aún no ha completado las confirmaciones de red (en caso de que el pago no provenga de un usuario de MercadoBits, es decir de una wallet externa, si es así debera de completar las confirmaciones de red para poder reflejarse en el campoamount_filled
, si el pago proviene de un usuario de MercadoBits se vera reflejado inmediatamente en el campoamount_filled
)code_customer
- Código del cliente al que pertenece la orden de ventaname_customer
- Nombre del cliente al que pertenece la orden de ventacode_agent
- Código del agente de ventas al que pertenece la orden de venta, si la orden no tiene asignado un agente de ventas se mantendrá este campo con valor nullname_agent
- Nombre del agente de ventas al que pertenece la orden de venta, si la orden no tiene asignado un agente de ventas se mantendrá este campo con valor nullcode_shop
- Código de la tienda al que pertenece la orden de ventaname_shop
- Nombre de la tienda al que pertenece la orden de ventacode_currency
- Muestra el código de la moneda con la que se debe de pagar la orden de ventacurrency_full_name
- Muestra el nombre completo de la moneda con la que se debe de pagar la orden de venta (incluye nombre y código de moneda)name_currency
- Muestra el nombre de la moneda con la que se debe de pagar la orden de ventaconfirmations_counter
- Muestra las confirmaciones restantes para liberar elamount_unconfirmed
remaining_seconds
- Muestra la diferencia de tiempo hasta su fecha y hora de expiracion en segundos, si no se ha mostrado la orden al cliente con el metodo show-order-customer, este campo se mantendrá con valor nullcreated_at
- Fecha y hora de creación de la orden (UTC)created_at_format
- Fecha y hora de creación de la orden (America/Mexico_City)expiration_date
- Fecha y hora de expiración de la orden (America/Mexico_City), si no se ha mostrado la orden al cliente con el metodo show-order-customer, este campo se mantendrá con valor nullexpiration_date_format
- Fecha y hora de expiración de la orden (UTC), si no se ha mostrado la orden al cliente con el método show-order-customer, este campo se mantendrá con valor nullisConfirming
- indica si la orden tiene algún pago nativo recibido y esta esperando las confirmaciones de red, los valores posibles son:- 0 = no está esperando confirmaciones de red
- -1 = si está esperando confirmaciones de red
isExpired
- indica si una orden ha expirado, los valores posibles son:- 0 = no ha expirado
- -1 = ya ha expirado
isPaid
- indica si una orden ya ha sido pagada en su totalidad, los valores posibles son:- 0 = la orden aún no ha sido pagada en su totalidad
- -1 = la orden ya se ha pagado en su totalidad
isWaiting
- indica si la orden está en espera de ser liquidada completamente, los valores posibles son:- 0 = la orden no ha recibido ningún pago o se ha pagado en su totalidad
- -1 = la orden recibió por lo menos un pago y está en espera de ser liquidada completamente
code_blockchain
- Indica el codigo del blockchain utilizado en la moneda que se selecciono en la orden (null si es para una moneda con blockchain nativo que no requiere espeficiar algun tipo de red extra, o con un valor si es una moneda tipo token)name_blockchain
- Indica el nombre del blockchain utilizado en la moneda que se seleccionó en la orden (null si es para una moneda con blockchain nativo que no requiere especificar algún tipo de red extra, o con un valor si es una moneda tipo token)total
- Muestra la cantidad total a pagar de la orden de venta (para ordenes recurrentes no existe un monto total por pagar)subtotal
- Muestra la cantidad que recibirá el vendedor una vez la orden este pagada (si existe excedente, es decir que se pague de mas, el vendedor recibirá también el excedente, el único monto que pasa a formar parte de AceptaBits es el mostrado en el campocommission
, para ordenes recurrentes no existe un monto subtotal)commission
- Muestra la comisión que el vendedor pagara a AceptaBits una vez que la orden este pagada (para ordenes recurrentes no existe un monto de comisión, por el contrario, cada vez que se reciba un pago y se procese la comision se descontara de dicho pago, el porcentaje de comisión es el mostrado en campocommission_percent
)commission_percent
- Muestra el porcentaje de comisión que la orden pagara a AceptaBits (se utiliza este valor para calcular el campocommission
)total_mxn
- Muestra una representación del campototal
en MXN (Peso mexicano, para ordenes recurrentes no existe un monto total en mxn por pagar)subtotal_mxn
- Muestra una representación del camposubtotal
en MXN (Peso mexicano, para ordenes recurrentes no existe un monto subtotal en mxn)commission_mxn
- Muestra una representación del campocommission
en MXN (Peso mexicano, para ordenes recurrentes no existe un monto representativo de comisión en mxn)cart
- arreglo que contiene el carrito de compras de la orden, cada elemento dentro de este arreglo es un producto o servicio agregadoquantity
- indica la cantidad del producto o serviciototal_mxn
- muestra el total del presente elemento del carrito de compras expresado en MXN (Peso mexicano), se calcula de la siguiente manera:quantity
Xel precio en MXN del producto o servicio
name_product
- Muestra el nombre del producto, si el elemento es un servicio este campo se mantendrá con valor nullcode_product
- Muestra el código del producto, si el elemento es un servicio este campo se mantendrá con valor nullname_service
- Muestra el nombre del servicio, si el elemento es un producto este campo se mantendrá con valor nullcode_service
- Muestra el código del servicio, si el elemento es un producto este campo se mantendrá con valor null
concept
- Muestra el concepto que se le asigno a la orden de venta, si no se le asigno ningún concepto este campo se mantendrá con valor nulltype_payment_periodic
- indica que la orden es de tipo recurrente
Es importante conocer y saber interpretar la combinación de ciertos campos para entender en qué estado se encuentra una orden, por ejemplo, para saber cuando se ha pagado en una orden, si está en espera de confirmaciones de red, etc., a continuación mostramos estos estados y su respectiva combinación e interpretación de sus respectivos campos:
ESTADO 1: orden recién generada: Este estado nos indica que la orden ya fue generada utilizando el método: add-order-recurrent, en este estado se genera la dirección de depósito y ya se pueden depositar fondos.
address
= tiene generada la dirección de depósito, ejemplo: pbtcrt1qjr2fte8wgt0zet9tz9xcgwvjagvchrdea6a4eyamount_filled
= 0 (aun no se han depositado fondos)
ESTADO 2: orden con un pago recibido esperando las confirmaciones de red (deposito externo que no proviene de un usuario de MercadoBits): Este estado nos indica que la orden ha recibido un depósito y se encuentra en espera de las confirmaciones de red para acreditar los fondos
address
= tiene generada la dirección de depósito, ejemplo: pbtcrt1qjr2fte8wgt0zet9tz9xcgwvjagvchrdea6a4eyisConfirming
= -1confirmations_counter
= muestra las confirmaciones pendientes de red para los depositos que requieren confirmaciones, ejemplo: 5amount_filled
= muestra el monto que ya se ha confirmado, ejemplo: 100, 0.00056, etc. (este campo va mostrando la sumatoria de todos los depósitos recibidos confirmados, es decir va mostrando el total de depósitos que ha recibido la orden)amount_unconfirmed
= tiene el valor del depósito recibido que está en espera de las confirmaciones de red, ejemplo: 70.52369854
ESTADO 3: pago recibido que ya a cumplido con las confirmaciones de red (deposito externo que no proviene de un usuario de MercadoBits) Este estado nos indica que la orden ha recibido un depósito y ya se ha completado las confirmaciones de red
address
= tiene generada la dirección de depósito, ejemplo: pbtcrt1qjr2fte8wgt0zet9tz9xcgwvjagvchrdea6a4eyisConfirming
= 0confirmations_counter
= 0 (si aún hay depósitos pendientes por confirmación mostrara las confirmaciones pendientes que aún restan por completarse)amount_filled
= muestra el monto que ya se ha confirmado, ejemplo: 100, 0.00056, etc. (este campo va mostrando la sumatoria de todos los depósitos recibidos confirmados, es decir va mostrando el total de depósitos que ha recibido la orden)amount_unconfirmed
= 0 (si aún hay depósitos pendientes por confirmación mostrara el monto pendiente que aún falta por confirmarse)
ESTADO 4: pago recibido que no necesita confirmaciones de red (deposito que proviene de un usuario de MercadoBits) Este estado nos muestra un pago parcial recibido proveniente de un usuario de MercadoBits, estos pagos se procesan al instante y no requieren de confirmaciones de red para acreditar los fondos
address
= tiene generada la dirección de depósito, ejemplo: pbtcrt1qjr2fte8wgt0zet9tz9xcgwvjagvchrdea6a4eyconfirmations_counter
= 0amount_filled
= muestra el monto que ya se ha confirmado, ejemplo: 100, 0.00056, etc. (este campo va mostrando la sumatoria de todos los depósitos recibidos confirmados (en este caso de los depósitos provenientes de usuarios de MercadoBits entran directamente como depósitos confirmados), es decir va mostrando el total de depósitos que ha recibido la orden)amount_unconfirmed
= 0
Direccion de deposito: EL campo address es la dirección a la que el cliente final deberá de depositar el pago de la orden, esta dirección es única para cada orden generada en AceptaBits, se genera de manera automática al abrir la orden al cliente y no se puede cambiar ni ingresar de manera manual.
Se recomienda al desarrollador mostrarle al cliente esta dirección de manera muy clara y que por ningún motivo pueda ser cambiada, editada o borrada en la pantalla donde sea mostrada, esto con el propósito de minimizar la posibilidad de que un cliente pueda cometer algún error al momento de copiarla o transcribirla y posteriormente ser utilizada en su wallet para realizar el retiro de sus fondos, los fondos enviados a direcciones equivocadas serán responsabilidad del cliente, AceptaBits únicamente recibirá y acreditara fondos de las direcciones que se generen en las órdenes de venta.
Se recomienda al desarrollador mostrar la dirección de manera textual y también mostrarla en forma de código QR, estos códigos QR son muy cómodos y ampliamente utilizados en muchas plataformas al brindarle a sus usuarios la posibilidad de escanearlos para obtener de manera fácil una dirección de depósito, en AceptaBits hacemos uso de ellos para mostrar la dirección de depósito en las órdenes de venta, así mismo, brindamos a nuestros usuarios su respectivo escáner QR tanto en la página web como en la app para dispositivos móviles.
Montos en espera de confirmación por parte de la red:
Los montos que se depositen en la dirección de la orden y que provengan de una wallet externa que no sea la de MercadoBits quedaran en espera de las respectivas confirmaciones de red para cada criptomoneda, el número de confirmaciones podrá ser consultado con el método: get-payment-data.
Una vez que se reciba un depósito de esta naturaleza se actualizara el campo amount_unconfirmed con la cantidad depositada y también se actualizara el campo confirmations_counter, una vez pasadas las confirmaciones de red se actualizarán los campos de amount_filled con la cantidad ya liberada y el campo confirmations_counter con valor 0, tomando esto en cuenta veamos un par de ejemplos:
Ejemplo 1: supongamos que se recibe un pago de 0.00050000 BTC, en este caso el campo amount_unconfirmed quedara con el valor 0.00050000 y el campo confirmations_counter quedara con las confirmaciones requeridas en ese momento, por ejemplo: 6.
Ejemplo 2: Tomando el ejemplo anterior, supongamos que se recibe otro pago de 0.0006000 BTC, entonces el campo amount_unconfirmed quedara con el valor 0.00110000, esto es debido a que se suma la cantidad del primer deposito con este nuevo depósito, y que pasa con el campo confirmations_counter?, bueno en este caso se volverá a actualizar con las confirmaciones requeridas, por ejemplo: 6.
Ahora tomando en cuenta los dos ejemplos anteriores, supongamos que al primer deposito le quedaban solo 3 confirmaciones, esto no significa que deberá de esperar nuevamente las 6 confirmaciones para que ese monto se libere, conforme pasen las confirmaciones que originalmente requería se ira liberando y por lo tanto el campo amount_unconfirmed se ira actualizando, tomando este ejemplo, al pasar las 3 confirmaciones que requería el primer deposito el campo amount_unconfirmed quedaría con el valor 0.0006000 que viene siendo el monto del segundo deposito que aun está en espera de confirmarse, así mismo los montos que se van liberando también van actualizando el campo amount_filled, que en este caso quedaría con valor 0.00050000, ahora una vez que el segundo deposito sea confirmado completamente, el campo amount_unconfirmed quedaría con valor 0, el campo amount_filled quedaría con valor 0.00110000 y el campo confirmations_counter quedaría con valor 0.
Es importante saber cómo funcionan los depósitos que no provienen de usuario de MercadoBits, si no de wallets externas, ya sea otro exchange o alguna wallet nativa
Como nota final acerca de las confirmaciones de red, se debe de mencionar que se incrementa en 1 el número de confirmaciones mostradas en get-payment-data, esto es debido a que el contador comienza una vez que la transacción ha entrado a su primer bloque, por ejemplo: si se requieren 6 confirmaciones de red para Bitcoin (BTC), entonces al momento de recibir el pago se mostrara el campo confirmations_counter con valor igual a 7, es decir, las 6 confirmaciones que requiere AceptaBits + 1 confirmación que en realidad es el bloque en que entra la transacción al blockchain, este incremento +1 aplica para todos las monedas soportadas en la plataforma y a medida que se van procesando los bloques en el blockchain el valor del campo confirmations_counter ira disminuyendo (cada bloque confirmado disminuirá en 1 este campo contador).
Depósitos que provienen de usuarios de MercadoBits:
Los depósitos a la dirección de la orden que provengan de usuarios de MercadoBits (ya sea desde la web o desde la app) no pasan por el proceso de confirmaciones de red, estos depósitos se procesan de manera inmediata, por lo que veras actualizado directamente el campo amount_filled.
SLUG para navegadores web:
Las órdenes generan un código especial llamado slug, este código podremos encontrarlo en el campo que tiene el mismo nombre slug
, la función de este código es para que una orden de venta sea abierta para el cliente desde un navegador web, para ellos utilizaremos la siguiente estructura:
https://aceptabits.com/order/ + el slug de la orden
tomando de ejemplo el slug que podemos observar en el Ejemplo de respuesta EXITOSA, la url que compartirías a tu cliente para que pueda realizar el pago de la orden es el siguiente:
https://sandbox.aceptabits.com/order/24f2bfa1256ce75c39097f2b85dd7bb9840bf2080y4c0F4wY2XsFmzgrkRu
Una vez que el cliente ingrese a la url podrá observar la información de la orden, su dirección de depósito y el respectivo contador de tiempo hasta su expiración, a menos claro, que realice por lo menos un depósito a la orden.
Esta misma url es la que podemos obtener desde el panel principal de órdenes en la cuenta de AceptaBits al presionar el botón Copiar URL cuando se seleccionar una orden desde el listado de órdenes.
Algunas cosas a tener en consideración:
- Las órdenes de tipo recurrente a diferencia de las normales, no expiran y quedarán activas de manera indefinida para estar realizando depósito de fondos
- Los depósitos realizados a la orden que provengan de usuarios de MercadoBits (ya sea desde la web o la app) se verán reflejados de manera inmediata
- Los depósitos que provienen fuera de MercadoBits, es decir, que depositen a la dirección de la orden desde otro exchange u otra wallet tendrán que esperar las respectivas confirmaciones de red para liberar los fondos
- Si tienes alguna situación especial con alguna orden no dudes en comunicarte con el equipo de soporte
- Los pagos en ordenes recurrentes son depositados en la wallet del usuario dueño de la cuenta una vez son procesados tanto los que son directos como los que requieren confirmaciones de red una vez las han completado (quitando su respectiva comisión)
Ejemplo de respuesta FALLIDA
Código HTTP 400, Código HTTP 401, Código HTTP 500
{
"status": false,
"error": {
"code": "1964"
}
}
Descripción de la respuesta
- Revisar el listado de
códigos ERROR
para conocer la causa y saber cómo corregir - Si se obtiene un código HTTP
500
comunicarse a soporte técnico - Si se obtiene un código HTTP
401
revisar que el Token API este correcto
Si tienes alguna duda recuerda que siempre puedes contactar con el equipo de soporte para desarrolladores ingresando en el siguiente enlace: Soporte para desarrolladores.