Knowledge Base / API
עברית

Ask AI

✦ AI answer

Thinking…

Sources

    Digital Wallet

    Digital Wallet - Overview

    The digital wallet enables a business to manage its payment processing funds within the system, without transferring them to an external bank account.

    Instead of the regular process in which funds are processed -> transferred to the bank -> paid to suppliers,
    the system creates an available balance within the "Digital Wallet", from which actions can be performed directly.

    Key capabilities:

    • Accumulating funds from payment processing into an internal balance
    • Real-time balance management
    • Payments to suppliers / subcontractors from the digital wallet
    • Saving time and reducing bank transfers
    • Full control and monitoring of cash flow

    Key value:

    The money “stays in the system” and continues working—instead of being transferred to the bank and then returned.


    🎯 Who is it for?

    The solution is especially suitable for businesses that manage ongoing payments to other parties:

    Businesses with subcontractors

    • Marketplaces
    • Service platforms (couriers, service providers, freelancers)
    • Companies managing a network of suppliers

    Businesses with complex cash flow

    • Businesses with many incoming and outgoing payments
    • Those seeking to reduce their dependence on banks and external transfers

    Logistics / delivery companies

    • Paying couriers from funds received on the same day

    Agencies / brokers

    • Collecting money from customers and transferring it to suppliers/partners

    Startups and financial platforms

    • That want to create a “bank within the product” experience

    Steps for setting up a digital wallet:

    Step 1: Open a digital wallet for an existing supplier

    To open a digital wallet, call the following endpoint:

    POST /api/v11/CompanyOperations/OpenDigitalBankToAnExistingSapak

    Required parameters

    Certification

    The business's interface certificate.

    You can create the certificate through the CardCom website:

    Settings → Company and User Settings → Interface Certificate

    After clicking "Create Certificate", a PFX file is downloaded to your computer. Convert the file to a Base64 string and enter the resulting value in the Certification parameter.

    Guide for converting a PFX file to Base64:
    https://www.techfabric.com/blog/convert-pfx-certificate-to-base64-string

    We recommend storing the string in a secure location.

    Login details

    "Certification": "YOUR_CERTIFICATION_KEY"
    "UserName": "your_username",
    "UserPassword": "your_password"

    Supplier details

    "SapakNumberId": 12345,
    "IsModifyExistingSapak": true

    SapakNumberId – The supplier number of the business that you want to connect to the digital wallet.

    IsModifyExistingSapak – A Boolean value that must be sent as true to link the supplier to the digital wallet.

    Digital wallet details

    "DigitalBankInfo": {
        "SubSupplierAdditionalFeePerTransactionPercentage": 0.5,
        "SubSupplierAdditionalFeePerTransactionFixed": 0.10,
        "MaxAmount": 50000.00,
        "MaxMonthlyAmount": 200000,
        "MaxTransactionsDaily": 10,
        "Document": "BASE64_ENCODED_DOCUMENT_HERE"
    }

    Parameter descriptions:

    Parameter Description
    SubSupplierAdditionalFeePerTransactionPercentage Transfer fee as a percentage
    SubSupplierAdditionalFeePerTransactionFixed Fixed transfer fee in ILS
    MaxAmount Maximum amount for a single transfer
    MaxMonthlyAmount Maximum monthly transfer amount
    MaxTransactionsDaily Maximum number of transfers per day
    Document Account management confirmation, encoded as Base64

    Request example:

    // Open a digital wallet for an existing supplier
    
    var openDigitalBankRequest = new OpenDigitalBankToAnExistingSapakRequest
    {
        Certification = "YOUR_CERT",
        UserName = "user@example.com",
        UserPassword = "password123",
        SapakNumberId = 12345,
    
        // Pass true to link the supplier to the digital wallet
        IsModifyExistingSapak = true,
    
        DigitalBankInfo = new DigitalBankInfo
        {
            // Transfer fee as a percentage
            SubSupplierAdditionalFeePerTransactionPercentage = 0.5m,
    
            // Fixed transfer fee in ILS
            SubSupplierAdditionalFeePerTransactionFixed = 0.10m,
    
            // Maximum amount for a single transfer
            MaxAmount = 50000m,
    
            // Maximum monthly transfer amount
            MaxMonthlyAmount = 200000,
    
            // Maximum number of transfers per day
            MaxTransactionsDaily = 10,
    
    
        }
    };
    
    // POST /api/v11/CompanyOperations/OpenDigitalBankToAnExistingSapak

     


    Step 2: Make a transfer from the digital wallet

    After setting up the digital wallet, you can transfer funds using the following call:

    POST /api/v11/Financial/TransferFromDigitalBank

    Required parameters

    "Certification": "YOUR_CERTIFICATION_KEY",
    "UserName": "your_username",
    "UserPassword": "your_password",
    "WithdrawSapak": 12345,
    "BankNumber": 10,
    "BankBranch": 123,
    "BankAccount": "123456789",
    "BankHolderName": "John Doe",
    "Amount": 1000.50,
    "Description": "Monthly withdrawal",
    "ExternalAsmachta": "UNIQUE-REF-2024-001"

    Parameter descriptions

    Parameter Description
    WithdrawSapak Supplier number of the digital wallet from which the transfer is made
    BankNumber Code of the bank to which the funds are transferred (for example: Bank Leumi – 10)
    BankBranch Branch number
    BankAccount Bank account number
    BankHolderName Account holder's name
    Amount Transfer amount
    Description Transfer description
    ExternalAsmachta A unique identifier defined by the integrating system for the transfer

    Request example:

    // Make a transfer from the digital wallet
    
    var transferRequest = new MoneyTransferRequest
    {
        Certification = "YOUR_CERT",
        UserName = "user@example.com",
        UserPassword = "password123",
    
        // Supplier number of the digital wallet from which the transfer will be made
        WithdrawSapak = 12345,
    
        // Destination account details
        BankNumber = 10,
        BankBranch = 123,
        BankAccount = "123456789",
        BankHolderName = "John Doe",
    
        // Transfer amount
        Amount = 1000.50m,
    
        // Transfer description (optional)
        Description = "Monthly withdrawal",
    
        // Unique identifier defined in the business's system
        ExternalAsmachta = "UNIQUE-REF-2024-001"
    };
    
    // POST /api/v11/Financial/TransferFromDigitalBank
    
    // Response:
    // {
    //     "response": true
    // }
    

    Note: We recommend sending a unique value in the ExternalAsmachta parameter for each transfer. This identifier enables tracking, reconciliation, and cancellation of transfers when necessary.


    Step 3: Cancel a transfer from the digital wallet

    A transfer can be canceled as long as it has not yet been processed by the system. In most cases, the cancellation window is approximately 24 hours (this may vary depending on the transfer status).

    To cancel a transfer, call the following endpoint:

    POST /api/v11/Financial/CancelDigitalBankTransfer

    Required parameters

    "Certification": "YOUR_CERTIFICATION_KEY",
    "UserName": "your_username",
    "UserPassword": "your_password",
    "WithdrawSapak": 12345,
    "ExternalAsmachta": "UNIQUE-REF-2024-001"

    Request example:

    // Cancel a transfer from the digital wallet
    
    var cancelRequest = new MoneyTransferCancelRequest
    {
        Certification = "YOUR_CERT",
        UserName = "user@example.com",
        UserPassword = "password123",
    
        // Supplier number of the digital wallet from which the transfer was made
        WithdrawSapak = 12345,
    
        // Original transfer identifier sent when the transfer was made
        ExternalAsmachta = "UNIQUE-REF-2024-001"
    };
    
    // POST /api/v11/Financial/CancelDigitalBankTransfer
    
    // Response:
    // {
    //     "response": true
    // }
    

    Step 4: Retrieve information about transfers made through the digital wallet

    You can retrieve information about transfers made through the digital wallet by date range.

    To do so, call the following endpoint:

    POST /api/v11/Financial/GetMoneyTransfers

    Required parameters

    "Certification": "YOUR_CERTIFICATION_KEY",
    "UserName": "your_username",
    "UserPassword": "your_password",
    "WithdrawsSapakId": 12345,
    "ExternalAsmachta": "UNIQUE-REF-2024-001",
    "FromDate": "2024-01-01T00:00:00",
    "ToDate": "2024-12-31T23:59:59",
    "IsValid": true

    Parameter descriptions

    Parameter Description
    WithdrawsSapakId Supplier number of the digital wallet
    ExternalAsmachta Unique external identifier (optional for filtering)
    FromDate Start date for the search range
    ToDate End date for the search range
    IsValid Filter for valid transfers only (true)

    Request example:

    // Retrieve transfers from the digital wallet by date range
    
    var getTransfersRequest = new GetMoneyTransfersRequest
    {
        Certification = "YOUR_CERT",
        UserName = "user@example.com",
        UserPassword = "password123",
    
        // Supplier number of the digital wallet
        WithdrawsSapakId = 12345,
    
        // Search date range
        FromDate = new DateTime(2024, 1, 1),
        ToDate = new DateTime(2024, 12, 31),
    
        // null = return all transfers (valid and invalid)
        IsValid = null
    };
    
    // POST /api/v11/Financial/GetMoneyTransfers
    

    Note: You can use the IsValid parameter to filter the results:

    • true – Return valid transfers only.
    • false – Return only transfers that failed or were canceled.
    • null – Return all transfers without filtering.

    Summary

    Working with a digital wallet through the API includes four main operations:

    1. Opening a digital wallet for an existing supplier.
    2. Making fund transfers from the digital wallet.
    3. Canceling transfers that have not yet been processed.
    4. Retrieving information and reports about completed transfers.

    We recommend storing the interface certificate and login details securely and using unique ExternalAsmachta identifiers for each transfer for tracking and monitoring purposes.

    Was this article helpful?