Open a dispute (ARCO)
curl --request POST \
--url https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"record_source": "res_chile",
"record_ref": "BOL-2026-04512",
"reason": "The reported default was paid in full on 2026-07-30.",
"report_id": "3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01"
}
'import requests
url = "https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes"
payload = {
"record_source": "res_chile",
"record_ref": "BOL-2026-04512",
"reason": "The reported default was paid in full on 2026-07-30.",
"report_id": "3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
record_source: 'res_chile',
record_ref: 'BOL-2026-04512',
reason: 'The reported default was paid in full on 2026-07-30.',
report_id: '3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01'
})
};
fetch('https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'record_source' => 'res_chile',
'record_ref' => 'BOL-2026-04512',
'reason' => 'The reported default was paid in full on 2026-07-30.',
'report_id' => '3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes"
payload := strings.NewReader("{\n \"record_source\": \"res_chile\",\n \"record_ref\": \"BOL-2026-04512\",\n \"reason\": \"The reported default was paid in full on 2026-07-30.\",\n \"report_id\": \"3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"record_source\": \"res_chile\",\n \"record_ref\": \"BOL-2026-04512\",\n \"reason\": \"The reported default was paid in full on 2026-07-30.\",\n \"report_id\": \"3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"record_source\": \"res_chile\",\n \"record_ref\": \"BOL-2026-04512\",\n \"reason\": \"The reported default was paid in full on 2026-07-30.\",\n \"report_id\": \"3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01\"\n}"
response = http.request(request)
puts response.read_body{
"dispute_id": "6a1c4e92-3b7d-4f51-9e82-1c7f3a5d8b64",
"subject_id": "8f5fb0d2-1d45-4a0e-9d5c-2d39f2b7a112",
"report_id": "3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01",
"record_source": "res_chile",
"record_ref": "BOL-2026-04512",
"reason": "The reported default was paid in full on 2026-07-30.",
"status": "open",
"created_by": "5f9d2c10-3e8b-4a1d-9c7a-1d2f3a4b5c6d",
"created_at": "2026-08-08T16:11:40Z"
}{
"error": "invalid_payload",
"message": "record_source and reason are required"
}Open a dispute (ARCO)
Opens an ARCO dispute on a specific record of a subject (e.g. a
debt that does not belong to them or was already paid), in compliance
with data subject rectification rights. The subject must already exist
(it is created by the first report). record_source identifies the data
source family of the disputed record and record_ref the record inside
that source (both appear in the report as source / ref of each
tradeline or adverse event). The dispute starts in open status and its
lifecycle is managed by your organization.
POST
/
v1
/
qscore
/
subjects
/
{docID}
/
disputes
Open a dispute (ARCO)
curl --request POST \
--url https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"record_source": "res_chile",
"record_ref": "BOL-2026-04512",
"reason": "The reported default was paid in full on 2026-07-30.",
"report_id": "3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01"
}
'import requests
url = "https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes"
payload = {
"record_source": "res_chile",
"record_ref": "BOL-2026-04512",
"reason": "The reported default was paid in full on 2026-07-30.",
"report_id": "3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
record_source: 'res_chile',
record_ref: 'BOL-2026-04512',
reason: 'The reported default was paid in full on 2026-07-30.',
report_id: '3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01'
})
};
fetch('https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'record_source' => 'res_chile',
'record_ref' => 'BOL-2026-04512',
'reason' => 'The reported default was paid in full on 2026-07-30.',
'report_id' => '3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes"
payload := strings.NewReader("{\n \"record_source\": \"res_chile\",\n \"record_ref\": \"BOL-2026-04512\",\n \"reason\": \"The reported default was paid in full on 2026-07-30.\",\n \"report_id\": \"3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"record_source\": \"res_chile\",\n \"record_ref\": \"BOL-2026-04512\",\n \"reason\": \"The reported default was paid in full on 2026-07-30.\",\n \"report_id\": \"3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qbank.cl/platform/v1/qscore/subjects/{docID}/disputes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"record_source\": \"res_chile\",\n \"record_ref\": \"BOL-2026-04512\",\n \"reason\": \"The reported default was paid in full on 2026-07-30.\",\n \"report_id\": \"3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01\"\n}"
response = http.request(request)
puts response.read_body{
"dispute_id": "6a1c4e92-3b7d-4f51-9e82-1c7f3a5d8b64",
"subject_id": "8f5fb0d2-1d45-4a0e-9d5c-2d39f2b7a112",
"report_id": "3f5c9f2d-7d21-4b8c-9a2d-2d5f6a1b8c01",
"record_source": "res_chile",
"record_ref": "BOL-2026-04512",
"reason": "The reported default was paid in full on 2026-07-30.",
"status": "open",
"created_by": "5f9d2c10-3e8b-4a1d-9c7a-1d2f3a4b5c6d",
"created_at": "2026-08-08T16:11:40Z"
}{
"error": "invalid_payload",
"message": "record_source and reason are required"
}Authorizations
Session JWT (from register/login) or API key (pk_...).
X-API-Key: <token> is accepted as an alternative header.
Path Parameters
Query Parameters
ISO country of the document (default CL).
Response
Dispute created in open status.
Last modified on August 22, 2026
⌘I