Skip to main content

Detail transaksi — Partner Transactions API

GET /api/v1/transactions/{transactionId}

Mengembalikan detail lengkap satu transaksi berdasarkan UUID-nya. Partner hanya bisa mengakses transaksi miliknya sendiri -- request ke transaksi partner lain menghasilkan 403.

Autentikasi

Kirim header Authorization: Bearer <accessToken>, memakai accessToken yang didapat dari Partner Auth API. Butuh permission transactions:read.

Path parameter

ParameterTipeDeskripsi
transactionIdUUIDUUID transaksi yang ingin diambil detailnya.

Contoh request

Request
curl '{{BASE_URL}}/api/v1/transactions/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
-H "Authorization: Bearer $ACCESS_TOKEN"

Response sukses

200 OK

200 OK
{
"code": "00",
"message": "Success",
"data": {
"transactionId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"partnerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"groupId": "3fa85f64-5717-4562-b3fc-2c963f66afa7",
"externalReference": "INV-2026-001234",
"platformReference": "TXN-20260707-A1B2C3",
"transactionType": "PAYMENT",
"paymentMethod": "QRIS_DYNAMIC",
"status": "SUCCESS",
"amount": 150000,
"currency": "IDR",
"providerCode": "GDC",
"providerReference": "GDC-TXN-9876543",
"qrString": "00020101021226...",
"expiredAt": "2026-07-07T10:30:00Z",
"description": "Pembayaran order #INV-2026-001234",
"createdAt": "2026-07-07T09:00:00Z",
"updatedAt": "2026-07-07T09:05:00Z"
},
"correlationId": "9f8e7d6c-5b4a-3210-fedc-ba9876543210",
"requestId": "1a2b3c4d-5e6f-7890-abcd-ef1234567890",
"timestamp": "2026-08-13T09:15:30.123Z"
}

Penjelasan field

FieldTipeCatatan
transactionIdUUIDID transaksi di sistem TuplePay.
partnerIdUUIDID akun partner di sistem TuplePay, yang diambil dari klaim JWT context saat transaksi dibuat. ID ini bukan ID dari payment gateway/provider (misalnya GDC). ID yang diberikan oleh provider terdapat pada field providerReference.
groupIdUUIDGroup yang menentukan gateway/provider transaksi ini -- wajib ada di setiap transaksi (lihat Buat transaksi QRIS / Buat disbursement).
externalReferencestringID transaksi dari sisi kamu (dikirim saat membuat transaksi).
platformReferencestringID internal TuplePay.
transactionTypePAYMENT | DISBURSEMENTTipe transaksi.
paymentMethodQRIS_DYNAMIC | QRIS_STATIC | BANK_TRANSFERMetode pembayaran.
statusPENDING | SUCCESS | FAILED | EXPIRED | CANCELLEDStatus lifecycle -- lihat catatan transisi di bawah.
amountinteger (Long)Nominal dalam Rupiah (bilangan bulat, tidak ada sen) -- 150000 = Rp 150.000.
currencystringKode ISO 4217, saat ini selalu IDR.
providerCodestringKode provider yang memproses (mis. GDC).
providerReferencestring, nullableID transaksi di sisi provider. Null selama masih PENDING.
qrStringstring, nullableString QRIS yang bisa di-render jadi kode QR. Null untuk DISBURSEMENT.
expiredAtISO-8601, nullableWaktu kadaluarsa. Null untuk DISBURSEMENT.
descriptionstring, nullableKeterangan transaksi.
createdAt/updatedAtISO-8601Waktu dibuat/terakhir diupdate.

Transisi status: PENDINGSUCCESS | FAILED | EXPIRED | CANCELLED. Keempat status selain PENDING bersifat terminal (tidak berubah lagi).

Response error

HTTP StatuscodeKapan terjadi
400VALIDATION_ERRORtransactionId di path bukan UUID yang valid.
401INVALID_TOKENAuthorization header tidak ada, JWT tidak valid, atau kadaluarsa.
403ACCESS_DENIEDTidak punya permission transactions:read (lihat 3 kasus di bawah).
404TRANSACTION_NOT_FOUNDTransaksi dengan ID tersebut tidak ditemukan.

code yang sama (ACCESS_DENIED, 403) dipakai untuk tiga kondisi berbeda, dengan message yang berbeda pula:

Kondisimessage
Token valid tapi tidak punya permission transactions:read"Akses ditolak — permission tidak mencukupi untuk operasi ini."
Transaksi ditemukan tapi milik partner lain"Transaksi bukan milik partner yang sedang login."
Token bukan milik actor bertipe partner"Akses tidak diizinkan — actor bukan partner."
Contoh -- 404 Not Found
{
"code": "TRANSACTION_NOT_FOUND",
"message": "Transaction not found: a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"correlationId": "9f8e7d6c-5b4a-3210-fedc-ba9876543210",
"requestId": "1a2b3c4d-5e6f-7890-abcd-ef1234567890",
"timestamp": "2026-08-13T09:15:30.123Z"
}