diff --git a/code/game/machinery/accounting.dm b/code/game/machinery/accounting.dm
new file mode 100644
index 00000000000..90e074285bf
--- /dev/null
+++ b/code/game/machinery/accounting.dm
@@ -0,0 +1,71 @@
+/obj/machinery/accounting
+ name = "account registration device"
+ desc = "A machine that allows heads of staff to create a new bank account after inserting an ID."
+ icon = 'icons/obj/stationobjs.dmi'
+ icon_state = "recharger"
+ circuit = /obj/item/circuitboard/machine/accounting
+ pass_flags = PASSTABLE
+ req_one_access = list(ACCESS_HEADS, ACCESS_CHANGE_IDS)
+ var/obj/item/card/id/inserted_id
+
+/obj/machinery/accounting/Destroy()
+ . = ..()
+ if(inserted_id)
+ remove_card()
+
+/obj/machinery/accounting/attackby(obj/item/I, mob/living/user, params)
+ if(isidcard(I))
+ var/obj/item/card/id/new_id = I
+ if(inserted_id)
+ to_chat(user, "[src] already has a card inserted!")
+ return
+ if(new_id.registered_account)
+ to_chat(user, "[src] already has a bank account!")
+ return
+ if(!anchored || !user.transferItemToLoc(I,src))
+ to_chat(user, "\the [src] blinks red as you try to insert the ID Card!")
+ return
+ inserted_id = new_id
+ RegisterSignal(inserted_id, COMSIG_PARENT_QDELETING, .proc/remove_card)
+ var/datum/bank_account/bank_account = new /datum/bank_account(inserted_id.registered_name)
+ inserted_id.registered_account = bank_account
+ playsound(loc, 'sound/machines/synth_yes.ogg', 30 , TRUE)
+ update_icon()
+ return
+ return ..()
+
+
+/obj/machinery/accounting/attack_hand(mob/user)
+ . = ..()
+ if(.)
+ return
+ if(!inserted_id)
+ return
+
+ user.put_in_hands(inserted_id)
+ inserted_id.add_fingerprint(user)
+ user.visible_message("[user] removes [inserted_id] from \the [src].", "You remove [inserted_id] from \the [src].")
+ remove_card()
+
+///Used to clean up variables after the card has been removed, unregisters the removal signal, sets inserted ID to null, and updates the icon.
+/obj/machinery/accounting/proc/remove_card()
+ UnregisterSignal(inserted_id, COMSIG_PARENT_QDELETING)
+ inserted_id = null
+ update_icon()
+
+/obj/machinery/accounting/update_overlays()
+ . = ..()
+ SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
+ luminosity = 0
+ if(machine_stat & (NOPOWER|BROKEN) || !anchored)
+ return
+ if(panel_open)
+ SSvis_overlays.add_vis_overlay(src, icon, "recharger-open", layer, plane, dir, alpha)
+ return
+ luminosity = 1
+ if(inserted_id)
+ SSvis_overlays.add_vis_overlay(src, icon, "recharger-full", layer, plane, dir, alpha)
+ SSvis_overlays.add_vis_overlay(src, icon, "recharger-full", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
+ else
+ SSvis_overlays.add_vis_overlay(src, icon, "recharger-empty", layer, plane, dir, alpha)
+ SSvis_overlays.add_vis_overlay(src, icon, "recharger-empty", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm
index bb941a1cf03..583632d581b 100644
--- a/code/game/objects/items/circuitboards/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm
@@ -587,6 +587,15 @@
/obj/item/stock_parts/micro_laser = 1
)
+/obj/item/circuitboard/machine/accounting
+ name = "Account Registration Device (Machine Board)"
+ icon_state = "command"
+ build_path = /obj/machinery/accounting
+ req_components = list(
+ /obj/item/stock_parts/card_reader = 1,
+ /obj/item/stock_parts/scanning_module = 1
+ )
+
//Medical
/obj/item/circuitboard/machine/chem_dispenser
diff --git a/code/modules/economy/account.dm b/code/modules/economy/account.dm
index 3fc9115f403..68033c71d6a 100644
--- a/code/modules/economy/account.dm
+++ b/code/modules/economy/account.dm
@@ -52,6 +52,8 @@
return FALSE
/datum/bank_account/proc/payday(amt_of_paychecks, free = FALSE)
+ if(!account_job)
+ return
var/money_to_transfer = account_job.paycheck * payday_modifier * amt_of_paychecks
if(free)
adjust_money(money_to_transfer)
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index ed90b28e523..7b4df5f02c3 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -646,3 +646,11 @@
build_path = /obj/item/circuitboard/machine/skill_station
category = list ("Misc. Machinery")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SERVICE
+
+/datum/design/board/accounting
+ name = "Machine Design (Account Registration Device)"
+ desc = "The circuit board for a Account Registration Device."
+ id = "accounting"
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+ build_path = /obj/item/circuitboard/machine/accounting
+ category = list ("Misc. Machinery")
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 48642bbfed7..3c605f85eb3 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -418,7 +418,7 @@
display_name = "Computerized Recordkeeping"
description = "Organized record databases and how they're used."
prereq_ids = list("comptech")
- design_ids = list("secdata", "med_data", "prisonmanage", "vendor", "automated_announcement")
+ design_ids = list("secdata", "med_data", "prisonmanage", "vendor", "automated_announcement", "accounting")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
export_price = 2000
diff --git a/tgstation.dme b/tgstation.dme
index 2e50066afdf..ca63926c201 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -179,8 +179,8 @@
#include "code\_globalvars\lists\achievements.dm"
#include "code\_globalvars\lists\admin.dm"
#include "code\_globalvars\lists\client.dm"
-#include "code\_globalvars\lists\construction.dm"
#include "code\_globalvars\lists\color.dm"
+#include "code\_globalvars\lists\construction.dm"
#include "code\_globalvars\lists\flavor_misc.dm"
#include "code\_globalvars\lists\keybindings.dm"
#include "code\_globalvars\lists\maintenance_loot.dm"
@@ -729,6 +729,7 @@
#include "code\game\gamemodes\traitor\traitor.dm"
#include "code\game\gamemodes\wizard\wizard.dm"
#include "code\game\machinery\_machinery.dm"
+#include "code\game\machinery\accounting.dm"
#include "code\game\machinery\ai_slipper.dm"
#include "code\game\machinery\airlock_control.dm"
#include "code\game\machinery\announcement_system.dm"