Gider pusulası ön hesaplama
curl --request POST \
--url https://api.sarraf.pro/v1/expenses/preview \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"idNo": "<string>",
"bankTransactionId": "<string>",
"amount": 123,
"nameSurname": "<string>",
"templateKey": "<string>",
"exchanges": 123,
"attribute": "<string>",
"description": "<string>",
"transactionDate": "2023-11-07T05:31:56Z",
"customerInfo": {
"nameSurname": "<string>",
"taxOffice": "<string>",
"address": "<string>",
"cities": "<string>",
"states": "<string>",
"phone": "<string>",
"email": "<string>"
},
"currentCode": "<string>",
"serial": "<string>",
"number": "<string>",
"bankName": "<string>",
"invoiceNo": [
"<string>"
],
"isSwap": true
}
}
'import requests
url = "https://api.sarraf.pro/v1/expenses/preview"
payload = { "data": {
"idNo": "<string>",
"bankTransactionId": "<string>",
"amount": 123,
"nameSurname": "<string>",
"templateKey": "<string>",
"exchanges": 123,
"attribute": "<string>",
"description": "<string>",
"transactionDate": "2023-11-07T05:31:56Z",
"customerInfo": {
"nameSurname": "<string>",
"taxOffice": "<string>",
"address": "<string>",
"cities": "<string>",
"states": "<string>",
"phone": "<string>",
"email": "<string>"
},
"currentCode": "<string>",
"serial": "<string>",
"number": "<string>",
"bankName": "<string>",
"invoiceNo": ["<string>"],
"isSwap": True
} }
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({
data: {
idNo: '<string>',
bankTransactionId: '<string>',
amount: 123,
nameSurname: '<string>',
templateKey: '<string>',
exchanges: 123,
attribute: '<string>',
description: '<string>',
transactionDate: '2023-11-07T05:31:56Z',
customerInfo: {
nameSurname: '<string>',
taxOffice: '<string>',
address: '<string>',
cities: '<string>',
states: '<string>',
phone: '<string>',
email: '<string>'
},
currentCode: '<string>',
serial: '<string>',
number: '<string>',
bankName: '<string>',
invoiceNo: ['<string>'],
isSwap: true
}
})
};
fetch('https://api.sarraf.pro/v1/expenses/preview', 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.sarraf.pro/v1/expenses/preview",
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([
'data' => [
'idNo' => '<string>',
'bankTransactionId' => '<string>',
'amount' => 123,
'nameSurname' => '<string>',
'templateKey' => '<string>',
'exchanges' => 123,
'attribute' => '<string>',
'description' => '<string>',
'transactionDate' => '2023-11-07T05:31:56Z',
'customerInfo' => [
'nameSurname' => '<string>',
'taxOffice' => '<string>',
'address' => '<string>',
'cities' => '<string>',
'states' => '<string>',
'phone' => '<string>',
'email' => '<string>'
],
'currentCode' => '<string>',
'serial' => '<string>',
'number' => '<string>',
'bankName' => '<string>',
'invoiceNo' => [
'<string>'
],
'isSwap' => true
]
]),
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.sarraf.pro/v1/expenses/preview"
payload := strings.NewReader("{\n \"data\": {\n \"idNo\": \"<string>\",\n \"bankTransactionId\": \"<string>\",\n \"amount\": 123,\n \"nameSurname\": \"<string>\",\n \"templateKey\": \"<string>\",\n \"exchanges\": 123,\n \"attribute\": \"<string>\",\n \"description\": \"<string>\",\n \"transactionDate\": \"2023-11-07T05:31:56Z\",\n \"customerInfo\": {\n \"nameSurname\": \"<string>\",\n \"taxOffice\": \"<string>\",\n \"address\": \"<string>\",\n \"cities\": \"<string>\",\n \"states\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"currentCode\": \"<string>\",\n \"serial\": \"<string>\",\n \"number\": \"<string>\",\n \"bankName\": \"<string>\",\n \"invoiceNo\": [\n \"<string>\"\n ],\n \"isSwap\": true\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.sarraf.pro/v1/expenses/preview")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"idNo\": \"<string>\",\n \"bankTransactionId\": \"<string>\",\n \"amount\": 123,\n \"nameSurname\": \"<string>\",\n \"templateKey\": \"<string>\",\n \"exchanges\": 123,\n \"attribute\": \"<string>\",\n \"description\": \"<string>\",\n \"transactionDate\": \"2023-11-07T05:31:56Z\",\n \"customerInfo\": {\n \"nameSurname\": \"<string>\",\n \"taxOffice\": \"<string>\",\n \"address\": \"<string>\",\n \"cities\": \"<string>\",\n \"states\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"currentCode\": \"<string>\",\n \"serial\": \"<string>\",\n \"number\": \"<string>\",\n \"bankName\": \"<string>\",\n \"invoiceNo\": [\n \"<string>\"\n ],\n \"isSwap\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sarraf.pro/v1/expenses/preview")
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 \"data\": {\n \"idNo\": \"<string>\",\n \"bankTransactionId\": \"<string>\",\n \"amount\": 123,\n \"nameSurname\": \"<string>\",\n \"templateKey\": \"<string>\",\n \"exchanges\": 123,\n \"attribute\": \"<string>\",\n \"description\": \"<string>\",\n \"transactionDate\": \"2023-11-07T05:31:56Z\",\n \"customerInfo\": {\n \"nameSurname\": \"<string>\",\n \"taxOffice\": \"<string>\",\n \"address\": \"<string>\",\n \"cities\": \"<string>\",\n \"states\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"currentCode\": \"<string>\",\n \"serial\": \"<string>\",\n \"number\": \"<string>\",\n \"bankName\": \"<string>\",\n \"invoiceNo\": [\n \"<string>\"\n ],\n \"isSwap\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"source": "bankTransaction",
"sourceId": "<string>",
"amount": 123,
"exchanges": 123,
"serial": "<string>",
"expectedNumber": 123,
"attribute": "<string>",
"quantity": 123,
"price": 123,
"unitName": "<string>",
"template": {
"key": "<string>",
"title": "<string>",
"lineName": "<string>",
"material": "<string>"
},
"customer": {
"taxNumber": "<string>",
"name": "<string>",
"taxOffice": "<string>",
"address": "<string>",
"district": "<string>",
"city": "<string>",
"phone": "<string>",
"mail": "<string>",
"country": "<string>"
}
},
"meta": {
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Giderler
Gider pusulası ön hesaplama
Gider pusulası oluşturulmadan önce kalemi (miktar, birim fiyat, mahiyet) ve müşteri bilgisini hesaplar. Hiçbir yan etkisi yoktur: kayıt oluşmaz, seri-sıra numarası tüketilmez. source: "bankTransaction" kullanıldığında hareketin bağlı olduğu banka hesabı aktif olmalıdır; pasif hesap 409 BANK_ACCOUNT_INACTIVE döndürür. Gövde POST /v1/expenses ile aynıdır; yalnız isDraft ve allowDuplicate kullanılamaz.
POST
/
v1
/
expenses
/
preview
Gider pusulası ön hesaplama
curl --request POST \
--url https://api.sarraf.pro/v1/expenses/preview \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"idNo": "<string>",
"bankTransactionId": "<string>",
"amount": 123,
"nameSurname": "<string>",
"templateKey": "<string>",
"exchanges": 123,
"attribute": "<string>",
"description": "<string>",
"transactionDate": "2023-11-07T05:31:56Z",
"customerInfo": {
"nameSurname": "<string>",
"taxOffice": "<string>",
"address": "<string>",
"cities": "<string>",
"states": "<string>",
"phone": "<string>",
"email": "<string>"
},
"currentCode": "<string>",
"serial": "<string>",
"number": "<string>",
"bankName": "<string>",
"invoiceNo": [
"<string>"
],
"isSwap": true
}
}
'import requests
url = "https://api.sarraf.pro/v1/expenses/preview"
payload = { "data": {
"idNo": "<string>",
"bankTransactionId": "<string>",
"amount": 123,
"nameSurname": "<string>",
"templateKey": "<string>",
"exchanges": 123,
"attribute": "<string>",
"description": "<string>",
"transactionDate": "2023-11-07T05:31:56Z",
"customerInfo": {
"nameSurname": "<string>",
"taxOffice": "<string>",
"address": "<string>",
"cities": "<string>",
"states": "<string>",
"phone": "<string>",
"email": "<string>"
},
"currentCode": "<string>",
"serial": "<string>",
"number": "<string>",
"bankName": "<string>",
"invoiceNo": ["<string>"],
"isSwap": True
} }
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({
data: {
idNo: '<string>',
bankTransactionId: '<string>',
amount: 123,
nameSurname: '<string>',
templateKey: '<string>',
exchanges: 123,
attribute: '<string>',
description: '<string>',
transactionDate: '2023-11-07T05:31:56Z',
customerInfo: {
nameSurname: '<string>',
taxOffice: '<string>',
address: '<string>',
cities: '<string>',
states: '<string>',
phone: '<string>',
email: '<string>'
},
currentCode: '<string>',
serial: '<string>',
number: '<string>',
bankName: '<string>',
invoiceNo: ['<string>'],
isSwap: true
}
})
};
fetch('https://api.sarraf.pro/v1/expenses/preview', 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.sarraf.pro/v1/expenses/preview",
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([
'data' => [
'idNo' => '<string>',
'bankTransactionId' => '<string>',
'amount' => 123,
'nameSurname' => '<string>',
'templateKey' => '<string>',
'exchanges' => 123,
'attribute' => '<string>',
'description' => '<string>',
'transactionDate' => '2023-11-07T05:31:56Z',
'customerInfo' => [
'nameSurname' => '<string>',
'taxOffice' => '<string>',
'address' => '<string>',
'cities' => '<string>',
'states' => '<string>',
'phone' => '<string>',
'email' => '<string>'
],
'currentCode' => '<string>',
'serial' => '<string>',
'number' => '<string>',
'bankName' => '<string>',
'invoiceNo' => [
'<string>'
],
'isSwap' => true
]
]),
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.sarraf.pro/v1/expenses/preview"
payload := strings.NewReader("{\n \"data\": {\n \"idNo\": \"<string>\",\n \"bankTransactionId\": \"<string>\",\n \"amount\": 123,\n \"nameSurname\": \"<string>\",\n \"templateKey\": \"<string>\",\n \"exchanges\": 123,\n \"attribute\": \"<string>\",\n \"description\": \"<string>\",\n \"transactionDate\": \"2023-11-07T05:31:56Z\",\n \"customerInfo\": {\n \"nameSurname\": \"<string>\",\n \"taxOffice\": \"<string>\",\n \"address\": \"<string>\",\n \"cities\": \"<string>\",\n \"states\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"currentCode\": \"<string>\",\n \"serial\": \"<string>\",\n \"number\": \"<string>\",\n \"bankName\": \"<string>\",\n \"invoiceNo\": [\n \"<string>\"\n ],\n \"isSwap\": true\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.sarraf.pro/v1/expenses/preview")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"idNo\": \"<string>\",\n \"bankTransactionId\": \"<string>\",\n \"amount\": 123,\n \"nameSurname\": \"<string>\",\n \"templateKey\": \"<string>\",\n \"exchanges\": 123,\n \"attribute\": \"<string>\",\n \"description\": \"<string>\",\n \"transactionDate\": \"2023-11-07T05:31:56Z\",\n \"customerInfo\": {\n \"nameSurname\": \"<string>\",\n \"taxOffice\": \"<string>\",\n \"address\": \"<string>\",\n \"cities\": \"<string>\",\n \"states\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"currentCode\": \"<string>\",\n \"serial\": \"<string>\",\n \"number\": \"<string>\",\n \"bankName\": \"<string>\",\n \"invoiceNo\": [\n \"<string>\"\n ],\n \"isSwap\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sarraf.pro/v1/expenses/preview")
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 \"data\": {\n \"idNo\": \"<string>\",\n \"bankTransactionId\": \"<string>\",\n \"amount\": 123,\n \"nameSurname\": \"<string>\",\n \"templateKey\": \"<string>\",\n \"exchanges\": 123,\n \"attribute\": \"<string>\",\n \"description\": \"<string>\",\n \"transactionDate\": \"2023-11-07T05:31:56Z\",\n \"customerInfo\": {\n \"nameSurname\": \"<string>\",\n \"taxOffice\": \"<string>\",\n \"address\": \"<string>\",\n \"cities\": \"<string>\",\n \"states\": \"<string>\",\n \"phone\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"currentCode\": \"<string>\",\n \"serial\": \"<string>\",\n \"number\": \"<string>\",\n \"bankName\": \"<string>\",\n \"invoiceNo\": [\n \"<string>\"\n ],\n \"isSwap\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"source": "bankTransaction",
"sourceId": "<string>",
"amount": 123,
"exchanges": 123,
"serial": "<string>",
"expectedNumber": 123,
"attribute": "<string>",
"quantity": 123,
"price": 123,
"unitName": "<string>",
"template": {
"key": "<string>",
"title": "<string>",
"lineName": "<string>",
"material": "<string>"
},
"customer": {
"taxNumber": "<string>",
"name": "<string>",
"taxOffice": "<string>",
"address": "<string>",
"district": "<string>",
"city": "<string>",
"phone": "<string>",
"mail": "<string>",
"country": "<string>"
}
},
"meta": {
"requestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"details": [
{
"field": "<string>",
"rule": "<string>",
"state": "<string>",
"attemptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verificationId": "<string>",
"retryAfter": 123,
"retryable": true,
"errorCode": "<string>"
}
]
},
"traceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Authorizations
Kullanıcı adı apiUserId, parola secretKey. Authorization: Basic base64(apiUserId:secretKey)
Body
application/json
Yazma uçlarında gövde zarfı: data zorunludur.
Show child attributes
Show child attributes
⌘I