Actualizar cobro
curl --request PUT \
--url https://api.onepay.la/v1/payments/{payment_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resend": true,
"amount": 123,
"tax": 123,
"title": "<string>",
"description": "<string>",
"reference": "<string>",
"phone": "<string>",
"email": "<string>",
"document_url": "<string>",
"due_date": "<string>",
"expiration_date": "<string>"
}
'import requests
url = "https://api.onepay.la/v1/payments/{payment_id}"
payload = {
"resend": True,
"amount": 123,
"tax": 123,
"title": "<string>",
"description": "<string>",
"reference": "<string>",
"phone": "<string>",
"email": "<string>",
"document_url": "<string>",
"due_date": "<string>",
"expiration_date": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
resend: true,
amount: 123,
tax: 123,
title: '<string>',
description: '<string>',
reference: '<string>',
phone: '<string>',
email: '<string>',
document_url: '<string>',
due_date: '<string>',
expiration_date: '<string>'
})
};
fetch('https://api.onepay.la/v1/payments/{payment_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.onepay.la/v1/payments/{payment_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'resend' => true,
'amount' => 123,
'tax' => 123,
'title' => '<string>',
'description' => '<string>',
'reference' => '<string>',
'phone' => '<string>',
'email' => '<string>',
'document_url' => '<string>',
'due_date' => '<string>',
'expiration_date' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.onepay.la/v1/payments/{payment_id}"
payload := strings.NewReader("{\n \"resend\": true,\n \"amount\": 123,\n \"tax\": 123,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"reference\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.onepay.la/v1/payments/{payment_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resend\": true,\n \"amount\": 123,\n \"tax\": 123,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"reference\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onepay.la/v1/payments/{payment_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resend\": true,\n \"amount\": 123,\n \"tax\": 123,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"reference\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Cuota + interés al 22-jul",
"currency": "COP",
"amount": 1523000,
"amount_label": "$ 1.523.000",
"title": "Cuota + interés al 22-jul",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": null,
"provider_id": null,
"metadata": null,
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null
}
{
"message": "Este pago ya no se puede actualizar por su estado actual.",
"code": 15007,
"code_name": "cant_update_payment"
}
{
"message": "Este pago tiene una transacción activa en proceso. Por favor espera a que expire e intenta nuevamente.",
"code": 15004,
"code_name": "payment_charge_in_progress"
}
{
"message": "Registro no encontrado, Pago no existe",
"code": 10002,
"code_name": "record_not_found"
}
Actualizar cobro
Actualiza un cobro existente sin cancelarlo ni recrearlo, y reenvía el mensaje solo si lo pides.
PUT
/
payments
/
{payment_id}
Actualizar cobro
curl --request PUT \
--url https://api.onepay.la/v1/payments/{payment_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resend": true,
"amount": 123,
"tax": 123,
"title": "<string>",
"description": "<string>",
"reference": "<string>",
"phone": "<string>",
"email": "<string>",
"document_url": "<string>",
"due_date": "<string>",
"expiration_date": "<string>"
}
'import requests
url = "https://api.onepay.la/v1/payments/{payment_id}"
payload = {
"resend": True,
"amount": 123,
"tax": 123,
"title": "<string>",
"description": "<string>",
"reference": "<string>",
"phone": "<string>",
"email": "<string>",
"document_url": "<string>",
"due_date": "<string>",
"expiration_date": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
resend: true,
amount: 123,
tax: 123,
title: '<string>',
description: '<string>',
reference: '<string>',
phone: '<string>',
email: '<string>',
document_url: '<string>',
due_date: '<string>',
expiration_date: '<string>'
})
};
fetch('https://api.onepay.la/v1/payments/{payment_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.onepay.la/v1/payments/{payment_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'resend' => true,
'amount' => 123,
'tax' => 123,
'title' => '<string>',
'description' => '<string>',
'reference' => '<string>',
'phone' => '<string>',
'email' => '<string>',
'document_url' => '<string>',
'due_date' => '<string>',
'expiration_date' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.onepay.la/v1/payments/{payment_id}"
payload := strings.NewReader("{\n \"resend\": true,\n \"amount\": 123,\n \"tax\": 123,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"reference\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.onepay.la/v1/payments/{payment_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resend\": true,\n \"amount\": 123,\n \"tax\": 123,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"reference\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onepay.la/v1/payments/{payment_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resend\": true,\n \"amount\": 123,\n \"tax\": 123,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"reference\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\",\n \"document_url\": \"<string>\",\n \"due_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Cuota + interés al 22-jul",
"currency": "COP",
"amount": 1523000,
"amount_label": "$ 1.523.000",
"title": "Cuota + interés al 22-jul",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": null,
"provider_id": null,
"metadata": null,
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null
}
{
"message": "Este pago ya no se puede actualizar por su estado actual.",
"code": 15007,
"code_name": "cant_update_payment"
}
{
"message": "Este pago tiene una transacción activa en proceso. Por favor espera a que expire e intenta nuevamente.",
"code": 15004,
"code_name": "payment_charge_in_progress"
}
{
"message": "Registro no encontrado, Pago no existe",
"code": 10002,
"code_name": "record_not_found"
}
Actualiza un cobro en sitio: cambias monto, título, fecha u otros campos sin
cancelar el cobro ni crear uno nuevo. El mensaje al cliente se reenvía solo si
envías
Solo se modifican los campos que envías; el resto queda intacto. La idempotencia
(
resend: true.
Pensado para cobros que cambian a diario (por ejemplo, intereses de mora). En
lugar de cancelar y recrear el cobro en cada ajuste —lo que reenvía un mensaje
cada vez y satura al cliente— actualizas el mismo cobro y decides cuándo
notificar.
x-idempotency) no aplica a este endpoint.
Path Parameters
string
required
ID del cobro que quieres actualizar. Crear cobro.
Body
Todos los campos son opcionales.boolean
default:"false"
Si es
true, reenvía la solicitud de pago al cliente (WhatsApp) con los datos
actualizados. Si es false o se omite, el cobro se actualiza en silencio y no
se consume ningún mensaje.number
Nuevo monto a cobrar.
number
Nuevo monto de impuestos, en la misma moneda.
string
Breve mensaje que se muestra al cliente al pagar. Mínimo 4 caracteres.
string
Descripción del cobro. Mínimo 4 caracteres.
string
Referencia de pago para el portal de recaudo.
string
Número de teléfono del cliente al que se reenvía la solicitud vía WhatsApp.
string
Correo del cliente para la solicitud de pago.
string
URL de un documento (por ejemplo, la factura actualizada) que se mostrará al
cliente. Si lo envías, se usa tal cual; si no, y cambió el monto, título o
descripción, OnePay regenera automáticamente su propio documento.
date
Fecha límite de pago, formato
YYYY-MM-DD HH:MM:SS.date
Fecha de expiración del cobro, formato
YYYY-MM-DD HH:MM:SS.Solo se pueden actualizar cobros abiertos (pendientes, en progreso,
rechazados, programados o parcialmente pagados). Un cobro ya pagado, cancelado
o expirado responde
422 cant_update_payment.Además, si el cobro tiene una transacción en curso en la pasarela, no se
puede cambiar el amount ni el tax (responde 422 payment_charge_in_progress);
los campos de texto sí se pueden editar.Ejemplos de uso
- curl
- JavaScript
- Python
curl https://api.onepay.la/v1/payments/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166 \
-X PUT \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 1523000,
"title": "Cuota + interés al 22-jul",
"resend": false
}'
import fetch from 'node-fetch';
const body = {
amount: 1523000,
title: 'Cuota + interés al 22-jul',
resend: false
};
await fetch('https://api.onepay.la/v1/payments/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166', {
method: 'PUT',
headers: {
Authorization: 'Bearer sk_test_xxx',
'Content-Type': 'application/json'
},
body: JSON.stringify(body)
});
import requests
payload = {
"amount": 1523000,
"title": "Cuota + interés al 22-jul",
"resend": False
}
response = requests.put(
"https://api.onepay.la/v1/payments/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
headers={"Authorization": "Bearer sk_test_xxx"},
json=payload,
timeout=15
)
response.raise_for_status()
print(response.json())
Response
Devuelve el cobro actualizado, con la misma estructura que Crear cobro.string
Identificador único del cobro.
number
Monto del cobro en pesos.
string
Estado del cobro.
string
Título del cobro.
string
Descripción del cobro.
string
Fecha límite de pago (ISO 8601), si aplica.
string
Enlace de pago del cobro.
Ejemplo de respuesta
{
"id": "9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"source": "Cuota + interés al 22-jul",
"currency": "COP",
"amount": 1523000,
"amount_label": "$ 1.523.000",
"title": "Cuota + interés al 22-jul",
"description": null,
"phone": "+573201112233",
"expiration_at": "2025-03-20T22:36:24.000000Z",
"due_date": null,
"document_link": null,
"external_id": null,
"allows": {
"cards": true,
"accounts": true,
"card_extra": false,
"realtime": false,
"pse": true,
"transfiya": true
},
"status": "pending",
"is_test": false,
"created_at": "2025-03-05T22:36:24.000000Z",
"paid_at": null,
"payment_link": "https://pagos.onepay.la/payment/9e5ccd4a-d2f0-49dd-87fc-a0da752bd166",
"redirect_url": null,
"provider_id": null,
"metadata": null,
"customer": null,
"method": null,
"splits": [],
"company": null,
"commission": null
}
{
"message": "Este pago ya no se puede actualizar por su estado actual.",
"code": 15007,
"code_name": "cant_update_payment"
}
{
"message": "Este pago tiene una transacción activa en proceso. Por favor espera a que expire e intenta nuevamente.",
"code": 15004,
"code_name": "payment_charge_in_progress"
}
{
"message": "Registro no encontrado, Pago no existe",
"code": 10002,
"code_name": "record_not_found"
}
Was this page helpful?
⌘I