Authentication and limits
Requiresdebts:write. Uses the write limiter: 500 requests/hour per company. Each body is limited to 10 MB and each rows array to 20,000 rows.
Chunk rows use the exact same rows[].payment_plan contract as a one-request snapshot. See Send an external payment plan for activation, payment, cancellation, and idempotency rules.
200; changed JSON bytes return 409 chunk_content_conflict. An index greater than next_chunk_index returns 409 chunk_out_of_order.
Rows across all chunks may not exceed the declared expected_row_count. Final validation also rejects duplicate effective identities or invoice references across chunks.
A costly phone destination is validated asynchronously during processing after finalization. GetBill controls it per campaign, disabled by default; the partner cannot change it in a chunk, and the legacy accept_expensive_destination key is tolerated and ignored regardless of its value or JSON type. When the campaign does not allow it, its row remains part of the snapshot and completed status records a non-blocking warning in warnings, with warning_count and warnings_omitted; see Get Snapshot Status.
Invalid contact details: accepted with warnings
An invalid email or phone does not reject the row or batch. The invalid value is ignored, an existing primary contact value is preserved, and the response is HTTP200 with issues in data.warnings. Postal values with an invalid type or excessive length, and rows without email or phone, are also accepted with warnings. See Invalid or missing contact details for secondary-contact rules and errors that remain blocking.
Warnings in this response describe the uploaded chunk, with row numbers starting at 1. Continue uploading the remaining chunks, then finalize the snapshot. Final-result warnings use row numbers across the complete snapshot.