For reasons too complex and stupid to go into, I've recently been looking at item values and the 5e currency system. As I understand it, 1pp = 10gp = 20ep = 100sp = 1000cp, which places 1cp as the smallest representable value. However, the price per unit of Sling Bullets is 1/0.2cp (source: PHB page 150). With that in mind, how would a particularly difficult player go about purchasing a single Sling Bullet? Break a copper piece into fifths, perhaps?

Thanks for the answers, they're very helpful - for DMs. I didn't put this in the question originally because I didn't think it was important, but I can see now that was wrong. What I'm actually doing is building a relational database for D&D objects. So, when inserting a row into the item table for Sling Bullets, I wanted to follow the example of Arrows and Crossbow Bolts and put them in as a single object with a single value, although in the PHB itself only a price for Sling Bullets (20) is given.

Given the answers, I'm going to move ahead by only listing the value for an amount of an item that is at least 1cp (Sling Bullets (5) in this case). I'm going to accept an answer based on the fact that it lead me to this resolution by explaining what would be most helpful to a DM. However, if this new information leads to new suggestions, I'm open to those as well.

  • \$\begingroup\$ @fabian See this FAQ for why your comment was removed. Thanks! \$\endgroup\$ – SevenSidedDie Feb 14 '19 at 20:29
  • \$\begingroup\$ @NuclearWang See this FAQ for why your comment was removed. Thanks! \$\endgroup\$ – SevenSidedDie Feb 14 '19 at 20:30
  • \$\begingroup\$ @DanielR.Collins See above FAQ for why your comment was removed. \$\endgroup\$ – SevenSidedDie Feb 18 '19 at 20:40
  • \$\begingroup\$ @chepner See above FAQ. \$\endgroup\$ – SevenSidedDie Feb 18 '19 at 20:41
  • \$\begingroup\$ @AdmiralJota See above FAQ. \$\endgroup\$ – SevenSidedDie Feb 18 '19 at 20:41

12 Answers 12


As a DM, you aren't required to obey the strict prices set in the PHB. The prices listed are mostly just used as guides for creating characters on a budget; once you're in the adventuring world, goods cost whatever the local shops value them at, with the PHB listed prices as suggestions for "fair market" prices.

That being said, there's any number of ways to approach this. You could introduce a new currency that's worth 1/5 or 1/10 the value of a copper piece to give a single divisible currency for handling especially cheap goods.

Personally, I'd probably just rule that any shop that sells Sling Bullets doesn't sell them in packs of less than 5, for 1 copper piece for 5. That way, you don't have to introduce a new currency.

If the player is genuinely only interested in buying the single unit, I'd probably just sell 1 bullet for 1 copper piece. The scenarios where this would seriously inconvenience a player are pretty esoteric.


By haggling, probably unsuccessfully.

In the real world, I can walk into a grocery store (supermarket or locally owned) that sells eggs in cartons of a dozen, pick up a carton for $1.50, calculate that that works out to 12.5¢ per egg, and try to buy 2 eggs at checkout for 25¢, but the clerk will refuse to sell me those 2 eggs because the store does not offer the purchase of individual eggs. If I want those 2 eggs, I can buy a carton of a dozen for full price. This is because a carton of only 10 eggs is essentially unsalable for the grocery store.

In the game, the shopkeeper has prepared a lot (pouch, case, or whatever) of 20 sling bullets for 4cp total. (We know the bullets are sold as a lot because if they were intended to be sold individually they'd be priced at 5 bullets for 1cp, not 4 times as many for 4 times as much.) You may be able to calculate that the price per bullet is 0.2cp, but that doesn't mean the shopkeeper is willing to sell a partial lot. The shopkeeper has the right to offer whole lots of 20 bullets, take it or leave it, but selling fewer bullets than a full lot probably requires the shopkeeper to count them out, which is a waste of time they could be using to serve other customers who know how to follow commerce norms and buy what's actually on offer.

Even haggling is unlikely to be successful. Suppose you offered 1cp just to buy 1 bullet. Even though that's 5 times the shopkeeper's unit price, the shopkeeper would still likely decline because the remaining 19 bullets don't constitute a full lot. The next customer will likely be uninterested in purchasing that partial lot without haggling of their own unless the shopkeeper refills the lot or discounts it, which again makes the prospect barely worth the shopkeeper's time and effort.

So, let the player haggle if they want to, but the shopkeeper should behave like a real person, which probably means refusing to sell a single unit of a supply that's not being offered in single units. If you think the player can successfully haggle an agreeable total with the shopkeeper, it certainly shouldn't involve the invention of a new currency or the cutting of coins (fragments of a coin are collectively worth less than an intact coin's face value in most realistic economies), but the terms that the player and shopkeeper find agreeable depends entirely on the player's argument and shopkeeper's demeanor.

  • 3
    \$\begingroup\$ If you have an actionable suggestion for how I can improve my answer, please leave a comment. I don't see anything actionable in your comment. It looks like you just disagree with my answer. If you think my answer is unhelpful because you disagree with it, please down-vote it. If you feel passionate about helping to answer the question, please post your own answer. \$\endgroup\$ – Bloodcinder Feb 15 '19 at 15:57
  • 10
    \$\begingroup\$ <regarding a number of removed comments> How to disagree with an answer: 1. Vote. 2. That is all; there is no step 2. No really, step 2 is not “comment unconstructively”. How to help improve an answer: 1. Use a comment to constructively describe the specific change(s) that the author might consider making. \$\endgroup\$ – SevenSidedDie Feb 15 '19 at 16:15

In ancient or medieval times, coins were sometimes cut in pieces to deal with this kind of problem. So if you do want to make this possible, simply have the shopkeeper chop up the coin. Of course, this only goes to a point. I would assume a quarter is the furthest I would take this. Which in your example would up the price a little - 5 quarters for 5 bullets - which isn't unrealistic at all, bulk prices are common.

In addition, this gives you the option of filling the PCs pockets with bits and pieces of coins. Perhaps they will tire of the book keeping at some point and just agree to be a bit more hand-wavy from now on ;)

An example of the practice - a half-siliqua

  • 4
    \$\begingroup\$ For some reason, I think that your answer points to how the term "farthing" entered the English language. I am not sure if it would improve your answer to include it. your call. \$\endgroup\$ – KorvinStarmast Feb 14 '19 at 21:12
  • 1
    \$\begingroup\$ Did you know that rounded coins came to be favored over other shapes as it was harder to shave bits off a round coin (as opposed to anything with a corner) to fraudulently collect the metal? \$\endgroup\$ – JonSG Feb 15 '19 at 0:56
  • 3
    \$\begingroup\$ I think you could take it further than a quarter. "AWK! Pieces of eight, pieces of eight!" \$\endgroup\$ – David Conrad Feb 15 '19 at 18:17
  • \$\begingroup\$ This is where the slang "two bits" for a US quarter dollar comes from. One bit is an eighth of a dollar (that is, a dollar coin chopped into eighths). Thus also "pieces of eight" (and eight bits to a byte). \$\endgroup\$ – Marq Feb 19 '19 at 18:01

Imagine you are on a farmers market in real life. You go to a vegetable stand and say to the shopkeeper:

"I would like to buy one pea, please"

"You mean one pound of peas?"

"No, one single pea"

What would the shopkeeper do? Weight a single pea, realize it's not even a single cent and consider how to handle the situation? There are other customers waiting in line behind you. They don't have time for caring about such a ridiculous problem. So how would they deal with such a situation?

A friendly shopkeeper would tell you that you can just take that single pea for free. It's such a small value they won't even notice that it's missing. A less friendly shopkeeper would tell you to stop wasting their time with such ridiculous nonsense and tell you to get lost. A pragmatic shopkeeper would tell you that you need to buy at least 50g of peas because that's the minimum their scale will measure properly.

That's likely how a shopkeeper in your campaign world would react, too.

  • Tell the player they can have that one sling bullet as a free sample, but the shopkeep will want money if they buy more later
  • Tell them they need to buy them in packs of 20.

Lets look at a real world example. To do that, lets replace "Sling bullet" with "piece of paper" and "cp" with "cent". Pricing is the same, so 5 pieces of paper is one cent.

Now, imagine going to this store and buying one piece of paper. Are they going to let you pay .2 cents? Of course not! Instead, they'll probably do one of the following:

  • Charge you one cent (since anything less is impossible)

  • Make you buy 5 pieces of paper (since that's the standard price for one cent)

  • Just give it to you for free (since .2 cents is negligible)

There's really no difference of options in your world, and based on the circumstances and character of the merchant, all of these seem like viable options. As a DM, you'd have to choose at your discretion which choice your merchant makes.

However, from a database perspective, you can still enter the cost of each sling bullet at .2, and when calculating the price for N of any object, simply give ceiling(N * price). That at least gives you a fair asking price which should scale with the real value of the items (and maybe nice merchants will round down while stingy ones round up).

  • \$\begingroup\$ I actually can't enter the price as .2 without some significant work - I'm using an extension I've written in C to allow people to input prices/values in terms of actual currency - e.g. 2gp, 100cp etc. but the implementation only allows for integral values. \$\endgroup\$ – ocket8888 Feb 14 '19 at 21:42
  • \$\begingroup\$ @ocket8888 Without knowing your implementation, it's a bit tough to work out how to get around that, but if there's a C layer between the user and your database, you could make a "fractional piece" (for example's sake, lets call it an fp) or something which is 1/100th of a cp. If someone enters .2cp, you convert that to 20fp in your database, then when they ask for the price of N of those, you convert back to cp and take the ceiling in C, but it's up to you if that's worth it. You just hide the fp coin from the user; it's simply storage. \$\endgroup\$ – Lord Farquaad Feb 14 '19 at 21:46
  • 6
    \$\begingroup\$ Once I went into a store in real life, and attempted to purchase a single swedish fish from the bulk candy. They gave it to me for free. If the shop in universe sells bullets in bulk, then the same night happen to a character. \$\endgroup\$ – Vaelus Feb 14 '19 at 21:48
  • \$\begingroup\$ My implementation is here btw: github.com/ocket8888/dndDB I think a simpler way to implement it would be as a struct with one uint32_t for whole number values and a uint8_t for a decimal part. Regardless, decimals are something I want to avoid if at all possible, at least for now. Maybe I'll revisit that in the future, but at the moment I'm more concerned with populating the database with values that work - even if they aren't totally perfect. \$\endgroup\$ – ocket8888 Feb 14 '19 at 21:55
  • 2
    \$\begingroup\$ This questions starts to belong to normal stack exchange slowly, as it seems to be programming issue, rather than RPG one. I would suggest following Lord Farquaad advice with fixed point decimal. You have your conversion layer, so you can handle all magic there. \$\endgroup\$ – Artur Biesiadowski Feb 15 '19 at 10:27

If you have a player who is that penurious with his character's money, you might offer him six bullets for a copper -- don't forget to remind him that's more than 15% off!


For your DB app, you should put actual prices in the table because otherwise you have to write all kinds of handling code for items with quantities (what if a player wants to buy 24?).

If you want to represent the books perfectly, you add another column listing the amounts that are given in the books. So bullets are purchased in batches of 20. But you keep the information intact and can work with it.

You can also drop this information and simply implement a rounding rule, so players can purchase any quantity they want, but they only pay full coins (or you can add the quarter-coins idea above).

  • 2
    \$\begingroup\$ "all kinds of handling code for items with quantities (what if a player wants to buy 24?)." any serious store application I've seen handles that by restricting what the user can enter. You can't enter 24 because that's not an option. You can buy 20 or 25. Or perhaps 4 or 5 "units" (however they are described) and each is worth 5. You can also have various sizes of units - a small pack might be 5, a big could be 50. Or round in terms of 10s, if you wish - small pack of 10 bullets is 2cp. Check out Amazon or eBay for something sold in packs of 3 or 10 or whatever, if you want an example. \$\endgroup\$ – VLAZ Feb 15 '19 at 11:13
  • \$\begingroup\$ I think you misunderstand though. I'm not making any kind of 'app' - I'm just making a database that 'apps' could be built upon. So sure, maybe a store would work like that, but suppose a player buys 20 sling bullets and fires one, then later asks some 'app' built on top of my db how much his inventory is worth in total? He's right, a sensible database would be capable of providing the information to answer that, without special handling code required after data retrieval. \$\endgroup\$ – ocket8888 Feb 15 '19 at 15:40
  • 2
    \$\begingroup\$ FWIW, the real world analogue to this is electronics catalogues; these resistors have a unit price of "£0.00097" digikey.co.uk/product-detail/en/stackpole-electronics-inc/… (but a minimum order quantity of a tape of 10,000) \$\endgroup\$ – pjc50 Feb 15 '19 at 16:05

When you subdivide standard lots, the price goes up

Take my local pizzeria. Like many pizzerias in the US, their pricing is structured around you buying two pizzas. So

  • Two large pizzas are $22
  • One large pizza is 18
  • One slice (1/8 of a large) is 3.50

Per-slice prices are 3.50, 2.25 or 1.37... Depending on volume.

Consider soft drinks, assuming 16 22 32 and 44 ounce sizes. The local movie theater prices them 4.50 4.75 5.00 5.25. The convenience store prices 1.19 1.29 1.39 1.49. It's not proportional, not nearly, because the store lease is the same either way, as is the clerk's time.

So you are incorrect to subdivide prices for sling bullets. 4cp for 20 mathematically means 1cp per 5, but that certainly won't correspond to retail. More likely:

  • 20 for 4cp
  • 4 for 2cp
  • 1 for 1cp

Needless to say, this puts the kibosh on the parsimonious fellow aiming to buy his bullets one at a time. Now, thriftiness kicks in, and he can plainly see the value is in buying by the 20.


The exchange of a similar valued good

Many peasants may readily trade supplies that are too cheap to be concerned with their gold value. Instead, they may simply trade similar cheap items or menial jobs, so long as it doesn't seem outrageous.

Perhaps the merchant needs a bundle of sticks, for building a fire; or a collection of flower petals for their medicine.

If you're already headed in the direction maybe they'll ask you to send a message since it's not out of your way in exchange.

  • 1
    \$\begingroup\$ Welcome to RPG.SE! Take the tour if you haven't already, and check out the help center for more guidance. \$\endgroup\$ – V2Blast Feb 18 '19 at 2:37

Minimum purchase

Require they spend at least 1cp and offer some other cheap item in addition to the bullet. If there is nothing suitable, get them to buy something more expensive and offer to throw the bullet in for free.

Let's be real

What are these bullets made of? If they are anything more valuable than stone (e.g. lead) then they will have more intrinsic value than the copper itself. Tell them to use the copper piece as a bullet.


For purposes of the application, I agree with listing with the assumed quantity in the book. And a "per each" value, as well - at least for informational purposes.

For play purposes, use varied coin from "other realms" along with cutting coins. The RoleMaster system uses Tin pieces and Bronze pieces below Copper pieces (1cp = 10tp = 100bp)*. But you could give change in a variety of small coins, perhaps by weight and composition.

This can allow you to provide clues/hooks to adventures. (Suspicious merchant: "Where did you get this coin?") It can also allow you to burden a "particularly difficult player" with a bunch of coinage that people are willing to give him in change but none will accept (except maybe the banker who will assess it all) for payment.**

(* The cost of items differs in that system, as well, such that you actually use the Tin and Bronze pieces. IIRC, 1cp is one day's wages for a day laborer there, in a medieval setting.)

(** This is based in RL. I've worked in places where we would regularly get foreign coins in the snack bar and such. Sometimes it would be because it looked or felt enough like a US quarter or nickel or dime that it got dropped in the kitty as one by mistake. Retailers put up with it, too, and some would actually put out a box of foreign coinage and you could exchange a handful for US money.)

  • \$\begingroup\$ Welcome to RPG.SE! Take the tour if you haven't already, and check out the help center for more guidance. \$\endgroup\$ – V2Blast Feb 18 '19 at 2:36

Expanding on Lord Farquaad's comment, this is the solution I used for the database of creature stats, in particular, carrying capacities. Very small creatures have maximum loads that are not an integer number of pounds, so they are recorded in ounces. Every load is an integer number of ounces.

I agree with you that it's nice to avoid floating-point numbers if possible. For example, suppose that you can buy 20 of an item for 3gp. Then one is worth 20/3 gp, or about 6.66666667gp...but rendered in binary, it's 110.1010101010101010101010...

It's annoying to deal with. Unfortunately, I don't think having a separate integer for a decimal part will make it any less annoying to deal with.

The solution I used was, obviously, to record the number in a different, smaller unit --- ounces instead of pounds. That's literally what I called the field in the database, max_load_ounces. You constantly have to be converting between units anyway, especially if we're talking about coins.

Unfortunately, in the case of copper pieces rather than pounds, there isn't a natural smaller unit that conveniently turns everything into integers. (Well, the Dark Sun setting has "bits" like the farthings/fourthings KorvinStarmast mentioned, but that would probably just get more confusing and annoying to deal with, since Dark Sun has ceramic pieces in place of copper pieces, in the sense that a tenth of a silver pieces is a ceramic piece, except it sort of has ceramic pieces in place of gold pieces, it's complicated.)

Since there isn't a convenient smaller unit, I think you're fully justified in just making up one for your own convenience. If you know in advance every single one of the objects you're going to include in the database, then all you have to do is take the common denominator of all the fractions --- the least common multiple of all the denominators. But if (as I assume) you don't know everything in advance and you want a unit that will be pretty safe, you probably want one-sixtieth. Why one-sixtieth? For the same reason the ancient Mesopotamians used it. Because 60 = 2*2*3*5. 1/4 becomes 15/60. 1/3 becomes 20/60. 1/5 becomes 12/60. Sixtieths give you pretty broad coverage for the most common fractions. Sixtieths will probably work for everything you'll run into.

I was about to say you could just call the field market_price_60th_copper_pieces, but looking at your repo, you decided to get fancy and make "gp" a proper type with its own internal translation. https://github.com/ocket8888/dndDB/blob/master/gp.c already does automatic division every time a value is output --- you internally store the value in copper pieces, and translate to gold pieces on-the-fly by dividing by 100. You could just as easily store the value internally as sixtieths of copper pieces. (Or, if https://github.com/ocket8888/dndDB/blob/master/items.sql already has all the items you want and you know you won't run into any more unexpected fractions, you can take the actual common denominator instead of hedging and making the common denominator 60 to be safe.)

In any case, the good news is that if you do later run into an unplanned-for fraction --- like if for some bizarre reason the market price of something is 1/7 --- it's not too hard to translate the existing database to use a smaller unit: just multiply every price by a new prime number (in this case 7). If you have hardcoded INSERT commands as in https://github.com/ocket8888/dndDB/blob/master/items.sql , just run a SELECT for the multiples and use the output mode that spits out INSERT commands --- in SQLite this is .mode insert, I don't know how to do it in Postgres but I assume Postgres must have something analogous.

For the sake of completeness, it's worth noting that the worth of D&D coins have no seigniorage --- a gold coin is a fiftieth of a pound, and a pound of gold is worth 50gp. The point of minting is purely to guarantee the purity of the metal (and its standard weight) with the reputation of the minting kingdom. The fancy design is a nice bonus that makes it nigh-impossible to shave off little bits of gold from the coin without people noticing. But at the end of the day the value of a coin is its weight of precious metal, so you could use any unit of weight as a unit of value. I don't recommend that, because units of weight are bedlam. We'd have to start talking about Troy pounds of gold versus avoirdupois pounds of gold, and you probably don't want to go down that rabbit hole.

  • \$\begingroup\$ Welcome to RPG.SE! Take the tour if you haven't already, and check out the help center for more guidance. \$\endgroup\$ – V2Blast Feb 18 '19 at 2:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.