Tagih.id

Send Invoice Multiple

Send Multiple Invoice merupakan layanan dari Tagih.id yang digunakan untuk mempermudah proses pengiriman banyak tagihan secara efisien dan terpusat. Tagih.id menyediakan layanan Send Invoice Multiple untuk membantu Anda mengirim tagihan hingga mencapai 500 invoice dalam satu permintaan.
Sebelum Integrasi

Pastikan Anda sudah menerima kredensial dari tim Espay.

Langkah Integrasi

Berikut ini merupakan langkah-langkah yang dapat Anda gunakan untuk integrasi dengan Send Multiple Invoice.

1. Generate Signature
Setiap permintaan yang Anda kirim, akan divalidasi oleh Tagih.id menggunakan parameter signature yang telah Anda buat. Pelajari pembuatan Tagih.id | Hash-Based Signature.
2. Enkripsi Data
Enkripsi data merupakan proses mengubah informasi data kedalam bentuk yang tidak dapat dibaca agar informasi data lebih aman. Setiap melakukan transaksi, Anda wajib melakukan enkripsi untuk value parameter yang Anda kirim kecuali rq_uuid, rq_datetime, dan sender_id (lihat pada bagian contoh permintaan).

Berikut ini ketentuan untuk enkripsi yang digunakan:

openssl_encrypt($plainString, ‘AES-256-CBC’, $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
Nama Keterangan
Encryption
AES 256
Mode
CBC
Key
32 bytes.

Diberikan oleh tim Espay.
IV
16 bytes.

Diberikan oleh tim Espay.
Output
Base64

Langkah enkripsi data:

$_key = ’45bfba7eb46a6007d49ca55a3738aae0′;
$_iv = ‘acc6d0f5aa29120a’;
$plainString = “SGWYESSISHOP”;

1. Tambahkan padding

Dalam algoritma AES 256 CBC, data harus memiliki panjang kelipatan 16 byte.

Sebelum padding:

string(12) “SGWYESSISHOP”

Setelah padding:

String menjadi 16 byte: “SGWYESSISHOP” + 4 null byte (\0).

String secara visual tetap terlihat sama, namun panjangnya berubah menjadi 16 byte karena penambahan 4 karakter null (\0).

⚠️ Padding ini dilakukan secara otomatis dalam kode menggunakan fungsi padding.

2. Lakukan Enkripsi

Lakukan enkripsi menggunakan format enkripsi sebagai berikut:
openssl_encrypt($plainString, ‘AES-256-CBC’, $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);

3. Encode hasil enkripsi menggunakan base64

plainString yang sudah dienkripsi selanjutnya dilakukan encode menggunakan base64.

7ehJDLKEnDvhoTaI0Ao3Fg==
2. Payment Notification
Anda diharuskan untuk menyediakan callback yang dapat diakses oleh Espay. Pelajari lebih lanjut Tagih.id | Payment Notification.
3. Membuat Multiple Invoice

Flow

Anda melakukan permintaan dengan mengirimkan parameter yang dibutuhkan, dan Tagih.id akan memberikan respons dalam bentuk JSON.

API URL

Environment URL
Sandbox
Port of HTTPS (443)
https://sandbox-api.espay.id/rest/lesscash/sendinvoicemulti
Production
Port of HTTPS (443)
https://api.espay.id/rest/lesscash/sendinvoicemulti

HTTP Header

Key Value
Method
POST
HTTP Version
HTTP/1.1
Accept
*/*
Content-Type
application/x-www-form-urlencoded
Content-Length
<dynamic>

Parameter Permintaan

Parameter Tipe Mandatory Keterangan
rq_uuid
String (64)
Y
Request identifier. ID unik yang digunakan untuk mengidentifikasi pesan.

Format:
Rekomendasi UUID V.4
rq_datetime
String
Y
Tanggal dan waktu request transaksi.

Format:
Y-m-d H:i:s

Contoh:
2024-12-16 14:30:45
signature
String
Y
Kode yang digunakan untuk melakukan validasi transaksi. Pelajari Tagih.id | Hash-Based Signature
sender_id
String (32)
Y
Id merchant yang diberikan oleh tim Espay.
comm_code
String (32)
Y
Kode wilayah merchant.

Contoh:
INDOREGION1
ccy
String (3)
Y
Kode mata uang transaksi.

Format:
  • Rupiah: IDR
invoices
JSON
Y
Detail invoice
   doc_no
String (32)
Y
Nomor invoice.

Format:
site code_shift number_fuel/non fuel

Contoh:
1221-31013.SH_2107_00099.N
  member_code
String (32)
Y
Kode member.
  member_name
String (100)
Y
Nama member.
  member_email
String (100)
Y
Email member.
  comm_code
String (32)
Y
Kode wilayah member.
   amount
String (13)
Y
Total invoice.

Contoh:
200000
  due_date
Datetime
Y
Tanggal jatuh tempo.

Format:
YYYY-MM-DD

Contoh:
2024-12-16
  issue_date
Datetime
Y
Tanggal invoice diterbitkan.

Format:
YYYY-MM-DD

Contoh:
2024-12-16
total_invoices
String (3)
Y
Jumlah total invoice yang dikirim. Maksimal pengiriman 500 invoice dalam bentuk JSON.

Contoh:
500
Y: Yes, O: Optional, C: Conditional

Parameter Respons

Parameter Tipe Mandatory Keterangan
rq_uuid
String (64)
Y
Request identifier. ID unik yang digunakan untuk mengidentifikasi pesan.
rs_datetime
String
Y
Tanggal dan waktu respons transaksi.

Format:
Y-m-d H:i:s

Contoh:
2024-12-16 14:30:45
error_code
String (4)
Y
Kode respons.

Format:
  • Berhasil: 0000
  • Gagal: XXXX
error_message
String
Y
Deskripsi respons.
invoices
JSON
Y
invoices_success
JSON
Y
Invoice berhasil.
invoices_failed
JSON
Y
Invoice gagal.
total_success
String
Y
Total invoice berhasil.

Contoh:
15
total_failed
String
Y
Total invoice gagal.

Contoh:
20
total_row_execute
String
Y
Total invoice yang telah diproses.

Contoh:
35
Y: Yes, O: Optional, C: Conditional





















Enkripsi - PHP

// Encryption function
function encryptData($data, $key, $iv) {
    $paddedData = padZero($data); // Pastikan data dipadding
    return openssl_encrypt($paddedData, 'AES-256-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);
}

// Decryption function
function decryptData($encryptedData, $key, $iv) {
    $decodedData = base64_decode($encryptedData);
    return rtrim(openssl_decrypt($decodedData, 'AES-256-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv), "\0");
}

// Utility for padding
function padZero($data) {
    $len = 16;
    $padLength = $len - (strlen($data) % $len);
    return $data . str_repeat("\0", $padLength);
}
             

















































































Contoh Permintaan - Sebelum Enkripsi

POST /rest/lesscash/sendinvoicemulti HTTP/1.1
Host: sandbox-api.espay.id
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Accept: */*


rq_uuid=80784df2-accb-46fc-92f4-8d3103b38408&
rq_datetime=2025-01-21 11:30:08&
signature=f3ceda666e03630789f1bb3fd2db7a6e9910ea998ae8f2c24e71a74d9f28fdd2&
sender_id=SGWYESSISHOP&
comm_code=SGWYESSISHOP&
ccy=IDR&
invoices={
    "1221-31013.SH_2107_00099.F": {
        "member_code": "1221-31013",
        "member_name": "Tambiluk Serang",
        "member_email": "[email protected]",
        "comm_code": "INDOREGION1",
        "reference_number": "F",
        "amount": 20000,
        "due_date": "2018-03-22",
        "issue_date": "2018-03-22"
    },
    "1221-31013.SH_2107_00099.N": {
        "member_code": "1221-31013",
        "member_name": "Tambiluk Serang",
        "member_email": "[email protected]",
        "comm_code": "INDOREGION1",
        "reference_number": "N",
        "amount": 150000,
        "due_date": "2018-03-22",
        "issue_date": "2018-03-22"
    }
}&
total_invoices=2

             


Contoh Permintaan - Setelah Enkripsi

POST /rest/lesscash/sendinvoicemulti HTTP/1.1
Host: sandbox-api.espay.id
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Accept: */*


rq_uuid=80784df2-accb-46fc-92f4-8d3103b38408&
rq_datetime=2025-01-21 11:30:08&
signature=8729c1f717a84acb2cba8cef24e1d2c87af203e168b0d2febf0eab810396e322&
sender_id=SGWYESSISHOP&
comm_code=7ehJDLKEnDvhoTaI0Ao3Fg==&
ccy=XAgDOyFSyCxclKSInvWVcw==&
invoices=vRE8jWjMGB1SE0Etm/w6LtLesQ4lVJb4aMne8rpos/4GSxdx2sSVEeRny/JmrEzbWLSwZZD6EMn0GtSzvNhWvDjLhMzxaQRvhKpWLF1SdZwLJWycLPYwlXyZkh6mLRWP68VsYZRWFeh6lrvHvFlDHttI47hvEaW1QEAjr1CrWJ+3fMEx3czgSbqEtdJ30qDvhX6h5LmRaDFQhwGH9fcsbmcRqZfJMOOGvvDFRpf6B9yW2yANVDtnIBHRu70iOkGKjXSOFRtdrkhU0xQC20Pv51N8lOIZ14qtxARHHbdlLCOmwCVeIXk1r/JDOw/ltXMvpuJqPiHdeQijDqqn2we3EeDIEpo1EKB+fePxTFQSlg0K4yXlW6rfWW0a+1ZsWchJn4INVi5OFLUS0ijFmNHWae0JjVT1u8MJXCzQZcoN+RZY3kE70j9MyZMx5wqYswikoj+ZzM2yE3TZ3P7IDLClOwqRQn3GsM1rgzqs41uaoeGrwNyshyR8tVZRjM7Rc59xyDmW03GYy0kGaiX9dOQXIHod2mcfJdcFJDhK7MX25nJMprvyt3PG5Z8PdTFObOJvMKAKHPMl1I+cJ5yKXbaht5rtBBmqcokGRtkbUYUDQPc=&
total_invoices=I3QGPJlhxrj9P2wjsQw/Bw==
             
































Contoh Respons

{
    "rq_uuid": "ebf8e9df-639e-424f-8148-94d2741edd03",
    "rs_datetime": "2020-10-01T22:55:14+07:00",
    "error_code": "0000",
    "error_message": "Success",
    "invoices": "",
    "invoices_success": "{
        "1221-31013.SH_2107_00099.N": {
            "error_code": "0000",
            "error_msg": "success",
            "doc_ref_no": "DDOC16282856452UMEM"
        },
        "1221-31013.SH_2107_00099.F": {
            "error_code": "0000",
            "error_msg": "success",
            "doc_ref_no": "DDOC1628285646EMB0M"
        }
    }
    ",
    "invoices_failed": "{
        "20210004048524": {
            "error_code": "0014",
            "error_msg": "invalid issue date",
        },
        "20210004048525": {
            "error_code": "0030",
            "error_msg": "invalid amount",
        }
    }",
    "total_success": "10",
    "total_failed": "4",
    "total_row_execute": "50"
}
              




cURL

....

           





Scroll to Top