İçeriğe geç

Raporlama Servisleri

Pazaryeri raporlama servisleri ile işlemlerinizi, satıcılarınızın performansını ve finansal durumlarını detaylı olarak analiz edebilirsiniz.

Bu sayfada aşağıdaki raporlama servislerini öğreneceksiniz:

  1. GetTransactionReport - İşlem bazlı raporlama
  2. GetSellerTransactionReportByDate - Satıcı ve tarih bazlı raporlama
  3. GetSellerPaymentList - Satıcı ödeme listesi
  4. GetSellerDebtReport - Satıcı borç raporu

Belirli bir işlemin detaylı raporunu getirir.

TEST:

POST https://apitest.paynkolay.com.tr/marketplace/v1/transaction/report

PROD:

POST https://api.paynkolay.com.tr/marketplace/v1/transaction/report
{
"trxCode": "ORDER_12345",
"refCode": "REF123456789",
"apiSecretKey": "sx_value"
}
ParametreTipZorunluAçıklama
trxCodeStringSizin işlem kodunuz
refCodeStringPaynkolay referans kodu
apiSecretKeyStringSX değeri
{
"data": [
{
"mpCode": "MP12345",
"mpOrderCode": "ORDER_12345",
"trxType": "SALES",
"trxDatetime": "2025-01-20T14:30:15.204156Z",
"trxCode": "REF123456789",
"trxCurrency": "949",
"trxAmount": 150.00,
"trxStatus": "SUCCESS",
"pfCommissionRate": 2.50,
"pfCommissionAmount": 3.75,
"sellerTransactionList": [
{
"sellerName": "Ahmet Yılmaz",
"trxAmount": 100.00,
"trxCurrency": "TRY",
"trxStatus": "SUCCESS",
"mpCommissionRate": 5.00,
"mpCommissionAmount": 5.00,
"mpCost": 0.50,
"trxType": "SALES",
"withholdingTax": 0.80,
"trxCode": "REF123456789",
"refCode": "REF123456789"
},
{
"sellerName": "Örnek Teknoloji A.Ş.",
"trxAmount": 50.00,
"trxCurrency": "TRY",
"trxStatus": "SUCCESS",
"mpCommissionRate": 7.00,
"mpCommissionAmount": 3.50,
"mpCost": 0.25,
"trxType": "SALES",
"withholdingTax": 0.40,
"trxCode": "REF123456789",
"refCode": "REF123456789"
}
]
}
],
"success": true,
"responseCode": "200",
"responseMessage": "SUCCESS",
"reportTime": "2025-01-20T15:00:00"
}
ParametreTipAçıklama
mpCodeStringPazaryeri kodu
mpOrderCodeStringSizin gönderdiğiniz işlem kodu
trxTypeStringİşlem tipi (SALES, REFUND, CANCEL)
trxDatetimeStringİşlem tarihi (ISO 8601)
trxCodeStringPaynkolay referans kodu
trxCurrencyStringPara birimi kodu
trxAmountBigDecimalToplam işlem tutarı
trxStatusStringİşlem durumu
pfCommissionRateBigDecimalPaynkolay komisyon oranı
pfCommissionAmountBigDecimalPaynkolay komisyon tutarı
ParametreTipAçıklama
sellerNameStringSatıcı adı
trxAmountBigDecimalSatıcının işlem tutarı
mpCommissionRateBigDecimalPazaryeri komisyon oranı
mpCommissionAmountBigDecimalPazaryeri komisyon tutarı
mpCostBigDecimalİşlem ücreti
withholdingTaxBigDecimalStopaj tutarı

Belirli bir tarih aralığında satıcının tüm işlemlerini listeler.

TEST:

POST https://apitest.paynkolay.com.tr/marketplace/v1/transaction/seller/report

PROD:

POST https://api.paynkolay.com.tr/marketplace/v1/transaction/seller/report
{
"from": "2025-01-01",
"to": "2025-01-31",
"sellerExternalId": "SELLER_001",
"apiSecretKey": "sx_value",
"marketplaceCode": "MP12345",
"trxType": "SALES",
"trxStatus": "SUCCESS"
}
ParametreTipZorunluAçıklama
fromStringBaşlangıç tarihi (yyyy-MM-dd)
toStringBitiş tarihi (yyyy-MM-dd)
sellerExternalIdStringSatıcı external ID
apiSecretKeyStringSX değeri
marketplaceCodeStringPazaryeri kodu
trxTypeStringİşlem tipi filtresi (SALES, REFUND, CANCEL)
trxStatusStringDurum filtresi (SUCCESS, PENDING, FAILED)
{
"countSuccessTransaction": 45,
"countFailedTransaction": 3,
"countSuccessSalesTransaction": 40,
"countSuccessRefundTransaction": 4,
"countSuccessCancelTransaction": 1,
"totalAuthAmount": 12500.00,
"totalPfCommissionAmount": 312.50,
"totalMpCommissionAmount": 625.00,
"totalSellerAmount": 11562.50,
"data": [
{
"sellerName": "Ahmet Yılmaz",
"trxAmount": 250.00,
"trxCurrency": "TRY",
"trxStatus": "SUCCESS",
"mpCommissionRate": 5.00,
"mpCommissionAmount": 12.50,
"mpCost": 0.50,
"trxType": "SALES",
"withholdingTax": 2.00,
"trxCode": "ORDER_001",
"refCode": "REF001"
},
{
"sellerName": "Ahmet Yılmaz",
"trxAmount": 180.00,
"trxCurrency": "TRY",
"trxStatus": "SUCCESS",
"mpCommissionRate": 5.00,
"mpCommissionAmount": 9.00,
"mpCost": 0.50,
"trxType": "SALES",
"withholdingTax": 1.44,
"trxCode": "ORDER_002",
"refCode": "REF002"
}
],
"success": true,
"responseCode": "200",
"responseMessage": "SUCCESS",
"reportTime": "2025-01-20T16:30:00"
}
ParametreAçıklama
countSuccessTransactionBaşarılı işlem sayısı
countFailedTransactionBaşarısız işlem sayısı
countSuccessSalesTransactionBaşarılı satış sayısı
countSuccessRefundTransactionBaşarılı iade sayısı
countSuccessCancelTransactionBaşarılı iptal sayısı
totalAuthAmountToplam onaylanan tutar
totalPfCommissionAmountToplam Paynkolay komisyonu
totalMpCommissionAmountToplam pazaryeri komisyonu
totalSellerAmountSatıcıya kalan net tutar

Satıcıya yapılan ödeme transferlerini listeler.

TEST:

POST https://apitest.paynkolay.com.tr/marketplace/v1/transaction/seller/payment-report

PROD:

POST https://api.paynkolay.com.tr/marketplace/v1/transaction/seller/payment-report
{
"from": "2025-01-01",
"to": "2025-01-31",
"sellerExternalId": "SELLER_001",
"apiSecretKey": "sx_value",
"marketplaceCode": "MP12345"
}
{
"data": [
{
"sellerName": "Ahmet Yılmaz",
"sellerExternalId": "SELLER_001",
"trxAmount": 5000.00,
"description": "Haftalık Hakediş Ödemesi - Hafta 3",
"currency": "TRY",
"transferDate": "2025-01-20",
"eftOutDate": "2025-01-20"
},
{
"sellerName": "Ahmet Yılmaz",
"sellerExternalId": "SELLER_001",
"trxAmount": 4500.00,
"description": "Haftalık Hakediş Ödemesi - Hafta 2",
"currency": "TRY",
"transferDate": "2025-01-13",
"eftOutDate": "2025-01-13"
}
],
"success": true,
"responseCode": "200",
"responseMessage": "SUCCESS",
"reportTime": "2025-01-20T17:00:00"
}
ParametreTipAçıklama
sellerNameStringSatıcı adı
sellerExternalIdStringSatıcı external ID
trxAmountBigDecimalTransfer tutarı
descriptionStringTransfer açıklaması
currencyStringPara birimi
transferDateStringTransfer tarihi
eftOutDateStringEFT çıkış tarihi

Satıcının borç durumunu gösterir.

TEST:

POST https://apitest.paynkolay.com.tr/marketplace/v1/transaction/seller/debt-report

PROD:

POST https://api.paynkolay.com.tr/marketplace/v1/transaction/seller/debt-report
{
"from": "2025-01-01T00:00",
"to": "2025-01-31T23:59",
"sellerExternalId": "SELLER_001",
"marketplaceCode": "MP12345",
"apiSecretKey": "sx_value"
}
{
"data": [
{
"sellerName": "Ahmet Yılmaz",
"debtAmount": 150.00,
"trxCurrency": "TRY",
"debtCreateDate": "2025-01-15T14:30:00",
"debtUpdateDate": "2025-01-20T10:00:00",
"debtStatus": true
}
],
"success": true,
"responseCode": "200",
"responseMessage": "SUCCESS",
"reportTime": "2025-01-20T18:00:00"
}
ParametreTipAçıklama
sellerNameStringSatıcı adı
debtAmountBigDecimalBorç tutarı
trxCurrencyStringPara birimi
debtCreateDateStringBorç oluşturulma tarihi
debtUpdateDateStringBorç güncellenme tarihi
debtStatusBooleanBorç aktif mi? (true=aktif, false=kapalı)

async function getDailySalesReport(date) {
const report = await getSellerTransactionReportByDate({
from: date,
to: date,
sellerExternalId: 'ALL', // Tüm satıcılar
apiSecretKey: process.env.API_SECRET_KEY,
trxType: 'SALES',
trxStatus: 'SUCCESS'
});
console.log('Günlük Özet:');
console.log(`Toplam Satış: ${report.countSuccessSalesTransaction}`);
console.log(`Toplam Tutar: ${report.totalAuthAmount} TL`);
console.log(`Komisyon: ${report.totalMpCommissionAmount} TL`);
console.log(`Net Kazanç: ${report.totalSellerAmount} TL`);
return report;
}
async function analyzeSellerPerformance(sellerExternalId, month) {
const startDate = `${month}-01`;
const endDate = new Date(month + '-01');
endDate.setMonth(endDate.getMonth() + 1);
endDate.setDate(0);
const lastDay = endDate.toISOString().split('T')[0];
const report = await getSellerTransactionReportByDate({
from: startDate,
to: lastDay,
sellerExternalId,
apiSecretKey: process.env.API_SECRET_KEY
});
const performance = {
seller: sellerExternalId,
period: month,
totalSales: report.countSuccessSalesTransaction,
totalRefunds: report.countSuccessRefundTransaction,
revenue: report.totalSellerAmount,
commission: report.totalMpCommissionAmount,
refundRate: (report.countSuccessRefundTransaction / report.countSuccessSalesTransaction * 100).toFixed(2) + '%'
};
console.table(performance);
return performance;
}
async function trackSellerPayments(sellerExternalId) {
const payments = await getSellerPaymentList({
from: '2025-01-01',
to: '2025-12-31',
sellerExternalId,
apiSecretKey: process.env.API_SECRET_KEY
});
console.log(`\n${sellerExternalId} - Ödeme Geçmişi:\n`);
payments.data.forEach(payment => {
console.log(`${payment.transferDate}: ${payment.trxAmount} TL - ${payment.description}`);
});
const totalPaid = payments.data.reduce((sum, p) => sum + p.trxAmount, 0);
console.log(`\nToplam Ödenen: ${totalPaid} TL`);
return payments;
}
async function checkSellerDebts() {
const sellers = await getAllSellers();
for (const seller of sellers.data) {
const debtReport = await getSellerDebtReport({
from: '2025-01-01T00:00',
to: new Date().toISOString().slice(0, 16),
sellerExternalId: seller.sellerExternalId,
apiSecretKey: process.env.API_SECRET_KEY
});
const activeDebts = debtReport.data.filter(d => d.debtStatus === true);
if (activeDebts.length > 0) {
const totalDebt = activeDebts.reduce((sum, d) => sum + d.debtAmount, 0);
console.log(`⚠️ ${seller.nameSurname}: ${totalDebt} TL borç`);
// Satıcıyı bilgilendir
await notifySellerAboutDebt(seller.email, totalDebt);
}
}
}

class MarketplaceDashboard {
async getOverview(from, to) {
const allSellers = await this.getAllSellers();
const overview = {
totalSellers: allSellers.data.length,
activeSellers: allSellers.data.filter(s => s.active).length,
totalRevenue: 0,
totalCommission: 0,
totalTransactions: 0,
sellerReports: []
};
for (const seller of allSellers.data) {
const report = await getSellerTransactionReportByDate({
from,
to,
sellerExternalId: seller.sellerExternalId,
apiSecretKey: this.apiSecretKey
});
overview.totalRevenue += report.totalAuthAmount;
overview.totalCommission += report.totalMpCommissionAmount;
overview.totalTransactions += report.countSuccessTransaction;
overview.sellerReports.push({
sellerId: seller.sellerExternalId,
sellerName: seller.nameSurname,
sales: report.countSuccessSalesTransaction,
revenue: report.totalAuthAmount,
commission: report.totalMpCommissionAmount
});
}
// Satıcıları ciroya göre sırala
overview.sellerReports.sort((a, b) => b.revenue - a.revenue);
return overview;
}
displayDashboard(overview) {
console.log('\n📊 PAZARYERI DASHBOARD\n');
console.log(`Toplam Satıcı: ${overview.totalSellers}`);
console.log(`Aktif Satıcı: ${overview.activeSellers}`);
console.log(`Toplam Ciro: ${overview.totalRevenue.toFixed(2)} TL`);
console.log(`Toplam Komisyon: ${overview.totalCommission.toFixed(2)} TL`);
console.log(`Toplam İşlem: ${overview.totalTransactions}\n`);
console.log('🏆 EN İYİ SATICILAR:\n');
overview.sellerReports.slice(0, 10).forEach((seller, index) => {
console.log(
`${index + 1}. ${seller.sellerName}: ` +
`${seller.revenue.toFixed(2)} TL (${seller.sales} satış)`
);
});
}
}
// Kullanım
const dashboard = new MarketplaceDashboard();
const overview = await dashboard.getOverview('2025-01-01', '2025-01-31');
dashboard.displayDashboard(overview);

const ExcelJS = require('exceljs');
async function exportSellerReport(sellerExternalId, from, to) {
const report = await getSellerTransactionReportByDate({
from,
to,
sellerExternalId,
apiSecretKey: process.env.API_SECRET_KEY
});
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('İşlem Raporu');
// Başlıklar
worksheet.columns = [
{ header: 'İşlem Kodu', key: 'trxCode', width: 20 },
{ header: 'Tarih', key: 'date', width: 15 },
{ header: 'Tutar', key: 'amount', width: 12 },
{ header: 'Komisyon', key: 'commission', width: 12 },
{ header: 'Stopaj', key: 'tax', width: 12 },
{ header: 'Net', key: 'net', width: 12 },
{ header: 'Durum', key: 'status', width: 12 }
];
// Veriler
report.data.forEach(trx => {
worksheet.addRow({
trxCode: trx.trxCode,
date: trx.trxDate,
amount: trx.trxAmount,
commission: trx.mpCommissionAmount,
tax: trx.withholdingTax,
net: trx.trxAmount - trx.mpCommissionAmount - trx.withholdingTax,
status: trx.trxStatus
});
});
// Stil
worksheet.getRow(1).font = { bold: true };
// Kaydet
await workbook.xlsx.writeFile(`seller_report_${sellerExternalId}.xlsx`);
}

Raporlama sistemini kurduktan sonra:

  1. Ödeme İşlemleri - Yeni ödemeler alın
  2. Satıcı Yönetimi - Satıcı ekleyin ve yönetin
  3. Ödeme Profili - Profilleri optimize edin