diff --git a/api/db/order.go b/api/db/order.go
index e00e4b8cb70deb99fe8dd4d099399f1b0033dd79..72936c00c646f7169624c1adafe17fdcf8ba971d 100644
--- a/api/db/order.go
+++ b/api/db/order.go
@@ -173,6 +173,13 @@ func (d *DB) updateOrderPurchase(memberNum int, transaction *Transaction, total
 		if err != nil {
 			return err
 		}
+
+		for _, p := range transaction.OrderPurchase {
+			err = tx.Save(&p).Error
+			if err != nil {
+				return err
+			}
+		}
 		return tx.Save(&transaction).Error
 	})
 }
diff --git a/api/order_test.go b/api/order_test.go
index f8ceb39652764d88ad13da67c568e64f860a61d9..53da7de5f06fd0887dc863029116b055eea46fd7 100644
--- a/api/order_test.go
+++ b/api/order_test.go
@@ -401,6 +401,9 @@ func TestUpdateOrderPurchase(t *testing.T) {
 	if transactions[0].Total != -total {
 		t.Fatal("Wrong total", transactions[0].Total)
 	}
+	if transactions[0].OrderPurchase[0].Amount != 2 {
+		t.Fatal("Wrong amount", transactions[0].OrderPurchase)
+	}
 
 	resp = tapi.do("GET", "/order/active", nil, &orders)
 	if resp.StatusCode != http.StatusOK {