Answer many documents of one kind
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Post, RequestUri = new Uri("https://api.slflo.com/api/integration/v1/acks"), Headers = { { "Idempotency-Key", "example" }, { "Authorization", "Bearer <token>" }, }, Content = new StringContent("{ \"entity\": \"payment\", \"items\": [ { \"external_number\": \"JRN-000881\", \"external_ref\": \"JRN-000881\", \"id\": \"pay_01J9\", \"message\": null, \"outcome\": \"ACCEPTED\", \"reason_code\": null }, { \"external_number\": null, \"external_ref\": null, \"id\": \"pay_01JA\", \"message\": \"Customer CUST-0042 is on hold\", \"outcome\": \"REJECTED\", \"reason_code\": \"CUSTOMER_ON_HOLD\" } ] }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } }};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.slflo.com/api/integration/v1/acks")) .header("Idempotency-Key", "example") .header("Authorization", "Bearer <token>") .header("Content-Type", "application/json") .method("POST", HttpRequest.BodyPublishers.ofString("{ \"entity\": \"payment\", \"items\": [ { \"external_number\": \"JRN-000881\", \"external_ref\": \"JRN-000881\", \"id\": \"pay_01J9\", \"message\": null, \"outcome\": \"ACCEPTED\", \"reason_code\": null }, { \"external_number\": null, \"external_ref\": null, \"id\": \"pay_01JA\", \"message\": \"Customer CUST-0042 is on hold\", \"outcome\": \"REJECTED\", \"reason_code\": \"CUSTOMER_ON_HOLD\" } ] }")) .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());const url = 'https://api.slflo.com/api/integration/v1/acks';const options = { method: 'POST', headers: { 'Idempotency-Key': 'example', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"entity":"payment","items":[{"external_number":"JRN-000881","external_ref":"JRN-000881","id":"pay_01J9","message":null,"outcome":"ACCEPTED","reason_code":null},{"external_number":null,"external_ref":null,"id":"pay_01JA","message":"Customer CUST-0042 is on hold","outcome":"REJECTED","reason_code":"CUSTOMER_ON_HOLD"}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.slflo.com/api/integration/v1/acks \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: example' \ --data '{ "entity": "payment", "items": [ { "external_number": "JRN-000881", "external_ref": "JRN-000881", "id": "pay_01J9", "message": null, "outcome": "ACCEPTED", "reason_code": null }, { "external_number": null, "external_ref": null, "id": "pay_01JA", "message": "Customer CUST-0042 is on hold", "outcome": "REJECTED", "reason_code": "CUSTOMER_ON_HOLD" } ] }'Up to 500 acks for one entity (order, invoice, payment, return); each item applied on its own, with its own result. Needs that kind’s :write scope. Send an Idempotency-Key header; a retry with the same key and body answers the first answer again, with Idempotent-Replayed: true.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Your key for this write, at most 100 characters (an order id or journal id works well). Required on every write; kept 7 days. Same key and body: the first answer again. Same key, other body: 422 IDEMPOTENCY_KEY_REUSED.
Request Bodyrequired
Section titled “Request Bodyrequired”object
object
Example
{ "entity": "payment", "items": [ { "external_number": "JRN-000881", "external_ref": "JRN-000881", "id": "pay_01J9", "message": null, "outcome": "ACCEPTED", "reason_code": null }, { "external_number": null, "external_ref": null, "id": "pay_01JA", "message": "Customer CUST-0042 is on hold", "outcome": "REJECTED", "reason_code": "CUSTOMER_ON_HOLD" } ]}Responses
Section titled “Responses”Answer many documents of one kind
object
object
object
object
object
object
Example
{ "data": [ { "ack": { "acked_at": "2026-10-05T10:42:00Z", "acked_version": 9134, "external_number": "JRN-000881", "external_ref": "JRN-000881", "message": null, "outcome": "ACCEPTED", "reason_code": null }, "error": null, "id": "pay_01J9", "result": "applied", "status": "RECORDED", "version": 9134 }, { "ack": { "acked_at": "2026-10-05T10:42:00Z", "acked_version": 9135, "external_number": "SO-0012345", "external_ref": "SO-0012345", "message": null, "outcome": "REJECTED", "reason_code": "CUSTOMER_ON_HOLD" }, "error": null, "id": "pay_01JA", "result": "unchanged", "status": "RECORDED", "version": 9135 } ], "meta": { "applied": 1, "failed": 0, "unchanged": 1 }}default
Section titled “default”An error: the code says what, retryable whether to try again.
object
object
Stable code, e.g. SCOPE_MISSING, UNKNOWN_REFERENCE.
Field-level problems: {field, code}.
object
What happened and how to fix it.
Quote it to support; it finds the server log.
Whether the same call may succeed later.
Example
{ "error": { "code": "SCOPE_MISSING", "details": [], "message": "This client does not hold the invoices:read scope.", "request_id": "req_01J9X4Q7T2M8P3NRT6V5WZ", "retryable": false }}
