curl --request GET \
--url https://api.gigstack.io/v2/platform-payouts/{id}/movements \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gigstack.io/v2/platform-payouts/{id}/movements', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/platform-payouts/{id}/movements"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"data": {
"data": [
{
"id": "P10482_2026-08-04_125000_0",
"line": 2,
"status": "stamped",
"provider": {
"id": "P10482",
"name": "ESCUELA KEMPER URGATE",
"email": "proveedor@example.com",
"tax_id": "EKU9003173C9",
"team": "team_0987654321"
},
"movement_type": "Pago semanal",
"date": "2026-08-04",
"month": "2026-08",
"subtotal": 1250,
"commission": 96.15,
"exclusion_reason": null,
"exclusion_codes": [],
"error": null,
"income": {
"planned": true,
"status": "stamped",
"reason": null,
"reason_code": null,
"invoice_id": "7C2E4B1A-9D3F-4E8A-B6C5-1F2A3B4C5D6E",
"uuid": "7C2E4B1A-9D3F-4E8A-B6C5-1F2A3B4C5D6E",
"total": 1323.75,
"error": null,
"error_code": null
},
"certificate": {
"planned": true,
"status": "stamped",
"reason": null,
"reason_code": null,
"invoice_id": "0A1B2C3D-4E5F-4A6B-8C7D-9E0F1A2B3C4D",
"uuid": "0A1B2C3D-4E5F-4A6B-8C7D-9E0F1A2B3C4D",
"total": null,
"error": null,
"error_code": null
}
},
{
"id": "P20931_2026-08-04_98000_0",
"line": 3,
"status": "excluded",
"provider": {
"id": "P20931",
"name": "ESCUELA KEMPER URGATE",
"email": "otro.proveedor@example.com",
"tax_id": "EKU9003173C9",
"team": "team_1122334455"
},
"movement_type": "Pago semanal",
"date": "2026-08-04",
"month": "2026-08",
"subtotal": 980,
"commission": 75.38,
"exclusion_reason": "Sin sellos (CSD) en Gigstack",
"exclusion_codes": [
"missing_csd"
],
"error": null,
"income": {
"planned": false,
"status": "skipped",
"reason": "Sin sellos (CSD) en Gigstack",
"reason_code": "missing_csd",
"invoice_id": null,
"uuid": null,
"total": null,
"error": null,
"error_code": null
},
"certificate": {
"planned": false,
"status": "skipped",
"reason": "Sin sellos (CSD) en Gigstack",
"reason_code": "missing_csd",
"invoice_id": null,
"uuid": null,
"total": null,
"error": null,
"error_code": null
}
},
{
"id": "P30577_2026-08-05_110000_0",
"line": 4,
"status": "failed",
"provider": {
"id": "P30577",
"name": "ESCUELA KEMPER URGATE",
"email": "tercer.proveedor@example.com",
"tax_id": "EKU9003173C9",
"team": "team_5566778899"
},
"movement_type": "Pago semanal",
"date": "2026-08-05",
"month": "2026-08",
"subtotal": 1100,
"commission": 84.62,
"exclusion_reason": null,
"exclusion_codes": [],
"error": "Timbrado interrumpido: verificar en el PAC antes de reintentar",
"income": {
"planned": false,
"status": "skipped",
"reason": "Sin serie de facturación configurada",
"reason_code": "missing_series",
"invoice_id": null,
"uuid": null,
"total": null,
"error": null,
"error_code": null
},
"certificate": {
"planned": true,
"status": "failed",
"reason": null,
"reason_code": null,
"invoice_id": null,
"uuid": null,
"total": null,
"error": "Timbrado interrumpido: verificar en el PAC antes de reintentar",
"error_code": "interrupted_stamp"
}
}
],
"next": "4",
"has_more": true
},
"timestamp": 1788224160000
}List a platform payouts run's movements
One entry per row of the movements file, in file order, with the state of its income invoice and retention certificate. Use it to review exclusions before confirming, and to find failures after.
Cursor pagination: pass data.next back as next while data.has_more is true. The cursor is
stable while the worker updates statuses, so pages never overlap or skip rows.
Commission invoices (one per provider-month) are not listed here; the run only reports their counts.
curl --request GET \
--url https://api.gigstack.io/v2/platform-payouts/{id}/movements \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gigstack.io/v2/platform-payouts/{id}/movements', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/platform-payouts/{id}/movements"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"data": {
"data": [
{
"id": "P10482_2026-08-04_125000_0",
"line": 2,
"status": "stamped",
"provider": {
"id": "P10482",
"name": "ESCUELA KEMPER URGATE",
"email": "proveedor@example.com",
"tax_id": "EKU9003173C9",
"team": "team_0987654321"
},
"movement_type": "Pago semanal",
"date": "2026-08-04",
"month": "2026-08",
"subtotal": 1250,
"commission": 96.15,
"exclusion_reason": null,
"exclusion_codes": [],
"error": null,
"income": {
"planned": true,
"status": "stamped",
"reason": null,
"reason_code": null,
"invoice_id": "7C2E4B1A-9D3F-4E8A-B6C5-1F2A3B4C5D6E",
"uuid": "7C2E4B1A-9D3F-4E8A-B6C5-1F2A3B4C5D6E",
"total": 1323.75,
"error": null,
"error_code": null
},
"certificate": {
"planned": true,
"status": "stamped",
"reason": null,
"reason_code": null,
"invoice_id": "0A1B2C3D-4E5F-4A6B-8C7D-9E0F1A2B3C4D",
"uuid": "0A1B2C3D-4E5F-4A6B-8C7D-9E0F1A2B3C4D",
"total": null,
"error": null,
"error_code": null
}
},
{
"id": "P20931_2026-08-04_98000_0",
"line": 3,
"status": "excluded",
"provider": {
"id": "P20931",
"name": "ESCUELA KEMPER URGATE",
"email": "otro.proveedor@example.com",
"tax_id": "EKU9003173C9",
"team": "team_1122334455"
},
"movement_type": "Pago semanal",
"date": "2026-08-04",
"month": "2026-08",
"subtotal": 980,
"commission": 75.38,
"exclusion_reason": "Sin sellos (CSD) en Gigstack",
"exclusion_codes": [
"missing_csd"
],
"error": null,
"income": {
"planned": false,
"status": "skipped",
"reason": "Sin sellos (CSD) en Gigstack",
"reason_code": "missing_csd",
"invoice_id": null,
"uuid": null,
"total": null,
"error": null,
"error_code": null
},
"certificate": {
"planned": false,
"status": "skipped",
"reason": "Sin sellos (CSD) en Gigstack",
"reason_code": "missing_csd",
"invoice_id": null,
"uuid": null,
"total": null,
"error": null,
"error_code": null
}
},
{
"id": "P30577_2026-08-05_110000_0",
"line": 4,
"status": "failed",
"provider": {
"id": "P30577",
"name": "ESCUELA KEMPER URGATE",
"email": "tercer.proveedor@example.com",
"tax_id": "EKU9003173C9",
"team": "team_5566778899"
},
"movement_type": "Pago semanal",
"date": "2026-08-05",
"month": "2026-08",
"subtotal": 1100,
"commission": 84.62,
"exclusion_reason": null,
"exclusion_codes": [],
"error": "Timbrado interrumpido: verificar en el PAC antes de reintentar",
"income": {
"planned": false,
"status": "skipped",
"reason": "Sin serie de facturación configurada",
"reason_code": "missing_series",
"invoice_id": null,
"uuid": null,
"total": null,
"error": null,
"error_code": null
},
"certificate": {
"planned": true,
"status": "failed",
"reason": null,
"reason_code": null,
"invoice_id": null,
"uuid": null,
"total": null,
"error": "Timbrado interrumpido: verificar en el PAC antes de reintentar",
"error_code": "interrupted_stamp"
}
}
],
"next": "4",
"has_more": true
},
"timestamp": 1788224160000
}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.
Path Parameters
Run id.
^batchrun_[A-Za-z0-9]{6,40}$Query Parameters
Movements per page (default 50, 1-100).
1 <= x <= 100Opaque cursor from the previous page's data.next. Omit for the first page.
Response
A page of movements. Note the nesting: the array is at data.data, the cursor at data.next.
Standardized success envelope emitted by sendSuccessResponse.
true true
The operation payload.
Show child attributes
Show child attributes
Server time in epoch milliseconds (Luxon.now().toMillis()).
1767225600000
Human-readable summary. Present only when the handler supplies one.
"Operation completed successfully"