Greg, generally the metadata structure is like faux structure syntax, so you want to send something like:
<cfset var options = {"metadata[order_id]": 6735} />
So, if the metadata option you want to set is order_id, you actually create a structure key with the value "metadata[order_id]" and stripe unfurls that into a key named order_id instead an object/structure called metadata. In short, they use a PHP-like syntax for flattening out arrays and structures into key-value pairs for use in HTTP FORM POST where you don't have JSON/XML structure available.
So, put in another CF syntax, it looks like:
```
<cfset var options = structNew() />
<cfset structInsert(options, "metadata[order_id]", 6735, true) />
....
<cfset response = gw.purchase(money = money, account = account, options = options) />
```
Hope that makes sense,
Brian