Skip to main content
Enrichment
curl --request POST \
  --url https://api.yapily.com/transactions/categorisation \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "countryCode": "GB",
  "categorisationType": "consumer",
  "transactions": [
    {
      "id": "06edf952-8d94-44ae-8d4e-a065b7e47300",
      "date": "2025-03-01T14:15:16Z",
      "amount": {
        "value": -9900,
        "currency": "GBP"
      },
      "description": "Shopping",
      "countryCode": "GB"
    },
    {
      "id": "6a241cae-7c43-4058-bdbd-ff9d64e6c9df",
      "date": "2025-04-02T07:59:59Z",
      "amount": {
        "value": 1000,
        "currency": "USD"
      },
      "description": "Refund",
      "countryCode": "GB"
    }
  ]
}
'
import requests

url = "https://api.yapily.com/transactions/categorisation"

payload = {
"countryCode": "GB",
"categorisationType": "consumer",
"transactions": [
{
"id": "06edf952-8d94-44ae-8d4e-a065b7e47300",
"date": "2025-03-01T14:15:16Z",
"amount": {
"value": -9900,
"currency": "GBP"
},
"description": "Shopping",
"countryCode": "GB"
},
{
"id": "6a241cae-7c43-4058-bdbd-ff9d64e6c9df",
"date": "2025-04-02T07:59:59Z",
"amount": {
"value": 1000,
"currency": "USD"
},
"description": "Refund",
"countryCode": "GB"
}
]
}
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({
countryCode: 'GB',
categorisationType: 'consumer',
transactions: [
{
id: '06edf952-8d94-44ae-8d4e-a065b7e47300',
date: '2025-03-01T14:15:16Z',
amount: {value: -9900, currency: 'GBP'},
description: 'Shopping',
countryCode: 'GB'
},
{
id: '6a241cae-7c43-4058-bdbd-ff9d64e6c9df',
date: '2025-04-02T07:59:59Z',
amount: {value: 1000, currency: 'USD'},
description: 'Refund',
countryCode: 'GB'
}
]
})
};

fetch('https://api.yapily.com/transactions/categorisation', 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",
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([
'countryCode' => 'GB',
'categorisationType' => 'consumer',
'transactions' => [
[
'id' => '06edf952-8d94-44ae-8d4e-a065b7e47300',
'date' => '2025-03-01T14:15:16Z',
'amount' => [
'value' => -9900,
'currency' => 'GBP'
],
'description' => 'Shopping',
'countryCode' => 'GB'
],
[
'id' => '6a241cae-7c43-4058-bdbd-ff9d64e6c9df',
'date' => '2025-04-02T07:59:59Z',
'amount' => [
'value' => 1000,
'currency' => 'USD'
],
'description' => 'Refund',
'countryCode' => 'GB'
]
]
]),
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"

payload := strings.NewReader("{\n \"countryCode\": \"GB\",\n \"categorisationType\": \"consumer\",\n \"transactions\": [\n {\n \"id\": \"06edf952-8d94-44ae-8d4e-a065b7e47300\",\n \"date\": \"2025-03-01T14:15:16Z\",\n \"amount\": {\n \"value\": -9900,\n \"currency\": \"GBP\"\n },\n \"description\": \"Shopping\",\n \"countryCode\": \"GB\"\n },\n {\n \"id\": \"6a241cae-7c43-4058-bdbd-ff9d64e6c9df\",\n \"date\": \"2025-04-02T07:59:59Z\",\n \"amount\": {\n \"value\": 1000,\n \"currency\": \"USD\"\n },\n \"description\": \"Refund\",\n \"countryCode\": \"GB\"\n }\n ]\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")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"countryCode\": \"GB\",\n \"categorisationType\": \"consumer\",\n \"transactions\": [\n {\n \"id\": \"06edf952-8d94-44ae-8d4e-a065b7e47300\",\n \"date\": \"2025-03-01T14:15:16Z\",\n \"amount\": {\n \"value\": -9900,\n \"currency\": \"GBP\"\n },\n \"description\": \"Shopping\",\n \"countryCode\": \"GB\"\n },\n {\n \"id\": \"6a241cae-7c43-4058-bdbd-ff9d64e6c9df\",\n \"date\": \"2025-04-02T07:59:59Z\",\n \"amount\": {\n \"value\": 1000,\n \"currency\": \"USD\"\n },\n \"description\": \"Refund\",\n \"countryCode\": \"GB\"\n }\n ]\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.yapily.com/transactions/categorisation")

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 \"countryCode\": \"GB\",\n \"categorisationType\": \"consumer\",\n \"transactions\": [\n {\n \"id\": \"06edf952-8d94-44ae-8d4e-a065b7e47300\",\n \"date\": \"2025-03-01T14:15:16Z\",\n \"amount\": {\n \"value\": -9900,\n \"currency\": \"GBP\"\n },\n \"description\": \"Shopping\",\n \"countryCode\": \"GB\"\n },\n {\n \"id\": \"6a241cae-7c43-4058-bdbd-ff9d64e6c9df\",\n \"date\": \"2025-04-02T07:59:59Z\",\n \"amount\": {\n \"value\": 1000,\n \"currency\": \"USD\"\n },\n \"description\": \"Refund\",\n \"countryCode\": \"GB\"\n }\n ]\n}"

response = http.request(request)
puts response.read_body
{
  "meta": {
    "tracingId": "string"
  },
  "data": {
    "categorisationId": "ed8ea63f-7a1e-05d4-3633-a8a9175b50da"
  }
}
{
"error": {
"tracingId": "0c2d0973bdd24224a65e5d0f7d1b6154",
"code": 400,
"status": "BAD_REQUEST",
"supportUrl": "https://support.yapily.com/",
"source": "YAPILY",
"issues": [
{
"type": "BAD_REQUEST",
"code": 10600,
"message": "The server could not understand the request due to invalid syntax"
}
]
}
}
{
"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

Authorization
string
header
required

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.

Headers

sub-application
string<uuid>

The sub-application ID to which event type is being subscribed to

Body

application/json
countryCode
string
required

Mandatory. Two-letter country code in ISO 3166-1 alpha-2 format (e.g. GB)

categorisationType
string
required

Mandatory. Allowed values are consumer and business.

transactions
object[]
required

Response

Created

meta
object
data
object