curl --request PATCH \
--url https://api.malvo.io/transactions/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"categoryId": "07010000"
}
'const options = {
method: 'PATCH',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({categoryId: '07010000'})
};
fetch('https://api.malvo.io/transactions/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.malvo.io/transactions/{id}"
payload = { "categoryId": "07010000" }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.malvo.io/transactions/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'categoryId' => '07010000'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"id": "a8534c85-53ce-4f21-94d7-50e9d2ee4957",
"description": "* PROV * COMPRA TESOURO DIRETO CLIENTES",
"descriptionRaw": "* PROV * COMPRA TESOURO DIRETO CLIENTES",
"currencyCode": "BRL",
"amount": -212.45,
"date": "2020-10-15T00:00:00.000Z",
"balance": 4439.4,
"category": "Telecommunications",
"categoryId": "07010000",
"accountId": "562b795d-1653-429f-be86-74ead9502813",
"providerCode": null,
"status": "POSTED",
"paymentData": null,
"type": "DEBIT",
"providerId": null
}{
"message": "Transaction Id should not be null or undefined, transactionId must be a UUID",
"code": 400
}{
"code": 404,
"message": "Transaction not found"
}{
"code": 500,
"codeDescription": "INTERNAL_SERVER_ERROR",
"message": "Internal Server Error"
}Atualizar categoria da transação
Recategoriza uma transação. A correção é persistida (leituras subsequentes retornam a categoria corrigida), alimenta o classificador e cria automaticamente uma Category Rule para o cliente (veja POST /categories/rules).
curl --request PATCH \
--url https://api.malvo.io/transactions/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"categoryId": "07010000"
}
'const options = {
method: 'PATCH',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({categoryId: '07010000'})
};
fetch('https://api.malvo.io/transactions/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.malvo.io/transactions/{id}"
payload = { "categoryId": "07010000" }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.malvo.io/transactions/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'categoryId' => '07010000'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"id": "a8534c85-53ce-4f21-94d7-50e9d2ee4957",
"description": "* PROV * COMPRA TESOURO DIRETO CLIENTES",
"descriptionRaw": "* PROV * COMPRA TESOURO DIRETO CLIENTES",
"currencyCode": "BRL",
"amount": -212.45,
"date": "2020-10-15T00:00:00.000Z",
"balance": 4439.4,
"category": "Telecommunications",
"categoryId": "07010000",
"accountId": "562b795d-1653-429f-be86-74ead9502813",
"providerCode": null,
"status": "POSTED",
"paymentData": null,
"type": "DEBIT",
"providerId": null
}{
"message": "Transaction Id should not be null or undefined, transactionId must be a UUID",
"code": 400
}{
"code": 404,
"message": "Transaction not found"
}{
"code": 500,
"codeDescription": "INTERNAL_SERVER_ERROR",
"message": "Internal Server Error"
}Authorizations
Chave de API da aplicação. Obrigatória em todos os endpoints. Renove via POST /auth.
Path Parameters
Identificador primário da transação.
Body
Corpo para recategorizar uma transação.
Id da categoria a atribuir (8 dígitos numéricos).
"07010000"
Response
A transação atualizada (objeto completo, com category + categoryId novos).
Transação de uma conta bancária ou de cartão de crédito.
Convenção de sinal de amount: em contas bancárias (type=BANK), amount é assinado — débitos (saída) são negativos, créditos (entrada) positivos, e o sinal sempre concorda com type. Em contas de cartão de crédito (type=CREDIT), o sinal é invertido: amount positivo = despesa/compra (type=DEBIT) e amount negativo = pagamento/estorno ao cartão (type=CREDIT). O campo type permanece normalizado para a perspectiva do titular.
Identificador primário.
"a8534c85-53ce-4f21-94d7-50e9d2ee4957"
Conta à qual a transação pertence.
"562b795d-1653-429f-be86-74ead9502813"
Descrição limpa/normalizada.
"* PROV * COMPRA TESOURO DIRETO CLIENTES"
Código ISO 4217.
"BRL"
Valor da transação. Veja a convenção de sinal na descrição do schema.
-212.45
Quando a transação foi realizada (data de postagem).
"2020-10-15T00:00:00.000Z"
Timestamp de ingestão (par com o filtro createdAtFrom).
"2020-10-15T00:00:00.000Z"
Timestamp da última modificação.
"2020-10-15T00:00:00.000Z"
Descrição original da instituição antes da limpeza; null quando não fornecida.
Valor convertido para a moeda da conta. Presente apenas quando a moeda da transação difere da moeda da conta (cartões multi-moeda).
Direção sob a perspectiva do titular. CREDIT = entrada (depósitos, transferências recebidas, estornos); DEBIT = saída (pagamentos, saques, transferências enviadas, compras no cartão). Para cartões, o agregador normaliza: compras são sempre DEBIT, pagamentos de fatura são CREDIT.
DEBIT, CREDIT Saldo corrente da conta logo após esta transação; null quando a instituição não o retorna.
4439.4
Referência/código do lado da instituição (NSU, número de extrato); formato varia por instituição.
POSTED = confirmada/liquidada. PENDING = ainda não liquidada. UNKNOWN preserva um registro válido cujo status oficial do provedor é não enquadrado; consulte providerStatus.
POSTED, PENDING, UNKNOWN "POSTED"
Status bruto do provedor quando disponível. No fluxo internacional pode ser BOOK, PDNG, HOLD, SCHD ou OTHR; CNCL/RJCT removem a transação e geram transactions/deleted.
Nome da categoria (ex.: Transfers); null se não houver correspondência.
"Fixed Income Investment"
Id estável de 8 dígitos numéricos (ex.: 05000000). Use para joins/regras; nomes podem mudar.
Detalhes de transferência/pagamento. null para transações que não são transferências.
Show child attributes
Show child attributes
Informações de parcelamento/MCC. Apenas para transações de cartão de crédito.
Show child attributes
Show child attributes
Estabelecimento associado à transação.
Show child attributes
Show child attributes
Tipo de operação classificado pela instituição (Open Finance), ex.: TED, PIX.
Id da transação no provider. Retornado apenas para conectores Open Finance.