GoPay Merchant Auth API

Autentikasi akun GoPay Merchant menggunakan alur OTP dua atau tiga langkah.

Halaman ini menjelaskan alur OTP khusus untuk GoPay Merchant. Gunakan alur ini saat membuat akun baru atau saat akun perlu relogin (biasanya karena sesi expired).

GoPay Merchant membutuhkan verifikasi OTP minimal dua langkah. Kadang ada OTP kedua sebagai verifikasi tambahan — jika requireSecondOTP: true pada respons Step 2, lanjutkan ke Step 3.


Step 1 — Kirim OTP

POST /api/v1/accounts

Kirim OTP ke nomor HP yang terdaftar di GoPay.

Request Body

FieldTypeRequiredKeterangan
actionstringYaHarus gopay-merchant-send-otp
phoneNumberstringYaNomor HP terdaftar di GoPay
providerCodestringKondisionalGOPAY-MERCHANT — wajib untuk akun baru
accountNamestringKondisionalLabel akun — wajib untuk akun baru
intervalMinutesnumberKondisionalInterval sync (menit) — wajib untuk akun baru
accountIdstringKondisionalUUID akun — wajib untuk relogin/update
verificationMethodstringNoWhatsApp (default) atau SMS

Akun baru:

{
  "action": "gopay-merchant-send-otp",
  "phoneNumber": "081234567890",
  "providerCode": "GOPAY-MERCHANT",
  "accountName": "GoPay Merchant Toko",
  "intervalMinutes": 5,
  "verificationMethod": "WhatsApp"
}

Relogin / update:

{
  "action": "gopay-merchant-send-otp",
  "phoneNumber": "081234567890",
  "accountId": "123e4567-e89b-12d3-a456-426614174000",
  "verificationMethod": "WhatsApp"
}

Response 200

{
  "success": true,
  "sessionId": "123e4567-e89b-12d3-a456-426614174000",
  "message": "OTP has been sent to your phone"
}

Simpan sessionId — nilai ini diperlukan di Step 2.

Errors

StatusKeterangan
400Field wajib tidak lengkap
400Provider tidak tersedia
400Login gagal
401API key tidak valid atau tidak ada
500Internal server error

Contoh

curl -X POST 'https://mutasiku.co.id/api/v1/accounts' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "action": "gopay-merchant-send-otp",
    "phoneNumber": "081234567890",
    "providerCode": "GOPAY-MERCHANT",
    "accountName": "GoPay Merchant Toko",
    "intervalMinutes": 5,
    "verificationMethod": "WhatsApp"
  }'

Step 2 — Verifikasi OTP

POST /api/v1/accounts

Verifikasi kode OTP yang diterima. Periksa respons — jika requireSecondOTP: true, lanjutkan ke Step 3.

Request Body

FieldTypeRequiredKeterangan
actionstringYaHarus gopay-merchant-verify-otp
sessionIdstringYaSession ID dari Step 1
otpstringYaKode OTP yang diterima
accountIdstringNoUUID akun — untuk relogin/update
{
  "action": "gopay-merchant-verify-otp",
  "sessionId": "123e4567-e89b-12d3-a456-426614174000",
  "otp": "123456"
}

Response 200 — Autentikasi selesai

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

Response 200 — Perlu OTP kedua

{
  "success": false,
  "requireSecondOTP": true,
  "sessionId": "123e4567-e89b-12d3-a456-426614174001",
  "message": "Second verification code is required"
}

Jika requireSecondOTP: true, simpan sessionId baru dari respons ini (bukan dari Step 1) dan lanjutkan ke Step 3.

Errors

StatusKeterangan
400Data verifikasi tidak lengkap
400Session expired atau tidak ditemukan — ulangi dari Step 1
400OTP verification failed
401API key tidak valid atau tidak ada
500Internal server error

Contoh

curl -X POST 'https://mutasiku.co.id/api/v1/accounts' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "action": "gopay-merchant-verify-otp",
    "sessionId": "123e4567-e89b-12d3-a456-426614174000",
    "otp": "123456"
  }'

Step 3 — Verifikasi OTP Kedua (opsional)

POST /api/v1/accounts

Hanya diperlukan jika Step 2 mengembalikan requireSecondOTP: true. Gunakan sessionId baru dari respons Step 2.

Request Body

FieldTypeRequiredKeterangan
actionstringYaHarus gopay-merchant-verify-second-otp
sessionIdstringYaSession ID baru dari Step 2
otpstringYaKode OTP kedua yang diterima
{
  "action": "gopay-merchant-verify-second-otp",
  "sessionId": "123e4567-e89b-12d3-a456-426614174001",
  "otp": "123456"
}

Response 200

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

accountId adalah UUID akun yang sudah terhubung. Simpan nilai ini untuk digunakan di endpoint Mutations dan lainnya.

Errors

StatusKeterangan
400Data verifikasi tidak lengkap
400Session expired atau tidak ditemukan — ulangi dari Step 1
400OTP verification failed
401API key tidak valid atau tidak ada
500Internal server error

Contoh

curl -X POST 'https://mutasiku.co.id/api/v1/accounts' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "action": "gopay-merchant-verify-second-otp",
    "sessionId": "123e4567-e89b-12d3-a456-426614174001",
    "otp": "123456"
  }'

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

Last updated: 4/11/2026