curl --request POST \
--url https://api.gigstack.io/v2/invoices/payment \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client": {
"id": "client_1234567890"
},
"date": 1784915988000,
"complements": [
{
"type": "pago",
"data": [
{
"payment_form": "03",
"date": "2026-07-24T12:00:00",
"currency": "MXN",
"exchange": 1,
"related_documents": [
{
"uuid": "A1B2C3D4-E5F6-7890-ABCD-1234567890AB",
"amount": 116,
"installment": 1,
"last_balance": 116,
"currency": "MXN",
"taxes": [
{
"base": 100,
"rate": "0.16",
"factor": "Tasa",
"type": "IVA",
"withholding": false,
"inclusive": false
}
]
}
]
}
]
}
],
"return_files": false
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client: {id: 'client_1234567890'},
date: 1784915988000,
complements: [
{
type: 'pago',
data: [
{
payment_form: '03',
date: '2026-07-24T12:00:00',
currency: 'MXN',
exchange: 1,
related_documents: [
{
uuid: 'A1B2C3D4-E5F6-7890-ABCD-1234567890AB',
amount: 116,
installment: 1,
last_balance: 116,
currency: 'MXN',
taxes: [
{
base: 100,
rate: '0.16',
factor: 'Tasa',
type: 'IVA',
withholding: false,
inclusive: false
}
]
}
]
}
]
}
],
return_files: false
})
};
fetch('https://api.gigstack.io/v2/invoices/payment', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/invoices/payment"
payload = {
"client": { "id": "client_1234567890" },
"date": 1784915988000,
"complements": [
{
"type": "pago",
"data": [
{
"payment_form": "03",
"date": "2026-07-24T12:00:00",
"currency": "MXN",
"exchange": 1,
"related_documents": [
{
"uuid": "A1B2C3D4-E5F6-7890-ABCD-1234567890AB",
"amount": 116,
"installment": 1,
"last_balance": 116,
"currency": "MXN",
"taxes": [
{
"base": 100,
"rate": "0.16",
"factor": "Tasa",
"type": "IVA",
"withholding": False,
"inclusive": False
}
]
}
]
}
]
}
],
"return_files": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"message": "Payment complement created",
"data": {
"uuid": "D2E3F4A5-3C4D-4E5F-9A0B-234567890CDE",
"idempotency_key": null,
"client": {
"id": "client_1234567890",
"name": "ESCUELA KEMPER URGATE",
"legal_name": "ESCUELA KEMPER URGATE",
"email": "contabilidad@ejemplo.com",
"bcc": [],
"phone": "+524421234567",
"tax_id": "EKU9003173C9",
"tax_system": "601",
"use": "G03",
"address": {
"street": "Av. Constituyentes",
"exterior": "1000",
"neighborhood": "Centro",
"city": "Querétaro",
"state": "QRO",
"zip": "76000",
"country": "MEX"
},
"is_valid": true,
"efos": {
"is_valid": true
},
"metadata": {},
"livemode": true,
"from": "api",
"owner": "user_1234567890",
"team": "team_1234567890",
"created_at": 1767225600000
},
"created_at": 1767225600000,
"date": 1767225600000,
"currency": "XXX",
"exchange_rate": 1,
"total": 0,
"subtotal": 0,
"discount": 0,
"taxes": 0,
"withholding_taxes": 0,
"series": "P",
"folio_number": 45,
"invoice_type": "P",
"use": "CP01",
"livemode": true,
"owner": "user_1234567890",
"team": "team_1234567890",
"from": "api",
"status": "valid",
"payments": [],
"invoices": [],
"items": [
{
"id": "item_pago",
"description": "Pago",
"quantity": 1,
"unit_price": 0,
"product_key": "84111506",
"unit_key": "ACT"
}
],
"metadata": {},
"emails": [
"contabilidad@ejemplo.com"
],
"cancellation": null,
"stamp": {
"sello": "kQ3xZ9vR2mP7tL4wN8cB1yH6",
"stamp_at": 1767225600000
},
"verification_url": "https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=D2E3F4A5-3C4D-4E5F-9A0B-234567890CDE&re=MEE200101ABC&rr=EKU9003173C9&tt=0.00&fe=kQ3xZ9",
"related_documents": []
}
}Create payment complement (complemento de pago)
Stamp a CFDI type “P” payment complement (complemento de pago, Pagos 2.0) that registers one or more payments against PPD (Pago en Parcialidades o Diferido) invoices.
Each entry in complements[].data is a payment. Each payment links one or more PPD
invoices through related_documents, supplying the amount paid, the installment number
and the previous balance so the SAT can compute the remaining balance.
Fixed by the SAT and therefore not required in the body: the comprobante currency
(XXX), the receptor UsoCFDI (CP01), and the line concept. The per-payment currency
lives in each payment’s currency field. The series defaults to the team’s payments
series (invoice_serie_payments).
gigstack Connect: Create for other teams using the team parameter.
curl --request POST \
--url https://api.gigstack.io/v2/invoices/payment \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client": {
"id": "client_1234567890"
},
"date": 1784915988000,
"complements": [
{
"type": "pago",
"data": [
{
"payment_form": "03",
"date": "2026-07-24T12:00:00",
"currency": "MXN",
"exchange": 1,
"related_documents": [
{
"uuid": "A1B2C3D4-E5F6-7890-ABCD-1234567890AB",
"amount": 116,
"installment": 1,
"last_balance": 116,
"currency": "MXN",
"taxes": [
{
"base": 100,
"rate": "0.16",
"factor": "Tasa",
"type": "IVA",
"withholding": false,
"inclusive": false
}
]
}
]
}
]
}
],
"return_files": false
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client: {id: 'client_1234567890'},
date: 1784915988000,
complements: [
{
type: 'pago',
data: [
{
payment_form: '03',
date: '2026-07-24T12:00:00',
currency: 'MXN',
exchange: 1,
related_documents: [
{
uuid: 'A1B2C3D4-E5F6-7890-ABCD-1234567890AB',
amount: 116,
installment: 1,
last_balance: 116,
currency: 'MXN',
taxes: [
{
base: 100,
rate: '0.16',
factor: 'Tasa',
type: 'IVA',
withholding: false,
inclusive: false
}
]
}
]
}
]
}
],
return_files: false
})
};
fetch('https://api.gigstack.io/v2/invoices/payment', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/invoices/payment"
payload = {
"client": { "id": "client_1234567890" },
"date": 1784915988000,
"complements": [
{
"type": "pago",
"data": [
{
"payment_form": "03",
"date": "2026-07-24T12:00:00",
"currency": "MXN",
"exchange": 1,
"related_documents": [
{
"uuid": "A1B2C3D4-E5F6-7890-ABCD-1234567890AB",
"amount": 116,
"installment": 1,
"last_balance": 116,
"currency": "MXN",
"taxes": [
{
"base": 100,
"rate": "0.16",
"factor": "Tasa",
"type": "IVA",
"withholding": False,
"inclusive": False
}
]
}
]
}
]
}
],
"return_files": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"message": "Payment complement created",
"data": {
"uuid": "D2E3F4A5-3C4D-4E5F-9A0B-234567890CDE",
"idempotency_key": null,
"client": {
"id": "client_1234567890",
"name": "ESCUELA KEMPER URGATE",
"legal_name": "ESCUELA KEMPER URGATE",
"email": "contabilidad@ejemplo.com",
"bcc": [],
"phone": "+524421234567",
"tax_id": "EKU9003173C9",
"tax_system": "601",
"use": "G03",
"address": {
"street": "Av. Constituyentes",
"exterior": "1000",
"neighborhood": "Centro",
"city": "Querétaro",
"state": "QRO",
"zip": "76000",
"country": "MEX"
},
"is_valid": true,
"efos": {
"is_valid": true
},
"metadata": {},
"livemode": true,
"from": "api",
"owner": "user_1234567890",
"team": "team_1234567890",
"created_at": 1767225600000
},
"created_at": 1767225600000,
"date": 1767225600000,
"currency": "XXX",
"exchange_rate": 1,
"total": 0,
"subtotal": 0,
"discount": 0,
"taxes": 0,
"withholding_taxes": 0,
"series": "P",
"folio_number": 45,
"invoice_type": "P",
"use": "CP01",
"livemode": true,
"owner": "user_1234567890",
"team": "team_1234567890",
"from": "api",
"status": "valid",
"payments": [],
"invoices": [],
"items": [
{
"id": "item_pago",
"description": "Pago",
"quantity": 1,
"unit_price": 0,
"product_key": "84111506",
"unit_key": "ACT"
}
],
"metadata": {},
"emails": [
"contabilidad@ejemplo.com"
],
"cancellation": null,
"stamp": {
"sello": "kQ3xZ9vR2mP7tL4wN8cB1yH6",
"stamp_at": 1767225600000
},
"verification_url": "https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=D2E3F4A5-3C4D-4E5F-9A0B-234567890CDE&re=MEE200101ABC&rr=EKU9003173C9&tt=0.00&fe=kQ3xZ9",
"related_documents": []
}
}Authorizations
Authentication Method: HTTP Bearer token.
The runtime requires the literal Bearer prefix — a bare token in the
Authorization header is rejected with 401 unauthorized.
Header Format: Authorization: Bearer YOUR_API_KEY
Your API key is a JWT. Live keys operate on live data (livemode: true);
test keys operate on isolated test data (livemode: false).
Get your key at: app.gigstack.pro/settings?tab=api
Errors: credential failures are answered by the authentication layer with a raw
{ "message": … } body, not the standardized envelope — 401 for a missing, malformed or
expired token, 403 for a revoked key or a plan without API access. See the Unauthorized
and AuthForbidden responses.
Query Parameters
gigstack Connect: Target team ID for multi-team access.
Requires gigstack Connect enabled on your team and shared billing account.
Also requires the multipleIssuerAccounts feature on your plan. Requests targeting a
team other than the one your API key belongs to return 403 without it.
Only API keys can use it: an OAuth access token sent with another team's id is rejected with
403 Team mismatch with OAuth token.
Optional — omit it entirely unless you are acting on another team. It deliberately
carries no example value so generated snippets do not emit ?team=undefined; when the
parameter is absent, the team is derived from your API key.
Example: ?team=team_xyz789
Body
Show child attributes
Show child attributes
Payment complement groups. Normally a single entry with type 'payment'.
1Show child attributes
Show child attributes
Comprobante date in epoch milliseconds. Defaults to now.
1784915988000
When true, includes base64 XML + PDF in the response.
Optional custom folio. When set, stamps with that exact folio.
Override the series. Defaults to the team's payments series (invoice_serie_payments).
01, 02, 03, 04, null Optional CFDI relations (CfdiRelacionados) at the comprobante level.
Show child attributes
Show child attributes