curl --request POST \
--url https://api.gigstack.io/v2/platform-payouts/{id}/confirm \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gigstack.io/v2/platform-payouts/{id}/confirm', 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}/confirm"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"success": true,
"data": {
"id": "batchrun_3f9a1c7e2b4d6f8a0c1e3a5b7d9f1a2c",
"status": "stamping"
},
"timestamp": 1788221400000
}Confirm a platform payouts run for stamping
Irreversible. Hands a plan_ready run to the background worker, which stamps its CFDIs (it runs
every minute). A stamped CFDI can only be cancelled, not undone. The response only acknowledges the
hand-off; follow progress with GET /platform-payouts/{id} until status is completed or
failed, then read its result.
Safe to retry. Confirming a run that is already stamping or completed returns its current
status with 200 and does nothing else.
Provider-months already certified. Before the run flips to stamping, each provider-month it
certifies is reserved. If an earlier run of your team (same mode) already reserved a provider-month,
this run’s retention certificates for it are skipped (their reason names the earlier run,
reason_code is certificate_month_reserved) and the counts in included_count,
excluded_count, exclusion_summary, exclusion_code_summary and
planned_documents.certificate are recomputed. Income and commission invoices are not affected.
No request body. Requires editor permission on invoices for user-scoped tokens.
curl --request POST \
--url https://api.gigstack.io/v2/platform-payouts/{id}/confirm \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gigstack.io/v2/platform-payouts/{id}/confirm', 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}/confirm"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"success": true,
"data": {
"id": "batchrun_3f9a1c7e2b4d6f8a0c1e3a5b7d9f1a2c",
"status": "stamping"
},
"timestamp": 1788221400000
}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}$Response
The run is (or already was) with the worker.
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"