         self.fees = try node.get("fee_details")
         self.net = try node.get("net")
         self.source = try node.get("source")
-        self.status = try StripeStatus(rawValue: node.get("status")) ?? StripeStatus.failed
-        self.type = try ActionType(rawValue: node.get("type")) ?? ActionType.none
+        if let status = node["status"]?.string {
+            self.status =  StripeStatus(rawValue: status)
+        }
+        if let type = node["type"]?.string {
+            self.type = ActionType(rawValue: type)
+        }
     }
     
     public func makeNode(in context: Context?) throws -> Node {
-        return try Node(node: [
+        let object: [String : Any?] = [
             "id": self.id,
             "object": self.object,
             "amount": self.amount,


public final class BalanceTransactionItem: StripeModelProtocol {
    
    public let id: String
    public let object: String
    public let amount: Int
    public let availableOn: Date
    public let created: Date
    public let description: String
    public let fees: [Fee]
    public let net: Int
    public let source: String
    public let status: StripeStatus
    public let type: ActionType
    
    public init(node: Node) throws {
        self.id = try node.get("id")

            "fee_details": self.fees,
            "net": self.net,
            "source": self.source,
            "status": self.status?.rawValue,
            "type": self.type?.rawValue
        ]
        return try Node(node: object)
    }
}
