451 Pago parcial
📋 Descripción
Registra un pago parcial sobre un título valor electrónico previamente inscrito. Este evento se usa cuando se realiza un abono que no cubre el monto total del título.
Cuándo usar este endpoint
- Cuando se recibe un pago que no cubre el valor total del título valor
- El título debe estar previamente inscrito (evento 036)
- Después del pago parcial, el título sigue activo con el saldo pendiente
Endpoint
POST https://developers.gosocket.net/sandbox/api/v1/Document/SendEventToAuthority
Autenticación
Tipo: Basic Auth
Debes proporcionar tus credenciales de API en cada solicitud mediante Basic Authentication.
Authorization: Basic base64(username:password)
Parámetros del Cuerpo
| Campo | Tipo | Requerido | Descripción | Ejemplo |
|---|---|---|---|---|
status | string | ✅ Sí | Código del estado del evento (045 = Pago) | 045 |
operationType | string | ✅ Sí | Tipo de operación (451 = Pago parcial) | 451 |
description | string | ✅ Sí | Descripción del tipo de evento | Pago de factura |
IDEmisor | string | ✅ Sí | NIT del emisor de la factura | 890900608 |
IDEmisorTipo | string | ✅ Sí | Tipo de identificación (31 = NIT) | 31 |
NombreEmisor | string | ✅ Sí | Razón social del emisor | ALMACENES EXITO S A |
TipoPago | string | ✅ Sí | Tipo de pago (1 = Parcial, 2 = Total) | 1 |
ValorActualTituloValor | string | ✅ Sí | Valor actual del título después del pago | 400000 |
ValorPendienteTituloValor | string | ✅ Sí | Saldo pendiente por pagar | 32000 |
ValorPagado | string | ✅ Sí | Monto del pago realizado | 432000 |
InvoiceID | string | ✅ Sí | Número de la factura electrónica | SETP994002551 |
docType | string | ✅ Sí | Tipo de documento (01 = Factura de venta) | 01 |
CUFEInvoice | string | ✅ Sí | CUFE del título valor | 3f0f41655f674f08a59ae541add8... |
FechaPago | string | ✅ Sí | Fecha en que se realizó el pago (formato: YYYY-MM-DD) | 2023-01-03 |
EndDateInvoice | string | ✅ Sí | Fecha de vencimiento original del título | 2022-12-30 |
Validación de Montos
Importante: Debe cumplirse la ecuación:
ValorPagado = ValorActualTituloValor - ValorPendienteTituloValor
Si no se cumple, la solicitud será rechazada con error 400.
Ejemplos de Código
- 🔧 cURL
- 🐍 Python
- ⚡ JavaScript
- 🐘 PHP
- ☕ Java
- 🟢 Node.js
- 💎 Ruby
- 🔷 C#
- 💠 PowerShell
curl -X POST 'https://developers.gosocket.net/sandbox/api/v1/Document/SendEventToAuthority' \
-u 'username:password' \
-d '{
"status": "045",
"operationType": "451",
"description": "Pago de factura",
"IDEmisor": "890900608",
"IDEmisorTipo": "31",
"NombreEmisor": "ALMACENES EXITO S A",
"TipoPago": "1",
"ValorActualTituloValor": "400000",
"ValorPendienteTituloValor": "32000",
"ValorPagado": "432000",
"InvoiceID": "SETP994002551",
"docType": "01",
"CUFEInvoice": "3f0f41655f674f08a59ae541add81e043c77d4331a469fc82bfa1f7f7c5c57d22dd417d6b2258240bd3119d485120b07",
"FechaPago": "2023-01-03",
"EndDateInvoice": "2022-12-30"
}'
import requests
import json
url = "https://developers.gosocket.net/sandbox/api/v1/Document/SendEventToAuthority"
payload = {
"status":"045",
"operationType":"451",
"description":"Pago de factura",
"IDEmisor":"890900608",
"IDEmisorTipo":"31",
"NombreEmisor":"ALMACENES EXITO S A",
"TipoPago":"1",
"ValorActualTituloValor":"400000",
"ValorPendienteTituloValor":"32000",
"ValorPagado":"432000",
"InvoiceID":"SETP994002551",
"docType":"01",
"CUFEInvoice":"3f0f41655f674f08a59ae541add81e043c77d4331a469fc82bfa1f7f7c5c57d22dd417d6b2258240bd3119d485120b07",
"FechaPago":"2023-01-03",
"EndDateInvoice":"2022-12-30"
}
response = requests.post(url, headers=headers, json=payload, auth=("username", "password"))
print(response.status_code)
print(response.json())
const axios = require('axios');
const url = 'https://developers.gosocket.net/sandbox/api/v1/Document/SendEventToAuthority';
const config = {
method: 'post',
url: url,
auth: {
username: 'username',
password: 'password'
},
data: {
"status":"045",
"operationType":"451",
"description":"Pago de factura",
"IDEmisor":"890900608",
"IDEmisorTipo":"31",
"NombreEmisor":"ALMACENES EXITO S A",
"TipoPago":"1",
"ValorActualTituloValor":"400000",
"ValorPendienteTituloValor":"32000",
"ValorPagado":"432000",
"InvoiceID":"SETP994002551",
"docType":"01",
"CUFEInvoice":"3f0f41655f674f08a59ae541add81e043c77d4331a469fc82bfa1f7f7c5c57d22dd417d6b2258240bd3119d485120b07",
"FechaPago":"2023-01-03",
"EndDateInvoice":"2022-12-30"
}
};
axios(config)
.then(response => {
console.log(response.status);
console.log(JSON.stringify(response.data, null, 2));
})
.catch(error => {
console.error(error);
});
<?php
$url = "https://developers.gosocket.net/sandbox/api/v1/Document/SendEventToAuthority";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
$data = json_encode({
"status":"045",
"operationType":"451",
"description":"Pago de factura",
"IDEmisor":"890900608",
"IDEmisorTipo":"31",
"NombreEmisor":"ALMACENES EXITO S A",
"TipoPago":"1",
"ValorActualTituloValor":"400000",
"ValorPendienteTituloValor":"32000",
"ValorPagado":"432000",
"InvoiceID":"SETP994002551",
"docType":"01",
"CUFEInvoice":"3f0f41655f674f08a59ae541add81e043c77d4331a469fc82bfa1f7f7c5c57d22dd417d6b2258240bd3119d485120b07",
"FechaPago":"2023-01-03",
"EndDateInvoice":"2022-12-30"
});
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "Status: " . $httpCode . "\n";
echo $response;
?>
import java.net.http.*;
import java.net.URI;
import java.util.Base64;
public class ApiExample {
public static void main(String[] args) throws Exception {
String url = "https://developers.gosocket.net/sandbox/api/v1/Document/SendEventToAuthority";
HttpClient client = HttpClient.newHttpClient();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create(url))
.method("POST", HttpRequest.BodyPublishers.ofString(
"""{
"status":"045",
"operationType":"451",
"description":"Pago de factura",
"IDEmisor":"890900608",
"IDEmisorTipo":"31",
"NombreEmisor":"ALMACENES EXITO S A",
"TipoPago":"1",
"ValorActualTituloValor":"400000",
"ValorPendienteTituloValor":"32000",
"ValorPagado":"432000",
"InvoiceID":"SETP994002551",
"docType":"01",
"CUFEInvoice":"3f0f41655f674f08a59ae541add81e043c77d4331a469fc82bfa1f7f7c5c57d22dd417d6b2258240bd3119d485120b07",
"FechaPago":"2023-01-03",
"EndDateInvoice":"2022-12-30"
}"""
));
String auth = "username:password";
String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes());
requestBuilder.header("Authorization", "Basic " + encodedAuth);
HttpRequest request = requestBuilder.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println("Status: " + response.statusCode());
System.out.println(response.body());
}
}
const https = require('https');
const data = JSON.stringify({
"status": "045",
"operationType": "451",
"description": "Pago de factura",
"IDEmisor": "890900608",
"IDEmisorTipo": "31",
"NombreEmisor": "ALMACENES EXITO S A",
"TipoPago": "1",
"ValorActualTituloValor": "400000",
"ValorPendienteTituloValor": "32000",
"ValorPagado": "432000",
"InvoiceID": "SETP994002551",
"docType": "01",
"CUFEInvoice": "3f0f41655f674f08a59ae541add81e043c77d4331a469fc82bfa1f7f7c5c57d22dd417d6b2258240bd3119d485120b07",
"FechaPago": "2023-01-03",
"EndDateInvoice": "2022-12-30"
});
const auth = Buffer.from('username:password').toString('base64');
const options = {
hostname: 'developers.gosocket.net',
path: '/sandbox/api/v1/Document/SendEventToAuthority',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Basic ${auth}`,
'Content-Length': data.length
}
};
const req = https.request(options, (res) => {
let responseData = '';
res.on('data', (chunk) => {
responseData += chunk;
});
res.on('end', () => {
console.log('Status:', res.statusCode);
console.log('Response:', JSON.parse(responseData));
});
});
req.on('error', (error) => {
console.error('Error:', error);
});
req.write(data);
req.end();
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://developers.gosocket.net/sandbox/api/v1/Document/SendEventToAuthority")
request = Net::HTTP::Post.new(uri)
request.basic_auth("username", "password")
request.content_type = "application/json"
request.body = JSON.dump({
"status": "045",
"operationType": "451",
"description": "Pago de factura",
"IDEmisor": "890900608",
"IDEmisorTipo": "31",
"NombreEmisor": "ALMACENES EXITO S A",
"TipoPago": "1",
"ValorActualTituloValor": "400000",
"ValorPendienteTituloValor": "32000",
"ValorPagado": "432000",
"InvoiceID": "SETP994002551",
"docType": "01",
"CUFEInvoice": "3f0f41655f674f08a59ae541add81e043c77d4331a469fc82bfa1f7f7c5c57d22dd417d6b2258240bd3119d485120b07",
"FechaPago": "2023-01-03",
"EndDateInvoice": "2022-12-30"
})
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
puts "Status: #{response.code}"
puts response.body
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var client = new HttpClient();
var url = "https://developers.gosocket.net/sandbox/api/v1/Document/SendEventToAuthority";
// Basic Authentication
var credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes("username:password"));
client.DefaultRequestHeaders.Authorization =
new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentials);
var json = @"{
\"status\": \"045\",
\"operationType\": \"451\",
\"description\": \"Pago de factura\",
\"IDEmisor\": \"890900608\",
\"IDEmisorTipo\": \"31\",
\"NombreEmisor\": \"ALMACENES EXITO S A\",
\"TipoPago\": \"1\",
\"ValorActualTituloValor\": \"400000\",
\"ValorPendienteTituloValor\": \"32000\",
\"ValorPagado\": \"432000\",
\"InvoiceID\": \"SETP994002551\",
\"docType\": \"01\",
\"CUFEInvoice\": \"3f0f41655f674f08a59ae541add81e043c77d4331a469fc82bfa1f7f7c5c57d22dd417d6b2258240bd3119d485120b07\",
\"FechaPago\": \"2023-01-03\",
\"EndDateInvoice\": \"2022-12-30\"
}";
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Status: {(int)response.StatusCode}");
Console.WriteLine(responseBody);
}
}
$url = "https://developers.gosocket.net/sandbox/api/v1/Document/SendEventToAuthority"
$headers = @{
"Content-Type" = "application/json"
}
$body = @'{
"status": "045",
"operationType": "451",
"description": "Pago de factura",
"IDEmisor": "890900608",
"IDEmisorTipo": "31",
"NombreEmisor": "ALMACENES EXITO S A",
"TipoPago": "1",
"ValorActualTituloValor": "400000",
"ValorPendienteTituloValor": "32000",
"ValorPagado": "432000",
"InvoiceID": "SETP994002551",
"docType": "01",
"CUFEInvoice": "3f0f41655f674f08a59ae541add81e043c77d4331a469fc82bfa1f7f7c5c57d22dd417d6b2258240bd3119d485120b07",
"FechaPago": "2023-01-03",
"EndDateInvoice": "2022-12-30"
}'@
$credentials = "username:password"
$encodedCredentials = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($credentials))
$headers["Authorization"] = "Basic $encodedCredentials"
try {
$response = Invoke-RestMethod -Uri $url -Method Post -Headers $headers -Body $body
Write-Host "Status: 200"
Write-Host ($response | ConvertTo-Json -Depth 10)
} catch {
Write-Host "Status: $($_.Exception.Response.StatusCode.value__)"
Write-Host $_.Exception.Message
}
📋 Ejemplo de Request (JSON)
{
"status": "045",
"operationType": "451",
"description": "Pago de factura",
"IDEmisor": "890900608",
"IDEmisorTipo": "31",
"NombreEmisor": "ALMACENES EXITO S A",
"TipoPago": "1",
"ValorActualTituloValor": "400000",
"ValorPendienteTituloValor": "32000",
"ValorPagado": "432000",
"InvoiceID": "SETP994002551",
"docType": "01",
"CUFEInvoice": "3f0f41655f674f08a59ae541add81e043c77d4331a469fc82bfa1f7f7c5c57d22dd417d6b2258240bd3119d485120b07",
"FechaPago": "2023-01-03",
"EndDateInvoice": "2022-12-30"
}