Create Categorisation Feedback
curl --request POST \
--url https://api.yapily.com/transactions/categorisation/{categorisationId}/feedback \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"transactionHash": "...",
"suggestions": [
{
"type": "MISSING",
"field": "merchant name"
},
{
"type": "INCORRECT",
"field": "label",
"suggestedValue": "Correct Label"
}
],
"notes": "Lorem ipsum..."
}
'import requests
url = "https://api.yapily.com/transactions/categorisation/{categorisationId}/feedback"
payload = {
"transactionHash": "...",
"suggestions": [
{
"type": "MISSING",
"field": "merchant name"
},
{
"type": "INCORRECT",
"field": "label",
"suggestedValue": "Correct Label"
}
],
"notes": "Lorem ipsum..."
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
transactionHash: '...',
suggestions: [
{type: 'MISSING', field: 'merchant name'},
{type: 'INCORRECT', field: 'label', suggestedValue: 'Correct Label'}
],
notes: 'Lorem ipsum...'
})
};
fetch('https://api.yapily.com/transactions/categorisation/{categorisationId}/feedback', 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.yapily.com/transactions/categorisation/{categorisationId}/feedback",
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([
'transactionHash' => '...',
'suggestions' => [
[
'type' => 'MISSING',
'field' => 'merchant name'
],
[
'type' => 'INCORRECT',
'field' => 'label',
'suggestedValue' => 'Correct Label'
]
],
'notes' => 'Lorem ipsum...'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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.yapily.com/transactions/categorisation/{categorisationId}/feedback"
payload := strings.NewReader("{\n \"transactionHash\": \"...\",\n \"suggestions\": [\n {\n \"type\": \"MISSING\",\n \"field\": \"merchant name\"\n },\n {\n \"type\": \"INCORRECT\",\n \"field\": \"label\",\n \"suggestedValue\": \"Correct Label\"\n }\n ],\n \"notes\": \"Lorem ipsum...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.yapily.com/transactions/categorisation/{categorisationId}/feedback")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"transactionHash\": \"...\",\n \"suggestions\": [\n {\n \"type\": \"MISSING\",\n \"field\": \"merchant name\"\n },\n {\n \"type\": \"INCORRECT\",\n \"field\": \"label\",\n \"suggestedValue\": \"Correct Label\"\n }\n ],\n \"notes\": \"Lorem ipsum...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.yapily.com/transactions/categorisation/{categorisationId}/feedback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"transactionHash\": \"...\",\n \"suggestions\": [\n {\n \"type\": \"MISSING\",\n \"field\": \"merchant name\"\n },\n {\n \"type\": \"INCORRECT\",\n \"field\": \"label\",\n \"suggestedValue\": \"Correct Label\"\n }\n ],\n \"notes\": \"Lorem ipsum...\"\n}"
response = http.request(request)
puts response.read_body{
"meta": {
"tracingId": "12345678901234567890123456789012"
},
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"transactionHash": "...",
"suggestions": [
{
"type": "MISSING",
"field": "merchant name"
},
{
"type": "INCORRECT",
"field": "label",
"suggestedValue": "Correct Label"
}
],
"status": "OPEN",
"createdAt": "2026-01-01T00:00:00Z",
"notes": "Lorem ipsum..."
}
}{
"error": {
"tracingId": "0c2d0973bdd24224a65e5d0f7d1b6154",
"code": 401,
"status": "UNAUTHORIZED",
"supportUrl": "https://support.yapily.com/",
"source": "YAPILY",
"issues": [
{
"type": "CREDENTIALS",
"code": 10700,
"message": "Authorization header invalid or credentials not authenticated"
}
]
}
}{
"error": {
"tracingId": "0c2d0973bdd24224a65e5d0f7d1b6154",
"code": 500,
"status": "INTERNAL SERVER ERROR",
"supportUrl": "https://support.yapily.com/",
"source": "YAPILY",
"issues": [
{
"type": "INTERNAL_SERVER_ERROR",
"code": 11000,
"message": "Unexpected server error"
}
]
}
}Data Plus
Create Categorisation Feedback
Submit feedback for categorised transactions, by Categorisation ID and Transaction Hashes.
Create Categorisation Feedback
curl --request POST \
--url https://api.yapily.com/transactions/categorisation/{categorisationId}/feedback \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"transactionHash": "...",
"suggestions": [
{
"type": "MISSING",
"field": "merchant name"
},
{
"type": "INCORRECT",
"field": "label",
"suggestedValue": "Correct Label"
}
],
"notes": "Lorem ipsum..."
}
'import requests
url = "https://api.yapily.com/transactions/categorisation/{categorisationId}/feedback"
payload = {
"transactionHash": "...",
"suggestions": [
{
"type": "MISSING",
"field": "merchant name"
},
{
"type": "INCORRECT",
"field": "label",
"suggestedValue": "Correct Label"
}
],
"notes": "Lorem ipsum..."
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
transactionHash: '...',
suggestions: [
{type: 'MISSING', field: 'merchant name'},
{type: 'INCORRECT', field: 'label', suggestedValue: 'Correct Label'}
],
notes: 'Lorem ipsum...'
})
};
fetch('https://api.yapily.com/transactions/categorisation/{categorisationId}/feedback', 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.yapily.com/transactions/categorisation/{categorisationId}/feedback",
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([
'transactionHash' => '...',
'suggestions' => [
[
'type' => 'MISSING',
'field' => 'merchant name'
],
[
'type' => 'INCORRECT',
'field' => 'label',
'suggestedValue' => 'Correct Label'
]
],
'notes' => 'Lorem ipsum...'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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.yapily.com/transactions/categorisation/{categorisationId}/feedback"
payload := strings.NewReader("{\n \"transactionHash\": \"...\",\n \"suggestions\": [\n {\n \"type\": \"MISSING\",\n \"field\": \"merchant name\"\n },\n {\n \"type\": \"INCORRECT\",\n \"field\": \"label\",\n \"suggestedValue\": \"Correct Label\"\n }\n ],\n \"notes\": \"Lorem ipsum...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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.yapily.com/transactions/categorisation/{categorisationId}/feedback")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"transactionHash\": \"...\",\n \"suggestions\": [\n {\n \"type\": \"MISSING\",\n \"field\": \"merchant name\"\n },\n {\n \"type\": \"INCORRECT\",\n \"field\": \"label\",\n \"suggestedValue\": \"Correct Label\"\n }\n ],\n \"notes\": \"Lorem ipsum...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.yapily.com/transactions/categorisation/{categorisationId}/feedback")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"transactionHash\": \"...\",\n \"suggestions\": [\n {\n \"type\": \"MISSING\",\n \"field\": \"merchant name\"\n },\n {\n \"type\": \"INCORRECT\",\n \"field\": \"label\",\n \"suggestedValue\": \"Correct Label\"\n }\n ],\n \"notes\": \"Lorem ipsum...\"\n}"
response = http.request(request)
puts response.read_body{
"meta": {
"tracingId": "12345678901234567890123456789012"
},
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"transactionHash": "...",
"suggestions": [
{
"type": "MISSING",
"field": "merchant name"
},
{
"type": "INCORRECT",
"field": "label",
"suggestedValue": "Correct Label"
}
],
"status": "OPEN",
"createdAt": "2026-01-01T00:00:00Z",
"notes": "Lorem ipsum..."
}
}{
"error": {
"tracingId": "0c2d0973bdd24224a65e5d0f7d1b6154",
"code": 401,
"status": "UNAUTHORIZED",
"supportUrl": "https://support.yapily.com/",
"source": "YAPILY",
"issues": [
{
"type": "CREDENTIALS",
"code": 10700,
"message": "Authorization header invalid or credentials not authenticated"
}
]
}
}{
"error": {
"tracingId": "0c2d0973bdd24224a65e5d0f7d1b6154",
"code": 500,
"status": "INTERNAL SERVER ERROR",
"supportUrl": "https://support.yapily.com/",
"source": "YAPILY",
"issues": [
{
"type": "INTERNAL_SERVER_ERROR",
"code": 11000,
"message": "Unexpected server error"
}
]
}
}Authorizations
Use HTTP Basic Authentication with your Application ID as username and Application Secret as password. Manage credentials in the Yapily Console. See Authentication for details.
Path Parameters
Query Parameters
Allowed values:
RECEIVEDIN_REVIEWRESOLVEDDECLINED
Body
application/json
The Hash of the Transaction that is subject of the Feedback
The list of suggestions/issues on the categorised Transaction
Show child attributes
Show child attributes
Any free-form notes about the Transaction, to be used for details that cannot be expressed via the suggestions
Was this page helpful?
⌘I