Accounts API

Kelola akun bank dan e-wallet — list, create, update, delete, dan refresh.

Semua endpoint membutuhkan header x-api-key. Lihat Authentication.

Akun adalah rekening bank atau e-wallet yang Anda hubungkan ke Mutasiku. Setelah terhubung, sistem akan otomatis sync data transaksi sesuai intervalMinutes yang Anda set.


GET /api/v1/accounts

Ambil daftar akun bank dan e-wallet dengan filter, pencarian, dan pagination.

Query Parameters

ParameterTypeRequiredKeterangan
typestringNoFilter tipe akun: bank atau ewallet
isActivebooleanNoFilter status: true aktif, false nonaktif
providerCodestringNoFilter berdasarkan kode provider, contoh: BCA, DANA
searchstringNoCari di nomor rekening, nama akun, nama provider, atau nomor HP
pagenumberNoHalaman pagination (default: 1)
limitnumberNoJumlah item per halaman (default: 10, max: 100)

Response 200

{
  "status": "success",
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "type": "ewallet",
      "name": "John Doe",
      "phoneNumber": "+62-85157367702",
      "balance": 100000,
      "lastSync": "2024-02-12T08:30:00.000Z",
      "intervalMinutes": 15,
      "isActive": true,
      "provider": {
        "id": "ewallet-id-123",
        "name": "DANA",
        "code": "DANA",
        "isActive": true,
        "pointCost": 1000
      }
    }
  ],
  "pagination": {
    "total": 50,
    "page": 1,
    "limit": 10,
    "totalPages": 5,
    "hasMore": true
  }
}

Penjelasan Field Respons

FieldKeterangan
idUUID akun — gunakan ini di semua endpoint yang membutuhkan :id
balanceSaldo terakhir yang berhasil disync (dalam Rupiah)
lastSyncWaktu terakhir data berhasil diperbarui dari provider
intervalMinutesSeberapa sering sistem sync data dari provider (dalam menit)
isActivefalse berarti sesi akun expired dan perlu relogin

Errors

StatusKeterangan
400Parameter tidak valid
401API key tidak valid atau tidak ada
500Internal server error

Contoh

# Semua akun
curl 'https://mutasiku.co.id/api/v1/accounts' \
  -H 'x-api-key: YOUR_API_KEY'

# Filter e-wallet
curl 'https://mutasiku.co.id/api/v1/accounts?type=ewallet' \
  -H 'x-api-key: YOUR_API_KEY'

# Filter aktif + provider DANA
curl 'https://mutasiku.co.id/api/v1/accounts?isActive=true&providerCode=DANA' \
  -H 'x-api-key: YOUR_API_KEY'

POST /api/v1/accounts

Buat akun bank atau e-wallet baru.

E-wallet OVO dan GOPAY-MERCHANT perlu alur OTP

Jika providerCode adalah OVO atau GOPAY-MERCHANT, respons akan berisi status: "special_flow" — bukan accountId langsung. Ikuti instruksi nextAction di respons untuk menyelesaikan verifikasi OTP. Lihat DANA Auth, OVO Auth, GoPay Auth.

Request Body

FieldTypeRequiredKeterangan
typestringYabank atau ewallet
providerCodestringYaKode provider dari Provider API, contoh: BCA, DANA
accountNamestringYaNama label akun ini di dashboard Anda
intervalMinutesnumberYaInterval sync dalam menit — semakin kecil semakin sering sync (konsumsi poin lebih banyak)
accountNumberstringKondisionalNomor rekening — wajib untuk type: bank
usernamestringKondisionalUsername internet banking — wajib untuk bank
passwordstringKondisionalPassword internet banking — wajib untuk bank
phoneNumberstringKondisionalNomor HP terdaftar — wajib untuk e-wallet
pinstringKondisionalPIN — wajib untuk DANA

Response 200 — Akun berhasil dibuat

{
  "status": "success",
  "data": {
    "accountId": "123e4567-e89b-12d3-a456-426614174000"
  }
}

Response 200 — Provider OTP (OVO / GOPAY-MERCHANT)

Simpan nextAction dan lanjutkan ke alur OTP provider masing-masing.

{
  "status": "special_flow",
  "message": "This provider requires a special verification flow",
  "provider": "OVO",
  "providerCode": "OVO",
  "nextAction": {
    "action": "ovo-send-otp",
    "requiredData": {
      "phoneNumber": "081234567890",
      "providerCode": "OVO",
      "accountName": "My OVO Account",
      "intervalMinutes": 5
    }
  }
}

Errors

StatusKeterangan
400Parameter tidak valid atau field wajib kosong
400Poin tidak cukup untuk menambah akun baru
401API key tidak valid atau tidak ada
404Provider tidak ditemukan
500Internal server error

Contoh

# Akun bank BCA
curl -X POST 'https://mutasiku.co.id/api/v1/accounts' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "bank",
    "providerCode": "BCA",
    "accountNumber": "1234567890",
    "accountName": "BCA Operasional",
    "username": "johndoe",
    "password": "secretpass",
    "intervalMinutes": 5
  }'

# Akun e-wallet DANA
curl -X POST 'https://mutasiku.co.id/api/v1/accounts' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "ewallet",
    "providerCode": "DANA",
    "phoneNumber": "081234567890",
    "accountName": "DANA Bisnis",
    "pin": "123456",
    "intervalMinutes": 5
  }'

GET /api/v1/accounts/:id

Ambil detail akun berdasarkan ID.

Path Parameters

ParameterTypeRequiredKeterangan
idstringYaUUID akun dari response list atau create

Response 200

{
  "status": "success",
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "type": "ewallet",
    "name": "John Doe",
    "phoneNumber": "+62-85157367702",
    "balance": 100000,
    "lastSync": "2024-02-12T08:30:00.000Z",
    "intervalMinutes": 15,
    "isActive": true,
    "username": "johndoe",
    "provider": {
      "id": "ewallet-id-123",
      "name": "DANA",
      "code": "DANA",
      "isActive": true,
      "pointCost": 1000
    }
  }
}

Errors

StatusKeterangan
401API key tidak valid atau tidak ada
404Akun tidak ditemukan atau bukan milik Anda
500Internal server error

Contoh

curl 'https://mutasiku.co.id/api/v1/accounts/123e4567-e89b-12d3-a456-426614174000' \
  -H 'x-api-key: YOUR_API_KEY'

PATCH /api/v1/accounts/:id

Update informasi akun.

Path Parameters

ParameterTypeRequiredKeterangan
idstringYaUUID akun

Request Body

Kirim hanya field yang ingin diubah:

FieldTypeRequiredKeterangan
accountNamestringNoLabel akun baru
intervalMinutesnumberNoInterval sync baru (menit)
usernamestringNoUsername baru — untuk bank
passwordstringNoPassword baru — untuk bank

Response 200

{
  "status": "success",
  "message": "Account updated successfully"
}

Errors

StatusKeterangan
400Parameter tidak valid
401API key tidak valid atau tidak ada
404Akun tidak ditemukan
500Internal server error

Contoh

curl -X PATCH \
  'https://mutasiku.co.id/api/v1/accounts/123e4567-e89b-12d3-a456-426614174000' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "accountName": "BCA Utama",
    "intervalMinutes": 10
  }'

DELETE /api/v1/accounts/:id

Hapus akun beserta seluruh riwayat transaksinya.

Operasi ini permanen dan tidak bisa dibatalkan. Semua data mutasi terkait akun ini akan ikut terhapus.

Path Parameters

ParameterTypeRequiredKeterangan
idstringYaUUID akun

Response 200

{
  "status": "success",
  "message": "Account deleted successfully"
}

Errors

StatusKeterangan
401API key tidak valid atau tidak ada
404Akun tidak ditemukan
500Internal server error

Contoh

curl -X DELETE \
  'https://mutasiku.co.id/api/v1/accounts/123e4567-e89b-12d3-a456-426614174000' \
  -H 'x-api-key: YOUR_API_KEY'

GET /api/v1/accounts/:id/refresh

Trigger sync manual untuk memperbarui saldo dan mutasi terbaru dari provider, tanpa harus menunggu jadwal intervalMinutes.

Path Parameters

ParameterTypeRequiredKeterangan
idstringYaUUID akun

Response 200

{
  "status": "success",
  "message": "Account refreshed successfully"
}

Errors

StatusKeterangan
400Akun atau provider nonaktif — perlu relogin terlebih dahulu
401API key tidak valid atau tidak ada
404Akun tidak ditemukan
500Internal server error

Contoh

curl -X POST \
  'https://mutasiku.co.id/api/v1/accounts/123e4567-e89b-12d3-a456-426614174000/refresh' \
  -H 'x-api-key: YOUR_API_KEY'

© 2026 PT. Cobra Code Indonesia. All rights reserved.

Last updated: 4/11/2026