cURL
curl -X POST https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create \
-H "Authorization: Bearer $PAYVEN_TOKEN" \
-H "Idempotency-Key: order-1001" \
-d '{ ...payload... }'const res = await fetch(
"https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create",
{
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Idempotency-Key": "order-1001",
"Content-Type": "application/json",
},
body: JSON.stringify({ /* payload */ }),
},
);
const data = await res.json();import httpx
res = httpx.post(
"https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create",
headers={
"Authorization": f"Bearer {access_token}",
"Idempotency-Key": "order-1001",
},
json={ ... },
)
data = res.json()var req = new HttpRequestMessage(HttpMethod.Post, "https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
req.Headers.Add("Idempotency-Key", "order-1001");
// Content = JsonContent.Create(payload);
var resp = await http.SendAsync(req);req, _ := http.NewRequest("POST", "https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create", nil)
req.Header.Set("Authorization", "Bearer "+accessToken)
req.Header.Set("Idempotency-Key", "order-1001")
// req.Body = bytes.NewReader(payloadJSON)
resp, _ := http.DefaultClient.Do(req)$ch = curl_init("https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $accessToken",
"Idempotency-Key: order-1001",
],
CURLOPT_POSTFIELDS => json_encode(\$payload),
]);
$data = json_decode(curl_exec($ch), true);HttpResponse<String> response = Unirest.post("https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"source_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"recipient\": {\n \"holder_name\": \"<string>\",\n \"recipient_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"iban\": \"<string>\",\n \"account_number\": \"<string>\",\n \"card_details\": {\n \"card_token\": \"<string>\",\n \"card_number\": \"<string>\"\n }\n },\n \"amount\": {\n \"value\": 123\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create")
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 \"items\": [\n {\n \"source_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"recipient\": {\n \"holder_name\": \"<string>\",\n \"recipient_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"iban\": \"<string>\",\n \"account_number\": \"<string>\",\n \"card_details\": {\n \"card_token\": \"<string>\",\n \"card_number\": \"<string>\"\n }\n },\n \"amount\": {\n \"value\": 123\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"is_success": true,
"code": "<string>",
"data": [
{
"source_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"external_id": "<string>",
"description": "<string>",
"recipient": {
"holder_name": "<string>",
"recipient_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"iban": "<string>",
"account_number": "<string>",
"card_details": {
"card_token": "<string>",
"card_number": "<string>"
}
},
"amount": {
"value": 123
}
}
]
}{
"type": "https://docs.payven.com.tr/errors/bad_request",
"title": "Geçersiz istek",
"status": 400,
"code": "bad_request",
"detail": "amount.amount alanı zorunlu.",
"correlation_id": "9f1c8e76-2a3b-4f12-9c8d-12cb24a8a8a8"
}{
"type": "https://docs.payven.com.tr/errors/invalid_token",
"title": "Geçersiz token",
"status": 401,
"code": "invalid_token",
"detail": "Access token geçersiz veya süresi dolmuş — refresh edin."
}{
"type": "https://docs.payven.com.tr/errors/forbidden",
"title": "Yetki yok",
"status": 403,
"code": "forbidden",
"detail": "Bu rol bu kaynağı göremez."
}{
"type": "https://docs.payven.com.tr/errors/idempotency_key_in_use",
"title": "Idempotency-Key çakışması",
"status": 409,
"code": "idempotency_key_in_use",
"detail": "Bu Idempotency-Key daha önce farklı bir istek gövdesi ile kullanıldı."
}{
"type": "https://docs.payven.com.tr/errors/bank_declined",
"title": "Banka işlemi reddetti",
"status": 422,
"code": "bank_declined",
"detail": "Yetersiz bakiye (banka kodu: 51)",
"provider_error_code": "51"
}{
"type": "https://docs.payven.com.tr/errors/rate_limit_exceeded",
"title": "İstek limiti aşıldı",
"status": 429,
"code": "rate_limit_exceeded"
}{
"type": "https://docs.payven.com.tr/errors/internal_server_error",
"title": "Sunucu hatası",
"status": 500,
"code": "internal_server_error"
}{
"type": "https://docs.payven.com.tr/errors/connector_unavailable",
"title": "Konnektör erişilemez",
"status": 503,
"code": "connector_unavailable"
}Transfers
Toplu transfer paketi oluştur
Birden fazla transferi tek pakette oluşturur (paket başına en fazla 1000). Paket pending_approval durumunda başlar; ikinci kullanıcı onaylayana kadar bankaya gönderilmez. Bkz. 4-Eyes Transfer reçetesi.
POST
/
api
/
v1
/
transfers
/
bulk
/
create
cURL
curl -X POST https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create \
-H "Authorization: Bearer $PAYVEN_TOKEN" \
-H "Idempotency-Key: order-1001" \
-d '{ ...payload... }'const res = await fetch(
"https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create",
{
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Idempotency-Key": "order-1001",
"Content-Type": "application/json",
},
body: JSON.stringify({ /* payload */ }),
},
);
const data = await res.json();import httpx
res = httpx.post(
"https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create",
headers={
"Authorization": f"Bearer {access_token}",
"Idempotency-Key": "order-1001",
},
json={ ... },
)
data = res.json()var req = new HttpRequestMessage(HttpMethod.Post, "https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
req.Headers.Add("Idempotency-Key", "order-1001");
// Content = JsonContent.Create(payload);
var resp = await http.SendAsync(req);req, _ := http.NewRequest("POST", "https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create", nil)
req.Header.Set("Authorization", "Bearer "+accessToken)
req.Header.Set("Idempotency-Key", "order-1001")
// req.Body = bytes.NewReader(payloadJSON)
resp, _ := http.DefaultClient.Do(req)$ch = curl_init("https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $accessToken",
"Idempotency-Key: order-1001",
],
CURLOPT_POSTFIELDS => json_encode(\$payload),
]);
$data = json_decode(curl_exec($ch), true);HttpResponse<String> response = Unirest.post("https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"source_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"recipient\": {\n \"holder_name\": \"<string>\",\n \"recipient_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"iban\": \"<string>\",\n \"account_number\": \"<string>\",\n \"card_details\": {\n \"card_token\": \"<string>\",\n \"card_number\": \"<string>\"\n }\n },\n \"amount\": {\n \"value\": 123\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://transfer-sandbox.payven.com.tr/api/v1/transfers/bulk/create")
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 \"items\": [\n {\n \"source_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"recipient\": {\n \"holder_name\": \"<string>\",\n \"recipient_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"iban\": \"<string>\",\n \"account_number\": \"<string>\",\n \"card_details\": {\n \"card_token\": \"<string>\",\n \"card_number\": \"<string>\"\n }\n },\n \"amount\": {\n \"value\": 123\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"is_success": true,
"code": "<string>",
"data": [
{
"source_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"external_id": "<string>",
"description": "<string>",
"recipient": {
"holder_name": "<string>",
"recipient_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"iban": "<string>",
"account_number": "<string>",
"card_details": {
"card_token": "<string>",
"card_number": "<string>"
}
},
"amount": {
"value": 123
}
}
]
}{
"type": "https://docs.payven.com.tr/errors/bad_request",
"title": "Geçersiz istek",
"status": 400,
"code": "bad_request",
"detail": "amount.amount alanı zorunlu.",
"correlation_id": "9f1c8e76-2a3b-4f12-9c8d-12cb24a8a8a8"
}{
"type": "https://docs.payven.com.tr/errors/invalid_token",
"title": "Geçersiz token",
"status": 401,
"code": "invalid_token",
"detail": "Access token geçersiz veya süresi dolmuş — refresh edin."
}{
"type": "https://docs.payven.com.tr/errors/forbidden",
"title": "Yetki yok",
"status": 403,
"code": "forbidden",
"detail": "Bu rol bu kaynağı göremez."
}{
"type": "https://docs.payven.com.tr/errors/idempotency_key_in_use",
"title": "Idempotency-Key çakışması",
"status": 409,
"code": "idempotency_key_in_use",
"detail": "Bu Idempotency-Key daha önce farklı bir istek gövdesi ile kullanıldı."
}{
"type": "https://docs.payven.com.tr/errors/bank_declined",
"title": "Banka işlemi reddetti",
"status": 422,
"code": "bank_declined",
"detail": "Yetersiz bakiye (banka kodu: 51)",
"provider_error_code": "51"
}{
"type": "https://docs.payven.com.tr/errors/rate_limit_exceeded",
"title": "İstek limiti aşıldı",
"status": 429,
"code": "rate_limit_exceeded"
}{
"type": "https://docs.payven.com.tr/errors/internal_server_error",
"title": "Sunucu hatası",
"status": 500,
"code": "internal_server_error"
}{
"type": "https://docs.payven.com.tr/errors/connector_unavailable",
"title": "Konnektör erişilemez",
"status": 503,
"code": "connector_unavailable"
}Authorizations
Identity servisinden alinan Keycloak JWT. Format: Authorization: Bearer <token>. Token alma: POST /api/v1/auth/{slug}/token
Body
application/json
- Option 1
- Option 2
Show child attributes
Show child attributes
⌘I