diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 3ef699f5bc0..f36085795cf 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -146,11 +146,35 @@
/obj/item/card/id/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/holochip))
- var/obj/item/holochip/holochip = W
- if(registered_account)
- registered_account.adjust_money(holochip.credits)
- to_chat(user, "You insert [holochip] into [src], adding [holochip.credits] credits to your account.")
- qdel(holochip)
+ insert_money(W, user)
+ return
+ else if(istype(W, /obj/item/stack/spacecash))
+ insert_money(W, user, TRUE)
+ return
+ else if(istype(W, /obj/item/coin))
+ insert_money(W, user, TRUE)
+ return
+ else
+ return ..()
+
+/obj/item/card/id/proc/insert_money(obj/item/I, mob/user, physical_currency)
+ var/cash_money = I.get_item_credit_value()
+ if(!cash_money)
+ to_chat(user, "[I] doesn't seem to be worth anything!")
+ return
+
+ if(!registered_account)
+ to_chat(user, "[src] doesn't have a linked account to deposit [I] into!")
+ return
+
+ registered_account.adjust_money(cash_money)
+ if(physical_currency)
+ to_chat(user, "You stuff [I] into [src]. It disappears in a small puff of bluespace smoke, adding [cash_money] credits to the linked account.")
+ else
+ to_chat(user, "You insert [I] into [src], adding [cash_money] credits to the linked account.")
+
+ to_chat(user, "The linked account now reports a balance of $[registered_account.account_balance].")
+ qdel(I)
/obj/item/card/id/proc/alt_click_can_use_id(mob/living/user)
diff --git a/code/game/objects/items/credit_holochip.dm b/code/game/objects/items/credit_holochip.dm
index a62f2cc559b..2f10238deba 100644
--- a/code/game/objects/items/credit_holochip.dm
+++ b/code/game/objects/items/credit_holochip.dm
@@ -18,6 +18,9 @@
to_chat(user, "It's loaded with [credits] credit[( credits > 1 ) ? "s" : ""]")
to_chat(user, "Alt-Click to split.")
+/obj/item/holochip/get_item_credit_value()
+ return credits
+
/obj/item/holochip/update_icon()
name = "\improper [credits] credit holochip"
var/rounded_credits = credits
diff --git a/code/game/objects/items/stacks/cash.dm b/code/game/objects/items/stacks/cash.dm
index bd3e4b5b566..a06b96ad9c9 100644
--- a/code/game/objects/items/stacks/cash.dm
+++ b/code/game/objects/items/stacks/cash.dm
@@ -18,9 +18,11 @@
update_desc()
/obj/item/stack/spacecash/proc/update_desc()
- var/total_worth = amount*value
+ var/total_worth = get_item_credit_value()
desc = "It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
+/obj/item/stack/spacecash/get_item_credit_value()
+ return (amount*value)
/obj/item/stack/spacecash/merge(obj/item/stack/S)
. = ..()
diff --git a/code/modules/economy/_economy.dm b/code/modules/economy/_economy.dm
new file mode 100644
index 00000000000..e421a939a88
--- /dev/null
+++ b/code/modules/economy/_economy.dm
@@ -0,0 +1,3 @@
+
+/obj/item/proc/get_item_credit_value()
+ return
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index ec6c11464e6..59370237db6 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -322,6 +322,9 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
var/value = 1
var/coinflip
+/obj/item/coin/get_item_credit_value()
+ return value
+
/obj/item/coin/suicide_act(mob/living/user)
user.visible_message("[user] contemplates suicide with \the [src]!")
if (!attack_self(user))
diff --git a/tgstation.dme b/tgstation.dme
index 31d10413156..b2e2b1ea691 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1525,6 +1525,7 @@
#include "code\modules\detectivework\evidence.dm"
#include "code\modules\detectivework\footprints_and_rag.dm"
#include "code\modules\detectivework\scanner.dm"
+#include "code\modules\economy\_economy.dm"
#include "code\modules\economy\account.dm"
#include "code\modules\economy\pay_stand.dm"
#include "code\modules\emoji\emoji_parse.dm"