Zakat MAINPP - Maybank FTP Integration

Sistem Integrasi FTP untuk Kutipan Zakat

RCMS Client File Format (Sheet 5)

About RCMS Format

Direction: RCMS (Maybank) → Zakat

Format: Pipe-delimited ( | ) with 00 (header), 01 (body), 99 (footer) records

Purpose: Alternative format from Maybank. You may receive EITHER Simple FTP format (ZSLP/ZSLR) OR this RCMS format - depends on your integration setup with Maybank.

Two Formats You May Receive

Format 1: Simple FTP (Sheet 3 & 4) Format 2: RCMS Client (Sheet 5)
Structure: Fixed-width
Files: ZSLR, ZSLP, ZSLS
Records: H (Header), D (Detail)
Example: ZSLP30062025.txt
Structure: Pipe-delimited ( | )
Files: RCMS*.txt
Records: 00 (Header), 01 (Body), 99 (Footer)
Example: RCMS_062025.txt

File Flow

┌──────────────────────────────────────────────────────────────────────────────────────┐
│                         MAYBANK TO ZAKAT - TWO FORMATS                               │
├──────────────────────────────────────────────────────────────────────────────────────┤
│                                                                                      │
│                              ┌─────────────────┐                                     │
│                              │     MAYBANK     │                                     │
│                              │  (RCMS System)  │                                     │
│                              └────────┬────────┘                                     │
│                                       │                                              │
│                    ┌──────────────────┴──────────────────┐                          │
│                    │                                     │                          │
│                    ▼                                     ▼                          │
│     ┌─────────────────────────────┐     ┌─────────────────────────────┐            │
│     │  FORMAT 1: Simple FTP       │     │  FORMAT 2: RCMS Client      │            │
│     │  (Sheet 3 & 4)              │     │  (Sheet 5)                  │            │
│     │                             │     │                             │            │
│     │  • Fixed-width              │     │  • Pipe-delimited ( | )     │            │
│     │  • Files: ZSLR, ZSLP        │     │  • Records: 00, 01, 99      │            │
│     │  • Records: H, D            │     │  • Same data, diff format   │            │
│     └─────────────┬───────────────┘     └──────────────┬──────────────┘            │
│                   │                                    │                            │
│                   └──────────────┬─────────────────────┘                            │
│                                  │                                                  │
│                                  ▼                                                  │
│                       ┌─────────────────────┐                                       │
│                       │       ZAKAT         │                                       │
│                       │   Parse & Process   │                                       │
│                       └─────────────────────┘                                       │
│                                                                                      │
│   * Ask Maybank which format they will send via FTP                                 │
│                                                                                      │
└──────────────────────────────────────────────────────────────────────────────────────┘

RCMS File Structure

HEADER (00) - One per file
00|ZAKAT|15|02|LZSMAJ0001555|ABC COMPANY SDN BHD|062025|1234567890123|25062025|...|BATCH001|ABCCORP001||
   │     │   │  │               │                    │       │             │
   │     │   │  │               │                    │       │             └─ Value Date (DDMMYYYY)
   │     │   │  │               │                    │       └─ Debiting Account
   │     │   │  │               │                    └─ Contribution Period (MMYYYY)
   │     │   │  │               └─ Employer Name
   │     │   │  └─ Employer Reference No (from Zakat)
   │     │   └─ 01=Registration, 02=Payment
   │     └─ State Code: 6=KL, 7=NS, 8=SL, 15=PG, etc.
   └─ Product Group

BODY (01) - Repeatable for each employee
01|||EMP001|AHMAD BIN ALI|||ABC001|880101145566|||000000000015000|||||||||1|||...
   │       │    │                    │                    │                 │
   │       │    │                    │                    │                 └─ Zakat Classification (Field 21)
   │       │    │                    │                    │                    1=Pendapatan, 2=Harta, 3=Perniagaan
   │       │    │                    │                    └─ Amount in cents (RM150.00 = 15000)
   │       │    │                    └─ New IC Number (Field 9)
   │       │    └─ Employee Name (Field 5)
   │       └─ Employee Code (Field 4)
   └─ Record Type

FOOTER (99) - One per file
99|000000000100000||5||5|000000000100000||
   │                 │  │  │
   │                 │  │  └─ Total Amount (RM1000.00)
   │                 │  └─ Total Record Count
   │                 └─ Employee Amount Count
   └─ Total Employee Amount

Parsed File: RCMS_SAMPLE_062025.txt

5
Total Records
RM 1,000.00
Total Amount

Product: ZAKAT

State: ZAKAT (Pulau Pinang) (Code: 15)

Type: Payment (02)

Employer: ABC COMPANY SDN BHD

Period: 062025

Employee Records

#NameIC NumberAmountZakat Type
1 AHMAD BIN ALI 880101-14-5566 RM 150.00 Zakat Pendapatan
2 SITI BINTI HASSAN 900215-08-6622 RM 250.00 Zakat Pendapatan
3 MOHD RAZAK BIN OMAR 850512-14-5588 RM 100.00 Zakat Harta
4 NUR AISYAH BINTI YUSOF 920830-14-7744 RM 200.00 Zakat Pendapatan
5 KAMAL BIN ISMAIL 780425-02-5566 RM 300.00 Zakat Perniagaan

Raw JSON Data

{
    "header": {
        "record_type": "00",
        "product_group": "ZAKAT",
        "statutory_body_type": "15",
        "reg_payment_indicator": "02",
        "employer_ref_no": "LZSMAJ0001555",
        "employer_name": "ABC COMPANY SDN BHD",
        "contribution_month_year": "062025",
        "debiting_account_no": "1234567890123",
        "value_date": "25062025",
        "tax_payment_option": "",
        "payment_option": "",
        "company_state_code": "",
        "debit_reference": "",
        "debit_description": "",
        "credit_reference": "",
        "credit_description": "",
        "contact_person_name": "",
        "contact_phone_number": "",
        "penalty_seq_number": "",
        "form_f_ref_no": "",
        "client_batch_id": "BATCH001",
        "corporate_code": "ABCCORP001",
        "brn_no": "",
        "statutory_body_name": "ZAKAT (Pulau Pinang)",
        "is_registration": false,
        "is_payment": true
    },
    "records": [
        {
            "record_type": "01",
            "customer_ref_number": "",
            "payment_code": "",
            "favourite_employee_code": "EMP001",
            "employee_name": "AHMAD BIN ALI",
            "malaysian": "",
            "country_code": "",
            "employee_number": "ABC001",
            "new_id_no": "880101145566",
            "old_id_no": "",
            "passport_no": "",
            "employee_amount": "000000000015000",
            "employer_amount": "",
            "wife_code": "",
            "employee_staff_number": "",
            "employee_wages": "",
            "employee_initials": "",
            "employment_date": "",
            "employment_status": "",
            "no_of_installation": "",
            "zakat_classification": "1",
            "address_1": "",
            "address_2": "",
            "address_3": "",
            "address_4": "",
            "address_5": "",
            "postcode": "",
            "fax_number": "",
            "contact_person_1": "",
            "phone_number_1": "",
            "handphone_number_1": "",
            "email_address_1": "",
            "contact_person_2": "",
            "phone_number_2": "",
            "handphone_number_2": "",
            "email_address_2": "",
            "amount_decimal": 150,
            "zakat_classification_name": "Zakat Pendapatan",
            "ic_formatted": "880101-14-5566"
        },
        {
            "record_type": "01",
            "customer_ref_number": "",
            "payment_code": "",
            "favourite_employee_code": "EMP002",
            "employee_name": "SITI BINTI HASSAN",
            "malaysian": "",
            "country_code": "",
            "employee_number": "ABC002",
            "new_id_no": "900215086622",
            "old_id_no": "",
            "passport_no": "",
            "employee_amount": "000000000025000",
            "employer_amount": "",
            "wife_code": "",
            "employee_staff_number": "",
            "employee_wages": "",
            "employee_initials": "",
            "employment_date": "",
            "employment_status": "",
            "no_of_installation": "",
            "zakat_classification": "1",
            "address_1": "",
            "address_2": "",
            "address_3": "",
            "address_4": "",
            "address_5": "",
            "postcode": "",
            "fax_number": "",
            "contact_person_1": "",
            "phone_number_1": "",
            "handphone_number_1": "",
            "email_address_1": "",
            "contact_person_2": "",
            "phone_number_2": "",
            "handphone_number_2": "",
            "email_address_2": "",
            "amount_decimal": 250,
            "zakat_classification_name": "Zakat Pendapatan",
            "ic_formatted": "900215-08-6622"
        },
        {
            "record_type": "01",
            "customer_ref_number": "",
            "payment_code": "",
            "favourite_employee_code": "EMP003",
            "employee_name": "MOHD RAZAK BIN OMAR",
            "malaysian": "",
            "country_code": "",
            "employee_number": "ABC003",
            "new_id_no": "850512145588",
            "old_id_no": "",
            "passport_no": "",
            "employee_amount": "000000000010000",
            "employer_amount": "",
            "wife_code": "",
            "employee_staff_number": "",
            "employee_wages": "",
            "employee_initials": "",
            "employment_date": "",
            "employment_status": "",
            "no_of_installation": "",
            "zakat_classification": "2",
            "address_1": "",
            "address_2": "",
            "address_3": "",
            "address_4": "",
            "address_5": "",
            "postcode": "",
            "fax_number": "",
            "contact_person_1": "",
            "phone_number_1": "",
            "handphone_number_1": "",
            "email_address_1": "",
            "contact_person_2": "",
            "phone_number_2": "",
            "handphone_number_2": "",
            "email_address_2": "",
            "amount_decimal": 100,
            "zakat_classification_name": "Zakat Harta",
            "ic_formatted": "850512-14-5588"
        },
        {
            "record_type": "01",
            "customer_ref_number": "",
            "payment_code": "",
            "favourite_employee_code": "EMP004",
            "employee_name": "NUR AISYAH BINTI YUSOF",
            "malaysian": "",
            "country_code": "",
            "employee_number": "ABC004",
            "new_id_no": "920830147744",
            "old_id_no": "",
            "passport_no": "",
            "employee_amount": "000000000020000",
            "employer_amount": "",
            "wife_code": "",
            "employee_staff_number": "",
            "employee_wages": "",
            "employee_initials": "",
            "employment_date": "",
            "employment_status": "",
            "no_of_installation": "",
            "zakat_classification": "1",
            "address_1": "",
            "address_2": "",
            "address_3": "",
            "address_4": "",
            "address_5": "",
            "postcode": "",
            "fax_number": "",
            "contact_person_1": "",
            "phone_number_1": "",
            "handphone_number_1": "",
            "email_address_1": "",
            "contact_person_2": "",
            "phone_number_2": "",
            "handphone_number_2": "",
            "email_address_2": "",
            "amount_decimal": 200,
            "zakat_classification_name": "Zakat Pendapatan",
            "ic_formatted": "920830-14-7744"
        },
        {
            "record_type": "01",
            "customer_ref_number": "",
            "payment_code": "",
            "favourite_employee_code": "EMP005",
            "employee_name": "KAMAL BIN ISMAIL",
            "malaysian": "",
            "country_code": "",
            "employee_number": "ABC005",
            "new_id_no": "780425025566",
            "old_id_no": "",
            "passport_no": "",
            "employee_amount": "000000000030000",
            "employer_amount": "",
            "wife_code": "",
            "employee_staff_number": "",
            "employee_wages": "",
            "employee_initials": "",
            "employment_date": "",
            "employment_status": "",
            "no_of_installation": "",
            "zakat_classification": "3",
            "address_1": "",
            "address_2": "",
            "address_3": "",
            "address_4": "",
            "address_5": "",
            "postcode": "",
            "fax_number": "",
            "contact_person_1": "",
            "phone_number_1": "",
            "handphone_number_1": "",
            "email_address_1": "",
            "contact_person_2": "",
            "phone_number_2": "",
            "handphone_number_2": "",
            "email_address_2": "",
            "amount_decimal": 300,
            "zakat_classification_name": "Zakat Perniagaan",
            "ic_formatted": "780425-02-5566"
        }
    ],
    "footer": {
        "record_type": "99",
        "total_employee_amount": "000000000100000",
        "total_employer_amount": "",
        "employee_amount_count": "5",
        "employer_amount_count": "",
        "total_count": "5",
        "total_amount": "000000000100000",
        "hashing_value": "",
        "total_employee_amount_decimal": 1000,
        "total_amount_decimal": 1000
    },
    "summary": {
        "total_records": 5,
        "total_amount": 1000,
        "is_registration": false,
        "is_payment": true
    }
}