Skip to content

[Bug]: Can't make on account sale #251

@gp381

Description

@gp381

Issue Search Confirmation

  • I have searched existing open and closed issues and this is not a duplicate

Bug Description

What happened?

When I try to make an on account sales invoice, I get the following error

Validation Error

At least one mode of payment is required for POS invoice.

Type: ValidationError

What did you expect to happen instead?

it should complete the sales invoice successfully.

Steps to Reproduce

  1. add an item to the cart.
  2. click on checkout.
  3. select the on account payment method account.
  4. click on Pay On Account button

Expected Behavior

the system should create the invoice successfully without any issue.

Actual Behavior

I get this error

Validation Error

At least one mode of payment is required for POS invoice.

Type: ValidationError

Image

Screenshots / Screen Recordings

Screencast.From.2026-05-09.23-38-58.mp4

Browser Console Errors

Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 121, in application
    response = frappe.api.handle(request)
  File "apps/frappe/frappe/api/__init__.py", line 63, in handle
    data = endpoint(**arguments)
  File "apps/frappe/frappe/api/v1.py", line 40, in handle_rpc_call
    return frappe.handler.handle()
           ~~~~~~~~~~~~~~~~~~~~~^^
  File "apps/frappe/frappe/handler.py", line 53, in handle
    data = execute_cmd(cmd)
  File "apps/frappe/frappe/handler.py", line 86, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/__init__.py", line 1124, in call
    return fn(*args, **newargs)
  File "apps/frappe/frappe/utils/typing_validations.py", line 36, in wrapper
    return func(*args, **kwargs)
  File "apps/pos_next/pos_next/api/invoices.py", line 1388, in submit_invoice
    invoice_doc.submit()
    ~~~~~~~~~~~~~~~~~~^^
  File "apps/frappe/frappe/utils/typing_validations.py", line 36, in wrapper
    return func(*args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1270, in submit
    return self._submit()
           ~~~~~~~~~~~~^^
  File "apps/frappe/frappe/model/document.py", line 1251, in _submit
    return self.save()
           ~~~~~~~~~^^
  File "apps/frappe/frappe/model/document.py", line 518, in save
    return self._save(*args, **kwargs)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 572, in _save
    self.run_post_save_methods()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "apps/frappe/frappe/model/document.py", line 1378, in run_post_save_methods
    self.run_method("on_submit")
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 1181, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1578, in composer
    return composed(self, method, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1556, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
                              ~~^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 1178, in fn
    return method_object(*args, **kwargs)
  File "apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py", line 448, in on_submit
    self.validate_pos_paid_amount()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "apps/pos_next/pos_next/overrides/sales_invoice.py", line 145, in validate_pos_paid_amount
    super().validate_pos_paid_amount()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py", line 542, in validate_pos_paid_amount
    frappe.throw(_("At least one mode of payment is required for POS invoice."))
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/utils/messages.py", line 148, in throw
    msgprint(
    ~~~~~~~~^
    	msg,
     ^^^^
    ...<6 lines>...
    	primary_action=primary_action,
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "apps/frappe/frappe/utils/messages.py", line 109, in msgprint
    _raise_exception()
    ~~~~~~~~~~~~~~~~^^
  File "apps/frappe/frappe/utils/messages.py", line 58, in _raise_exception
    raise exc
frappe.exceptions.ValidationError: At least one mode of payment is required for POS invoice.
index-DXrQpee7.js:45:2561




submitInvoiceResource.error: Error: /api/method/pos_next.api.invoices.submit_invoice ValidationError
    NextJS 41
index-DXrQpee7.js:94:7092






Resource error details: 
Object { exc_type: "ValidationError", _server_messages: undefined, httpStatus: undefined, messages: (1) […], messagesContent: '["At least one mode of payment is required for POS invoice."]', data: undefined, exception: undefined, keys: (6) […] }
​
_server_messages: undefined
​
data: undefined
​
exc_type: "ValidationError"
​
exception: undefined
​
httpStatus: undefined
​
keys: Array(6) [ "exc_type", "exc", "response", … ]
​
messages: Array [ "At least one mode of payment is required for POS invoice." ]
​
messagesContent: '["At least one mode of payment is required for POS invoice."]'<prototype>: Object { … }
index-DXrQpee7.js:94:7170




First message: At least one mode of payment is required for POS invoice. index-DXrQpee7.js:94:7451





After attaching, error.messages: 
Array [ "At least one mode of payment is required for POS invoice." ]
index-DXrQpee7.js:94:7667


HTTP Request 1


await fetch("https://erpnext.com/api/method/pos_next.api.invoices.update_invoice", {
    "credentials": "include",
    "headers": {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:149.0) Gecko/20100101 Firefox/149.0",
        "Accept": "application/json",
        "Accept-Language": "en-US,en;q=0.9",
        "Content-Type": "application/json; charset=utf-8",
        "X-Frappe-Site-Name": "erpnext.com",
        "X-Frappe-CSRF-Token": "0fb8309af44695a39ed3c8d183c0137778731b4abd4bb8e5c0dbc72f",
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-origin",
        "Priority": "u=0"
    },
    "referrer": "https://erpnext.com/pos/",
    "body": "{\"data\":\"{\\\"doctype\\\":\\\"Sales Invoice\\\",\\\"pos_profile\\\":\\\"نقطة بيع 1\\\",\\\"posa_pos_opening_shift\\\":\\\"POSA-OS-26-0000044\\\",\\\"customer\\\":\\\"عميل دفع نقدي\\\",\\\"items\\\":[{\\\"item_code\\\":\\\"0088-15605-17030\\\",\\\"item_name\\\":\\\"ابوال مرشه زيت\\\",\\\"qty\\\":1,\\\"rate\\\":6000,\\\"price_list_rate\\\":6000,\\\"uom\\\":\\\"قطعة\\\",\\\"warehouse\\\":\\\"مخزن المحل - ع\\\",\\\"conversion_factor\\\":1,\\\"discount_percentage\\\":0,\\\"discount_amount\\\":0,\\\"pricing_rules\\\":\\\"\\\",\\\"is_rate_manually_edited\\\":0,\\\"original_rate\\\":null,\\\"is_free_item\\\":0}],\\\"payments\\\":[],\\\"discount_amount\\\":0,\\\"coupon_code\\\":null,\\\"is_pos\\\":1,\\\"update_stock\\\":1}\"}",
    "method": "POST",
    "mode": "cors"
});


HTTP Response 1


{"message":{"name":"ACC-SINV-2026-01296","owner":"Administrator","creation":"2026-05-09 23:40:06.387212","modified":"2026-05-09 23:40:06.387212","modified_by":"Administrator","docstatus":0,"idx":0,"naming_series":"ACC-SINV-.YYYY.-","customer":"عميل دفع نقدي","customer_name":"عميل دفع نقدي","tax_id":null,"company":"لقطع الغيار","company_tax_id":null,"posting_date":"2026-05-09","posting_time":"23:40:06.406926","set_posting_time":0,"due_date":"2026-05-09","posa_return_valid_upto":null,"is_pos":1,"pos_profile":"نقطة بيع 1","posa_pos_opening_shift":"POSA-OS-26-0000044","posa_is_printed":0,"is_consolidated":0,"is_return":0,"return_against":null,"update_outstanding_for_self":0,"update_billed_amount_in_sales_order":0,"update_billed_amount_in_delivery_note":1,"is_debit_note":0,"apply_tds":0,"amended_from":null,"is_created_using_pos":0,"pos_closing_entry":null,"has_subcontracted":0,"cost_center":"Main - ع","project":null,"currency":"YER","conversion_rate":0.00235294,"selling_price_list":"Standard Selling","price_list_currency":"YER","plc_conversion_rate":0.00235294,"ignore_pricing_rule":1,"scan_barcode":null,"last_scanned_warehouse":null,"update_stock":1,"set_warehouse":"مخزن المحل - ع","set_target_warehouse":null,"total_qty":1.0,"total_net_weight":0.0,"base_total":14.11764,"base_net_total":14.11764,"total":6000.0,"net_total":6000.0,"tax_category":"","taxes_and_charges":null,"posa_delivery_charges":null,"posa_delivery_charges_rate":0.0,"shipping_rule":null,"incoterm":null,"named_place":null,"base_total_taxes_and_charges":0.0,"total_taxes_and_charges":0.0,"base_grand_total":14.11764,"base_rounding_adjustment":0.0,"base_rounded_total":0.0,"base_in_words":"SAR Fourteen and Twelve Halala only.","grand_total":6000.0,"rounding_adjustment":0.0,"use_company_roundoff_cost_center":0,"rounded_total":0.0,"in_words":"YER Six Thousand only.","total_advance":0.0,"outstanding_amount":14.11764,"disable_rounded_total":1,"tax_withholding_group":null,"ignore_tax_withholding_threshold":0,"override_tax_withholding_entries":0,"apply_discount_on":"Grand Total","base_discount_amount":0.0,"coupon_code":null,"is_cash_or_non_trade_discount":0,"additional_discount_account":null,"additional_discount_percentage":0.0,"discount_amount":0.0,"other_charges_calculation":null,"total_billing_hours":0.0,"total_billing_amount":0.0,"cash_bank_account":null,"base_paid_amount":0.0,"paid_amount":0.0,"base_change_amount":0.0,"change_amount":0.0,"account_for_change_amount":"1110 - Cash - ع","allocate_advances_automatically":0,"only_include_allocated_payments":0,"write_off_amount":0.0,"base_write_off_amount":0.0,"write_off_outstanding_amount_automatically":0,"write_off_account":"5201 - Administrative Expenses - ع","write_off_cost_center":"Main - ع","redeem_loyalty_points":0,"loyalty_points":0,"loyalty_amount":0.0,"loyalty_program":null,"dont_create_loyalty_points":0,"loyalty_redemption_account":null,"loyalty_redemption_cost_center":null,"customer_address":null,"address_display":null,"contact_person":null,"contact_display":null,"contact_mobile":null,"contact_email":null,"territory":"Yemen","shipping_address_name":null,"shipping_address":null,"dispatch_address_name":null,"dispatch_address":null,"company_address":null,"company_address_display":null,"company_contact_person":null,"ignore_default_payment_terms_template":0,"payment_terms_template":"","tc_name":null,"terms":null,"po_no":"","po_date":null,"debit_to":"1310 - Debtors - ع","party_account_currency":"SAR","is_opening":"No","unrealized_profit_loss_account":null,"against_income_account":"4110 - Sales - ع","posa_notes":null,"posa_delivery_date":null,"posa_authorization_code":null,"sales_partner":null,"amount_eligible_for_commission":14.11764,"commission_rate":0.0,"total_commission":0.0,"letter_head":null,"group_same_items":0,"select_print_heading":null,"language":"en","subscription":null,"from_date":null,"auto_repeat":null,"to_date":null,"status":"Draft","inter_company_invoice_reference":null,"represents_company":null,"customer_group":"All Customer Groups","utm_source":null,"utm_campaign":null,"utm_medium":null,"utm_content":null,"is_internal_customer":0,"is_discounted":0,"remarks":null,"doctype":"Sales Invoice","items":[{"name":"540g9gm865","owner":"Administrator","creation":"2026-05-09 23:40:06.387212","modified":"2026-05-09 23:40:06.387212","modified_by":"Administrator","docstatus":0,"idx":1,"barcode":null,"has_item_scanned":0,"item_code":"0088-15605-17030","posa_notes":null,"item_name":"ابوال مرشه زيت","posa_row_id":null,"name_overridden":0,"posa_delivery_date":null,"customer_item_code":null,"description":"","item_group":"قطع غيار سيارات","brand":null,"image":"","qty":1.0,"stock_uom":"قطعة","uom":"قطعة","conversion_factor":1.0,"stock_qty":1.0,"price_list_rate":6000.0,"base_price_list_rate":14.11764,"margin_type":"","margin_rate_or_amount":0.0,"rate_with_margin":0.0,"discount_percentage":0.0,"discount_amount":0.0,"distributed_discount_amount":0.0,"base_rate_with_margin":0.0,"rate":6000.0,"amount":6000.0,"item_tax_template":null,"tax_withholding_category":null,"base_rate":14.11764,"base_amount":14.11764,"pricing_rules":"","posa_offers":null,"posa_offer_applied":0,"posa_is_offer":0,"posa_is_replace":null,"stock_uom_rate":6000.0,"is_free_item":0,"apply_tds":1,"grant_commission":1,"net_rate":6000.0,"net_amount":6000.0,"base_net_rate":14.11764,"base_net_amount":14.11764,"delivered_by_supplier":0,"income_account":"4110 - Sales - ع","is_fixed_asset":0,"asset":null,"finance_book":null,"expense_account":"5111 - Cost of Goods Sold - ع","discount_account":null,"deferred_revenue_account":null,"service_stop_date":null,"enable_deferred_revenue":0,"service_start_date":null,"service_end_date":null,"weight_per_unit":0.0,"total_weight":0.0,"weight_uom":null,"warehouse":"مخزن المحل - ع","target_warehouse":null,"quality_inspection":null,"serial_and_batch_bundle":null,"use_serial_batch_fields":0,"allow_zero_valuation_rate":0,"incoming_rate":12.0,"item_tax_rate":"{}","actual_batch_qty":0.0,"serial_no":null,"batch_no":null,"actual_qty":-4.0,"company_total_stock":0.0,"sales_order":null,"so_detail":null,"sales_invoice_item":null,"delivery_note":null,"dn_detail":null,"delivered_qty":0.0,"pos_invoice":null,"pos_invoice_item":null,"scio_detail":null,"purchase_order":null,"purchase_order_item":null,"cost_center":"Main - ع","project":null,"page_break":0,"parent":"ACC-SINV-2026-01296","parentfield":"items","parenttype":"Sales Invoice","doctype":"Sales Invoice Item","__unsaved":1}],"taxes":[],"tax_withholding_entries":[],"item_wise_tax_details":[],"pricing_rules":[],"packed_items":[],"timesheets":[],"payments":[],"advances":[],"payment_schedule":[],"sales_team":[],"posa_coupons":[],"posa_offers":[]}}



HTTP Request 2


await fetch("https://erpnext.com/api/method/pos_next.api.invoices.submit_invoice", {
    "credentials": "include",
    "headers": {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:149.0) Gecko/20100101 Firefox/149.0",
        "Accept": "application/json",
        "Accept-Language": "en-US,en;q=0.9",
        "Content-Type": "application/json; charset=utf-8",
        "X-Frappe-Site-Name": "erpnext.com",
        "X-Frappe-CSRF-Token": "0fb8309af44695a39ed3c8d183c0137778731b4abd4bb8e5c0dbc72f",
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-origin",
        "Priority": "u=4"
    },
    "referrer": "https://erpnext.com/pos/",
    "body": "{\"invoice\":\"{\\\"name\\\":\\\"ACC-SINV-2026-01296\\\",\\\"owner\\\":\\\"Administrator\\\",\\\"creation\\\":\\\"2026-05-09 23:40:06.387212\\\",\\\"modified\\\":\\\"2026-05-09 23:40:06.387212\\\",\\\"modified_by\\\":\\\"Administrator\\\",\\\"docstatus\\\":0,\\\"idx\\\":0,\\\"naming_series\\\":\\\"ACC-SINV-.YYYY.-\\\",\\\"customer\\\":\\\"عميل دفع نقدي\\\",\\\"customer_name\\\":\\\"عميل دفع نقدي\\\",\\\"tax_id\\\":null,\\\"company\\\":\\\"لقطع الغيار\\\",\\\"company_tax_id\\\":null,\\\"posting_date\\\":\\\"2026-05-09\\\",\\\"posting_time\\\":\\\"23:40:06.406926\\\",\\\"set_posting_time\\\":0,\\\"due_date\\\":\\\"2026-05-09\\\",\\\"posa_return_valid_upto\\\":null,\\\"is_pos\\\":1,\\\"pos_profile\\\":\\\"نقطة بيع 1\\\",\\\"posa_pos_opening_shift\\\":\\\"POSA-OS-26-0000044\\\",\\\"posa_is_printed\\\":0,\\\"is_consolidated\\\":0,\\\"is_return\\\":0,\\\"return_against\\\":null,\\\"update_outstanding_for_self\\\":0,\\\"update_billed_amount_in_sales_order\\\":0,\\\"update_billed_amount_in_delivery_note\\\":1,\\\"is_debit_note\\\":0,\\\"apply_tds\\\":0,\\\"amended_from\\\":null,\\\"is_created_using_pos\\\":0,\\\"pos_closing_entry\\\":null,\\\"has_subcontracted\\\":0,\\\"cost_center\\\":\\\"Main - ع\\\",\\\"project\\\":null,\\\"currency\\\":\\\"YER\\\",\\\"conversion_rate\\\":0.00235294,\\\"selling_price_list\\\":\\\"Standard Selling\\\",\\\"price_list_currency\\\":\\\"YER\\\",\\\"plc_conversion_rate\\\":0.00235294,\\\"ignore_pricing_rule\\\":1,\\\"scan_barcode\\\":null,\\\"last_scanned_warehouse\\\":null,\\\"update_stock\\\":1,\\\"set_warehouse\\\":\\\"مخزن المحل - ع\\\",\\\"set_target_warehouse\\\":null,\\\"total_qty\\\":1,\\\"total_net_weight\\\":0,\\\"base_total\\\":14.11764,\\\"base_net_total\\\":14.11764,\\\"total\\\":6000,\\\"net_total\\\":6000,\\\"tax_category\\\":\\\"\\\",\\\"taxes_and_charges\\\":null,\\\"posa_delivery_charges\\\":null,\\\"posa_delivery_charges_rate\\\":0,\\\"shipping_rule\\\":null,\\\"incoterm\\\":null,\\\"named_place\\\":null,\\\"base_total_taxes_and_charges\\\":0,\\\"total_taxes_and_charges\\\":0,\\\"base_grand_total\\\":14.11764,\\\"base_rounding_adjustment\\\":0,\\\"base_rounded_total\\\":0,\\\"base_in_words\\\":\\\"SAR Fourteen and Twelve Halala only.\\\",\\\"grand_total\\\":6000,\\\"rounding_adjustment\\\":0,\\\"use_company_roundoff_cost_center\\\":0,\\\"rounded_total\\\":0,\\\"in_words\\\":\\\"YER Six Thousand only.\\\",\\\"total_advance\\\":0,\\\"outstanding_amount\\\":14.11764,\\\"disable_rounded_total\\\":1,\\\"tax_withholding_group\\\":null,\\\"ignore_tax_withholding_threshold\\\":0,\\\"override_tax_withholding_entries\\\":0,\\\"apply_discount_on\\\":\\\"Grand Total\\\",\\\"base_discount_amount\\\":0,\\\"coupon_code\\\":null,\\\"is_cash_or_non_trade_discount\\\":0,\\\"additional_discount_account\\\":null,\\\"additional_discount_percentage\\\":0,\\\"discount_amount\\\":0,\\\"other_charges_calculation\\\":null,\\\"total_billing_hours\\\":0,\\\"total_billing_amount\\\":0,\\\"cash_bank_account\\\":null,\\\"base_paid_amount\\\":0,\\\"paid_amount\\\":0,\\\"base_change_amount\\\":0,\\\"change_amount\\\":0,\\\"account_for_change_amount\\\":\\\"1110 - Cash - ع\\\",\\\"allocate_advances_automatically\\\":0,\\\"only_include_allocated_payments\\\":0,\\\"write_off_amount\\\":0,\\\"base_write_off_amount\\\":0,\\\"write_off_outstanding_amount_automatically\\\":0,\\\"write_off_account\\\":\\\"5201 - Administrative Expenses - ع\\\",\\\"write_off_cost_center\\\":\\\"Main - ع\\\",\\\"redeem_loyalty_points\\\":0,\\\"loyalty_points\\\":0,\\\"loyalty_amount\\\":0,\\\"loyalty_program\\\":null,\\\"dont_create_loyalty_points\\\":0,\\\"loyalty_redemption_account\\\":null,\\\"loyalty_redemption_cost_center\\\":null,\\\"customer_address\\\":null,\\\"address_display\\\":null,\\\"contact_person\\\":null,\\\"contact_display\\\":null,\\\"contact_mobile\\\":null,\\\"contact_email\\\":null,\\\"territory\\\":\\\"Yemen\\\",\\\"shipping_address_name\\\":null,\\\"shipping_address\\\":null,\\\"dispatch_address_name\\\":null,\\\"dispatch_address\\\":null,\\\"company_address\\\":null,\\\"company_address_display\\\":null,\\\"company_contact_person\\\":null,\\\"ignore_default_payment_terms_template\\\":0,\\\"payment_terms_template\\\":\\\"\\\",\\\"tc_name\\\":null,\\\"terms\\\":null,\\\"po_no\\\":\\\"\\\",\\\"po_date\\\":null,\\\"debit_to\\\":\\\"1310 - Debtors - ع\\\",\\\"party_account_currency\\\":\\\"SAR\\\",\\\"is_opening\\\":\\\"No\\\",\\\"unrealized_profit_loss_account\\\":null,\\\"against_income_account\\\":\\\"4110 - Sales - ع\\\",\\\"posa_notes\\\":null,\\\"posa_delivery_date\\\":null,\\\"posa_authorization_code\\\":null,\\\"sales_partner\\\":null,\\\"amount_eligible_for_commission\\\":14.11764,\\\"commission_rate\\\":0,\\\"total_commission\\\":0,\\\"letter_head\\\":null,\\\"group_same_items\\\":0,\\\"select_print_heading\\\":null,\\\"language\\\":\\\"en\\\",\\\"subscription\\\":null,\\\"from_date\\\":null,\\\"auto_repeat\\\":null,\\\"to_date\\\":null,\\\"status\\\":\\\"Draft\\\",\\\"inter_company_invoice_reference\\\":null,\\\"represents_company\\\":null,\\\"customer_group\\\":\\\"All Customer Groups\\\",\\\"utm_source\\\":null,\\\"utm_campaign\\\":null,\\\"utm_medium\\\":null,\\\"utm_content\\\":null,\\\"is_internal_customer\\\":0,\\\"is_discounted\\\":0,\\\"remarks\\\":null,\\\"doctype\\\":\\\"Sales Invoice\\\",\\\"items\\\":[{\\\"name\\\":\\\"540g9gm865\\\",\\\"owner\\\":\\\"Administrator\\\",\\\"creation\\\":\\\"2026-05-09 23:40:06.387212\\\",\\\"modified\\\":\\\"2026-05-09 23:40:06.387212\\\",\\\"modified_by\\\":\\\"Administrator\\\",\\\"docstatus\\\":0,\\\"idx\\\":1,\\\"barcode\\\":null,\\\"has_item_scanned\\\":0,\\\"item_code\\\":\\\"0088-15605-17030\\\",\\\"posa_notes\\\":null,\\\"item_name\\\":\\\"ابوال مرشه زيت\\\",\\\"posa_row_id\\\":null,\\\"name_overridden\\\":0,\\\"posa_delivery_date\\\":null,\\\"customer_item_code\\\":null,\\\"description\\\":\\\"\\\",\\\"item_group\\\":\\\"قطع غيار سيارات\\\",\\\"brand\\\":null,\\\"image\\\":\\\"\\\",\\\"qty\\\":1,\\\"stock_uom\\\":\\\"قطعة\\\",\\\"uom\\\":\\\"قطعة\\\",\\\"conversion_factor\\\":1,\\\"stock_qty\\\":1,\\\"price_list_rate\\\":6000,\\\"base_price_list_rate\\\":14.11764,\\\"margin_type\\\":\\\"\\\",\\\"margin_rate_or_amount\\\":0,\\\"rate_with_margin\\\":0,\\\"discount_percentage\\\":0,\\\"discount_amount\\\":0,\\\"distributed_discount_amount\\\":0,\\\"base_rate_with_margin\\\":0,\\\"rate\\\":6000,\\\"amount\\\":6000,\\\"item_tax_template\\\":null,\\\"tax_withholding_category\\\":null,\\\"base_rate\\\":14.11764,\\\"base_amount\\\":14.11764,\\\"pricing_rules\\\":\\\"\\\",\\\"posa_offers\\\":null,\\\"posa_offer_applied\\\":0,\\\"posa_is_offer\\\":0,\\\"posa_is_replace\\\":null,\\\"stock_uom_rate\\\":6000,\\\"is_free_item\\\":0,\\\"apply_tds\\\":1,\\\"grant_commission\\\":1,\\\"net_rate\\\":6000,\\\"net_amount\\\":6000,\\\"base_net_rate\\\":14.11764,\\\"base_net_amount\\\":14.11764,\\\"delivered_by_supplier\\\":0,\\\"income_account\\\":\\\"4110 - Sales - ع\\\",\\\"is_fixed_asset\\\":0,\\\"asset\\\":null,\\\"finance_book\\\":null,\\\"expense_account\\\":\\\"5111 - Cost of Goods Sold - ع\\\",\\\"discount_account\\\":null,\\\"deferred_revenue_account\\\":null,\\\"service_stop_date\\\":null,\\\"enable_deferred_revenue\\\":0,\\\"service_start_date\\\":null,\\\"service_end_date\\\":null,\\\"weight_per_unit\\\":0,\\\"total_weight\\\":0,\\\"weight_uom\\\":null,\\\"warehouse\\\":\\\"مخزن المحل - ع\\\",\\\"target_warehouse\\\":null,\\\"quality_inspection\\\":null,\\\"serial_and_batch_bundle\\\":null,\\\"use_serial_batch_fields\\\":0,\\\"allow_zero_valuation_rate\\\":0,\\\"incoming_rate\\\":12,\\\"item_tax_rate\\\":\\\"{}\\\",\\\"actual_batch_qty\\\":0,\\\"serial_no\\\":null,\\\"batch_no\\\":null,\\\"actual_qty\\\":-4,\\\"company_total_stock\\\":0,\\\"sales_order\\\":null,\\\"so_detail\\\":null,\\\"sales_invoice_item\\\":null,\\\"delivery_note\\\":null,\\\"dn_detail\\\":null,\\\"delivered_qty\\\":0,\\\"pos_invoice\\\":null,\\\"pos_invoice_item\\\":null,\\\"scio_detail\\\":null,\\\"purchase_order\\\":null,\\\"purchase_order_item\\\":null,\\\"cost_center\\\":\\\"Main - ع\\\",\\\"project\\\":null,\\\"page_break\\\":0,\\\"parent\\\":\\\"ACC-SINV-2026-01296\\\",\\\"parentfield\\\":\\\"items\\\",\\\"parenttype\\\":\\\"Sales Invoice\\\",\\\"doctype\\\":\\\"Sales Invoice Item\\\",\\\"__unsaved\\\":1}],\\\"taxes\\\":[],\\\"tax_withholding_entries\\\":[],\\\"item_wise_tax_details\\\":[],\\\"pricing_rules\\\":[],\\\"packed_items\\\":[],\\\"timesheets\\\":[],\\\"payments\\\":[],\\\"advances\\\":[],\\\"payment_schedule\\\":[],\\\"sales_team\\\":[],\\\"posa_coupons\\\":[],\\\"posa_offers\\\":[]}\",\"data\":\"{\\\"change_amount\\\":0,\\\"write_off_amount\\\":0}\"}",
    "method": "POST",
    "mode": "cors"
});


HTTP Response 2


{"exception":"frappe.exceptions.ValidationError: At least one mode of payment is required for POS invoice.","exc_type":"ValidationError","_exc_source":"pos_next (app)","exc":"[\"Traceback (most recent call last):\\n  File \\\"apps/frappe/frappe/app.py\\\", line 121, in application\\n    response = frappe.api.handle(request)\\n  File \\\"apps/frappe/frappe/api/__init__.py\\\", line 63, in handle\\n    data = endpoint(**arguments)\\n  File \\\"apps/frappe/frappe/api/v1.py\\\", line 40, in handle_rpc_call\\n    return frappe.handler.handle()\\n           ~~~~~~~~~~~~~~~~~~~~~^^\\n  File \\\"apps/frappe/frappe/handler.py\\\", line 53, in handle\\n    data = execute_cmd(cmd)\\n  File \\\"apps/frappe/frappe/handler.py\\\", line 86, in execute_cmd\\n    return frappe.call(method, **frappe.form_dict)\\n           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"apps/frappe/frappe/__init__.py\\\", line 1124, in call\\n    return fn(*args, **newargs)\\n  File \\\"apps/frappe/frappe/utils/typing_validations.py\\\", line 36, in wrapper\\n    return func(*args, **kwargs)\\n  File \\\"apps/pos_next/pos_next/api/invoices.py\\\", line 1388, in submit_invoice\\n    invoice_doc.submit()\\n    ~~~~~~~~~~~~~~~~~~^^\\n  File \\\"apps/frappe/frappe/utils/typing_validations.py\\\", line 36, in wrapper\\n    return func(*args, **kwargs)\\n  File \\\"apps/frappe/frappe/model/document.py\\\", line 1270, in submit\\n    return self._submit()\\n           ~~~~~~~~~~~~^^\\n  File \\\"apps/frappe/frappe/model/document.py\\\", line 1251, in _submit\\n    return self.save()\\n           ~~~~~~~~~^^\\n  File \\\"apps/frappe/frappe/model/document.py\\\", line 518, in save\\n    return self._save(*args, **kwargs)\\n           ~~~~~~~~~~^^^^^^^^^^^^^^^^^\\n  File \\\"apps/frappe/frappe/model/document.py\\\", line 572, in _save\\n    self.run_post_save_methods()\\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^\\n  File \\\"apps/frappe/frappe/model/document.py\\\", line 1378, in run_post_save_methods\\n    self.run_method(\\\"on_submit\\\")\\n    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\\n  File \\\"apps/frappe/frappe/model/document.py\\\", line 1181, in run_method\\n    out = Document.hook(fn)(self, *args, **kwargs)\\n  File \\\"apps/frappe/frappe/model/document.py\\\", line 1578, in composer\\n    return composed(self, method, *args, **kwargs)\\n  File \\\"apps/frappe/frappe/model/document.py\\\", line 1556, in runner\\n    add_to_return_value(self, fn(self, *args, **kwargs))\\n                              ~~^^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"apps/frappe/frappe/model/document.py\\\", line 1178, in fn\\n    return method_object(*args, **kwargs)\\n  File \\\"apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py\\\", line 448, in on_submit\\n    self.validate_pos_paid_amount()\\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^\\n  File \\\"apps/pos_next/pos_next/overrides/sales_invoice.py\\\", line 145, in validate_pos_paid_amount\\n    super().validate_pos_paid_amount()\\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^\\n  File \\\"apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py\\\", line 542, in validate_pos_paid_amount\\n    frappe.throw(_(\\\"At least one mode of payment is required for POS invoice.\\\"))\\n    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \\\"apps/frappe/frappe/utils/messages.py\\\", line 148, in throw\\n    msgprint(\\n    ~~~~~~~~^\\n    \\tmsg,\\n     ^^^^\\n    ...<6 lines>...\\n    \\tprimary_action=primary_action,\\n     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n    )\\n    ^\\n  File \\\"apps/frappe/frappe/utils/messages.py\\\", line 109, in msgprint\\n    _raise_exception()\\n    ~~~~~~~~~~~~~~~~^^\\n  File \\\"apps/frappe/frappe/utils/messages.py\\\", line 58, in _raise_exception\\n    raise exc\\nfrappe.exceptions.ValidationError: At least one mode of payment is required for POS invoice.\\n\"]","_server_messages":"[\"{\\\"message\\\":\\\"At least one mode of payment is required for POS invoice.\\\",\\\"as_table\\\":false,\\\"title\\\":\\\"Message\\\",\\\"indicator\\\":\\\"red\\\",\\\"raise_exception\\\":1,\\\"__frappe_exc_id\\\":\\\"d49a10b57fad62979a522f403d67f3f1830b6ee00cfb42d6bc7a6e0b\\\"}\"]"}

POS Next Version

1.13.0 (Latest)

Exact Version (if known)

1.16.0

Frappe Framework Version

16.5.0

ERPNext Version

16.4.1

Browser

Firefox

Browser Version

149.0.2

Operating System

Ubuntu/Debian Linux

Deployment Type

Self-hosted (Production)

Bug Frequency

Always (100% reproducible)

Offline Mode

Not sure

Additional Context

it used to work just fine, but now it's not working anymore.

Server Logs (if applicable)

Pre-submission Checklist

  • I have provided screenshots showing the issue
  • I have included my application version information
  • I have provided clear steps to reproduce the issue
  • I have checked browser console for errors and included them if present

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstale

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions